TWI437441B - 多庫記憶體裝置之儲存位址重映射之方法及系統 - Google Patents

多庫記憶體裝置之儲存位址重映射之方法及系統 Download PDF

Info

Publication number
TWI437441B
TWI437441B TW098113544A TW98113544A TWI437441B TW I437441 B TWI437441 B TW I437441B TW 098113544 A TW098113544 A TW 098113544A TW 98113544 A TW98113544 A TW 98113544A TW I437441 B TWI437441 B TW I437441B
Authority
TW
Taiwan
Prior art keywords
block
address
lba
page
host
Prior art date
Application number
TW098113544A
Other languages
English (en)
Other versions
TW200951722A (en
Inventor
Alan W Sinclair
Original Assignee
Sandisk Technologies Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Sandisk Technologies Inc filed Critical Sandisk Technologies Inc
Publication of TW200951722A publication Critical patent/TW200951722A/zh
Application granted granted Critical
Publication of TWI437441B publication Critical patent/TWI437441B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7201Logical to physical mapping or translation of blocks or pages
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7202Allocation control and policies
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7208Multiple device management, e.g. distributing data over multiple flash devices

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Memory System (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Description

多庫記憶體裝置之儲存位址重映射之方法及系統
本申請案大體上係關於作業系統與記憶體裝置之間的資料通信。更特定言之,本申請案係關於記憶體系統(諸如,多庫可重新程式化非揮發性半導體快閃記憶體及該記憶體所連接至或可連接至之主機裝置)之操作。
當將資料寫入至習知快閃資料記憶體系統時,主機通常對記憶體系統之一連續虛擬位址空間內的資料之區段、叢集或其他單位指派唯一邏輯位址。主機將資料寫入至該記憶體系統之邏輯位址空間內之位址且自該記憶體系統之邏輯位址空間內之位址讀取資料。該記憶體系統接著通常在邏輯位址空間與記憶體之實體區塊或元區塊(metablock)之間映射資料,其中資料係儲存於對應於該邏輯位址空間中之若干範圍的固定邏輯群組中。大體上,每一固定邏輯群組儲存於該記憶體系統之獨立實體區塊中。記憶體系統明瞭邏輯位址空間如何映射至實體記憶體中,但主機並未察覺到此。主機明瞭其資料檔案在邏輯位址空間內之位址,但記憶體系統在不知曉此映射之情況下操作。
以此方式操作之記憶體系統的缺點為分裂。舉例而言,寫入至根據NTFS檔案系統操作之個人電腦(PC)中之固態磁碟(SSD)驅動器的資料通常藉由該驅動器之邏輯位址空間內之廣泛分布之位置處的短相連位址段的樣式來表徵。即使由主機使用之檔案系統為連續檔案之新資料分配順序位址,但所刪除檔案之任意樣式造成可用空閒記憶體空間的分裂,使得其無法成區塊單位來分配給新檔案資料。
快閃記憶體管理系統傾向於藉由將相連邏輯位址之區塊映射至實體位址之區塊來操作。當獨立地更新來自主機的一短位址段時,含有該段之位址的全邏輯區塊必須保持其至單一區塊的長期映射。此使在邏輯至實體記憶體管理系統內之廢料收集操作成為必要,其中邏輯區塊內之未經主機更新之所有資料經重新定位以使其與經更新資料合併。在多庫快閃記憶體系統(其中資料可儲存於組成多庫系統之離散快閃記憶體庫中之區塊中)中,可能放大合併過程。此為重大附加項,其可嚴重限制寫入速度及記憶體壽命。
為了解決對多庫記憶體系統中改良之記憶體管理的需要,本文中揭示方法。根據一第一實施例,揭示一種在一主機系統與一可重新程式化非揮發性大量儲存系統之間傳送資料的方法。該方法包括接收與由該主機系統指派之主機邏輯區塊位址(LBA)位址相關聯的資料及分配一相連儲存LBA位址之巨型區塊以供對與該等主機LBA位址相關聯之資料定址,該相連儲存LBA位址之巨型區塊包含該大量儲存系統中之複數個記憶體單元庫中之每一者中的至少一記憶體單元庫且僅對在分配後未經寫入之容量定址。將用於所接收資料之主機LBA位址中之每一者重映射至相連儲存LBA位址之巨型區塊,其中每一儲存LBA位址係按接收到所接收資料之次序而無關於主機LBA位址來以相連方式順序地指派給所接收資料。又,獨立於該複數個庫中之一第二者中之一區塊來清除該複數個庫中之一第一者中之一區塊,其中清除該第一庫中之區塊包括將用於來自該第一庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給一第一重定位區塊中之相連儲存LBA位址,且清除該第二庫中之區塊包括將用於來自該第二庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給一第二重定位區塊中之相連儲存LBA位址。
根據另一實施例,提供一種在一主機系統與一可重新程式化非揮發性大量儲存系統之間傳送資料的方法,其中該大量儲存系統具有複數個記憶體單元庫且該複數個庫中之每一者配置成可一起抹除之記憶體單元區塊。該方法包括將所接收主機資料之主機邏輯區塊位址(LBA)位址重映射至一儲存LBA位址之巨型區塊,該儲存LBA位址之巨型區塊具有該複數個記憶體單元庫中之每一者中的至少一記憶體單元區塊。將用於所接收資料之主機LBA位址按接收到資料之次序而無關於該主機LBA位址來按該巨型區塊內之巨型頁次序以一相連方式來指派給儲存LBA位址,其中每一巨型頁包括用於該巨型區塊之該等區塊中之每一者的一元頁。該方法進一步包括在該等庫中之每一者中獨立地執行清除操作。清除操作涉及將來自一特定庫中之一區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給該特定庫內之一重定位區塊中的相連儲存LBA位址。
在審閱以下圖式、實施方式及申請專利範圍後,本發明之其他特徵及優點將變得顯而易見。
適合用於實施本發明之態樣的快閃記憶體系統展示於圖1至圖7中。圖1之主機系統100將資料儲存至記憶體系統102中並自記憶體系統102擷取資料。該記憶體系統可為諸如以安裝於個人電腦中之固態磁碟(SSD)驅動器的形式嵌入於主機內的快閃記憶體。或者,記憶體系統102可呈卡之形式,其經由如圖1所說明之機械連接器及電連接器之配合部分103及104而可移除地連接至主機。經組態以用作內部或嵌入式SSD驅動器的快閃記憶體可看起來類似於圖1之示意圖,主要不同之處在於記憶體系統102在主機內部的位置。SSD驅動器可呈為用於旋轉磁碟驅動器之簡易替換元件(drop-in replacement)的離散模組的形式。
市售SSD驅動器之一實例為由SanDisk公司生產之32十億位元組SSD。市售可移除快閃記憶體卡的實例包括CompactFlash(CF)卡、MultiMediaCard(MMC)、安全數位(SD)卡、miniSD卡、記憶棒、SmartMedia卡及TransFlash卡。儘管此等卡中之每一者根據其標準化規格而具有唯一機械及/或電介面,但每一者中所包括之快閃記憶體系統為類似的。此等卡皆可自本申請案之受讓人SanDisk公司獲得。SanDisk亦提供在其Cruzer商標下之一系列快閃記憶體驅動器,該等快閃記憶體驅動器為在小封裝中之手持式記憶體系統,其具有一用於藉由插入於主機之USB插座中而與主機連接的通用串列匯流排(USB)插頭。此等記憶體卡及快閃記憶體驅動器中之每一者包括與主機介接且控制該等記憶卡及快閃記憶體驅動器內之快閃記憶體之操作的控制器。
可使用SSD、記憶體卡及快閃記憶體驅動器之主機系統有許多且為各種各樣的。其包括個人電腦(PC)(諸如,桌上型電腦或膝上型電腦及其他可攜式電腦)、蜂巢式電話、個人數位助理(PDA)、數位靜態相機、數位電影相機及可攜式音訊播放機。對於可攜式記憶體卡應用,主機可包括用於一或多種類型之記憶體卡或快閃記憶體驅動器的內建式插座,或主機可需要記憶體卡插入其中的配接器。記憶體系統通常含有其自身的記憶體控制器及驅動器,但亦存在一些僅記憶體系統,其改為由記憶體所連接至之主機所執行的軟體來控制。在含有控制器之一些記憶體系統(尤其是嵌入於主機內之記憶體系統)中,記憶體、控制器及驅動器經常形成於一單一積體電路晶片上。
圖1之主機系統100可視為具有兩個主要部分(在涉及記憶體102之範圍內),其由電路與軟體之組合構成。其為一應用部分105及一與記憶體102介接之驅動器部分106。在PC中,舉例而言,應用部分105可包括執行文字處理、圖形、控制或其他風行應用程式軟體的處理器109以及用於管理主機100上之資料的檔案系統110。在相機、蜂巢式電話或主要專用於執行單一組之功能的其他主機系統中,應用部分105包括操作相機以獲得並儲存圖片、操作蜂巢式電話以進行並接收呼叫的軟體及其類似者。
圖1之記憶體系統102可包括非揮發性記憶體(諸如,多庫快閃記憶體107)及一控制器電路108,控制器電路108與記憶體系統102所連接至之主機100介接以來回地傳遞資料且控制記憶體107。在資料程式化及讀取期間,控制器108可在由主機100所使用之資料的邏輯位址與多庫快閃記憶體107之實體位址之間轉換。多庫快閃記憶體107可包括任何數目之記憶體庫,且在本文中以說明之方式僅展示四個記憶體庫107A至107D。
參看圖2,系統控制器108可建構於單一積體電流晶片(諸如,特殊應用積體電路(ASIC))上。控制器108之處理器206可組態為多線緒處理器,其能夠經由具有用於多庫快閃記憶體107中之各別庫107A至107D中之每一者的I/O埠的記憶體介面204來獨立地與各別記憶體庫107A至107D中之每一者通信。控制器108可包括內部時鐘218。處理器206經由內部資料匯流排202來與錯誤校正碼(ECC)模組214、RAM緩衝器212、主機介面216及開機碼ROM210通信。
參看圖3中之單一庫107A說明,多庫快閃記憶體107中之每一庫可由一或多個積體電路晶片組成,其中每一晶片可含有組織成多個子陣列或平面的記憶體單元之陣列。為簡單起見,說明兩個此種平面310及312,但可改為使用更多,諸如四個或八個此種平面。或者,可不將記憶體庫之記憶體單元陣列劃分成平面。然而,當如此劃分時,每一平面具有其自身之行控制電路314及316,該等行控制電路可彼此獨立地操作。電路314及316自系統匯流排302之位址部分306接收其各別記憶體單元陣列的位址,且對其解碼以定址各別位元線318及320中之特定一或多者。回應於在位址匯流排19上所接收之位址而經由列控制電路324來定址字線322。如p井電壓控制電路330及332,源電壓控制電路326及328亦與各別平面連接。若庫107A呈具有記憶體單元之單一陣列的記憶體晶片之形式,且若兩個或兩個以上此種晶片存在於系統中,則每一晶片之陣列可類似於上文所描述之多平面晶片內之平面或子陣列來操作。每一庫107A至107D經組態以允許控制器108以同時或非同步方式來獨立地控制功能。舉例而言,在第二庫正讀取資料時,可指示第一庫寫入資料。
經由與系統匯流排302之資料部分304連接的各別資料輸入/輸出電路334及336而將資料傳送至平面310及312中及傳送出平面310及312外。電路334及336提供經由線338及340而將資料程式化至記憶體單元中及自其各別平面之記憶體單元讀取資料,線338及340經由各別行控制電路314及316而連接至諸平面。
儘管控制器108中之處理器206控制每一庫107A至107D中之記憶體晶片的操作以程式化資料、讀取資料、抹除且注意各種內務處理事件,但每一記憶體晶片亦含有一些控制電路,其執行來自控制器108之命令以執行此等功能。介面電路342連接至系統匯流排302之控制及狀態部分308。將來自控制器108之命令提供至狀態機344,狀態機344接著提供對其他電路之特定控制以便執行此等命令。控制線346至354將狀態機344與如圖3中所示之此等其他電路連接。經由線356而將來自狀態機344之狀態資訊傳達至介面342以供經由匯流排部分308而傳輸至控制器108。
在下文論述記憶體單元陣列310及312之一反及(NAND)架構,但可改為使用諸如反或(NOR)的其他架構。可藉由參考美國專利第5,570,315號、第5,774,397號、第6,046,935號、第6,373,746號、第6,456,528號、第6,522,580號、第6,771,536號及第6,781,877號及美國專利申請公開案第2003/0147278號來獲得作為記憶體系統之部分的NAND快閃記憶體及其操作的實例。藉由圖4之電路圖來說明一實例NAND陣列,其為圖3之記憶體系統之記憶體單元陣列310的一部分。提供大量全域位元線,為了解釋之簡單起見,圖4中僅展示四個此種線402至408。許多串聯連接之記憶體單元串410至424連接於此等位元線中之一者與一參考電位之間。使用記憶體單元串414作為代表,複數個電荷儲存記憶體單元426至432在串之任一末端處與選擇電晶體434及436串聯連接。當使一串之選擇電晶體導電時,該串連接於其位元線與參考電位之間。接著同時程式化或讀取彼串內之一記憶體單元。
圖4之字線438至444個別地延伸越過許多記憶體單元串中之每一者中的一記憶體單元之電荷儲存元件,且閘極446及450控制串之每一末端處之選擇電晶體的狀態。使得共用共同字線及控制閘極線438至450的記憶體單元串形成一起抹除之記憶體單元區塊452。此單元區塊含有最小數目之可在實體上同時抹除的單元。每次程式化一列記憶體單元,即,沿字線438至444中之一者的記憶體單元。通常,按規定次序來程式化NAND陣列之列,在此種情況下,以沿最接近於串之連接至接地或另一共同電位的末端之字線444的列開始。接下來程式化沿字線442之記憶體單元列,依此類推,貫穿區塊452。最後程式化沿字線438之列。
第二區塊454為類似的,其記憶體單元串與第一區塊452中之串連接至相同全域位元線,但具有一組不同之字線及控制閘極線。藉由列控制電路324來將字線及控制閘極線驅動至其適當操作電壓。若在系統中存在一個以上之平面或子陣列(諸如,圖3之平面1及2),則一記憶體架構使用在其之間延伸的共同字線。或者,可存在共用共同字線之兩個以上之平面或子陣列。在其他記憶體架構中,獨立地驅動個別平面或子陣列的字線。
如上文所參考之NAND專利及已公開之申請案中的若干者中所描述,可操作記憶體系統以將電荷之兩個以上可偵測位準儲存於每一電荷儲存元件或區中,藉此將一個以上之資料位元儲存於每一者中。如美國專利申請公開案第2003/0109093號中所描述,記憶體單元之電荷儲存元件最通常為導電浮閘,但可替代地為非導電介電性電荷捕獲材料。
圖5在概念上說明在以下之進一步描述中用作實例的多庫快閃記憶體107(圖1)之一庫107A的組織。記憶體單元之四個平面或子陣列502至508可處於一單一整合式記憶體單元晶片上、兩個晶片上(每一晶片上有該等平面中之兩者)或四個獨立晶片上。特定配置對於下文之論述並不重要。當然,系統中可存在其他數目之平面(諸如,1、2、8、16或16個以上)。可藉由矩形來將平面個別地劃分成圖5中所示的記憶體單元之區塊(諸如,位於各別平面502至508中之區塊510、512、514及516)。每一平面中可存在數十或數百的區塊。
如上所提及,記憶體單元之區塊為抹除之單位,其為在實體上可一起抹除的最小數目之記憶體單元。然而,為了增加之並行性,以較大元區塊單位來操作區塊。將來自每一平面之一區塊在邏輯上鏈接在一起以形成元區塊。展示四個區塊510至516形成一元區塊518。通常一起抹除一元區塊內之所有單元。如由區塊522至528所構成之第二元區塊520中所展示,用以形成元區塊之區塊不必限制於其各別平面內之相同相對位置。儘管通常較佳將元區塊延伸越過所有的平面,但為了高系統效能,可用在不同平面中動態地形成一個、兩個或三個區塊中之任一者或全部的元區塊的能力來操作記憶體系統。此允許元區塊之大小與可用於在一程式化操作中儲存之資料量更緊密地匹配。
如圖6中所說明,為了達成操作目的而又將個別區塊劃分成記憶體單元之頁。將區塊510至516中之每一者的記憶體單元(例如)各自劃分成八個頁P0至P7。或者,每一區塊內可存在記憶體單元之16個、32個或32個以上之頁。頁為一區塊內之資料程式化及讀取的單位,其含有同時經程式化或讀取的最小資料量。在圖3之NAND架構中,頁係由一區塊內沿一字線之記憶體單元形成。然而,為了增大記憶體系統操作並行性,可將兩個或兩個以上區塊內之此等頁邏輯上鏈接為元頁。圖6中說明一元頁602,其係由來自四個區塊510至516中之每一者的一實體頁形成。元頁602(例如)包括四個區塊中之每一者中的頁P2,但一元頁之頁不需要必須在該等區塊中之每一者內具有相同相對位置。在一庫內,元頁為最大程式化單位。
如上所述,圖5至圖6說明可存在於多庫記憶體107之一記憶體庫107A中的記憶體單元配置的一實施例。在一實施例中,無關於每一庫107A至107D之個別記憶體單元組態,記憶體系統102較佳經組態以具有巨型區塊之最大程式化單位,其中巨型區塊橫跨該多庫記憶體中之每一庫的至少一區塊(若記憶體庫配置成單一平面組態)或多庫快閃記憶體107中之每一庫的元區塊(若記憶體庫配置成多平面組態)。在以下論述中,為描述清楚起見,假定每一庫配置成元區塊行。參看圖7,所示之每一行表示元區塊702(諸如,上述之元區塊518、520)之庫107A至107D。巨型區塊704在每一庫107A至107D中含有至少一元區塊702,每一元區塊702劃分成複數個元頁706。雖然圖7中所識別之巨型區塊704展示在每一庫107A至107D中處於相同相對實體位置的元區塊702,但用以形成巨型區塊704之元區塊702無需限制於相同相對實體位置。又,如本文所提及,巨型頁708指代來自巨型區塊704中之元區塊702中之每一者的元頁706。記憶體庫107A至107D可各自以類似方式來配置或具有彼此不同之記憶體單元配置。舉例而言,該等庫可使用不同類型之記憶體技術,諸如具有二進位(單層單元或SLC)快閃記憶體之第一庫及多層單元(MLC)快閃記憶體之另一庫。在又一實施例中,第一庫可製成可重寫非揮發性快閃記憶體,且其餘庫可使用標準快閃記憶體(例如,二進位或多層單元快閃記憶體),使得可在無需如在規則庫區塊中為必需需要的移動資料的情況下來更新巨型頁的屬性。
現參看圖8,主機100與記憶體系統102之間的共同邏輯介面利用一連續邏輯位址空間800,該連續邏輯位址空間800足夠大以為可儲存於記憶體系統102中之所有資料提供位址。參看上述之主機100及記憶體系統102,通常以主機邏輯區塊位址(LBA)格式來接收意欲儲存於多庫快閃記憶體107中之資料。此主機位址空間800通常劃分為資料叢集之增量。在一給定主機系統中,每一叢集可經設計以含有許多資料區段,大約在4與64個區段之間為典型的。一標準區段含有512個位元組之資料。參看圖8,展示在NTFS檔案系統之邏輯位址空間800中的經分配叢集(有陰影)802及空閒叢集(無陰影)804之典型樣式。
用於對圖8中所見之邏輯位址空間800的分裂定址的組織結構展示於圖9中。本文所描述的用於儲存位址重映射的系統及方法按叢集900之元區塊(在下文之論述中通常稱作「區塊」)來分配LBA位址。在以下描述中,完全填充有有效資料之區塊900被稱作紅區塊902,而不具有有效資料且因此僅含有未經寫入容量的區塊被稱作白區塊904。若記憶體系統102使用「使用後抹除」類型之程序,則白區塊904中之未經寫入容量可處於經抹除狀態。或者,若記憶體系統102使用「使用前抹除」類型之程序,則白區塊904中之未經寫入容量可由在分配後將需要抹除的陳舊資料組成。已經充分程式化且具有有效資料叢集802及無效(亦稱作陳舊)資料叢集804的區塊稱作粉紅區塊906。如本文中更詳細地論述,巨型區塊704(其由每一庫107A至107D中之至少一白區塊904構成)經分配以自主機接收資料且被稱作寫入巨型區塊。
下述之多庫寫入演算法及清除技術的實施例可取決於主機100及記憶體系統102之配置而改變。圖10至圖12說明主機與記憶體系統之間的重映射功能性的功能性之若干配置。圖10至圖11之配置表示儲存位址重映射(STAR)功能性完全含於記憶體系統1004、1102內的實施例。在此等前兩個配置中,記憶體系統1004、1102可與舊版主機1002一起操作,而無需對主機1002進行修改。相反,圖12所說明之配置為儲存位址重映射功能性完全含於主機1202內的實施例。在此後者實施例中,主機1202可與無需修改之舊版儲存裝置1204一起操作。除了STAR寫入功能性之圖10至圖12之每一配置的變化實施外,下文更詳細描述之清除操作將改變。用於單一庫記憶體中之寫入及清除之快閃記憶體區塊管理方案的實例陳述於2008年2月22日申請的同在申請中之美國申請案第12/036,014號中,該申請案之全文以引用方式併入本文中。
在圖10之實例中,儲存位址映射演算法可整合於儲存裝置1004之每一庫之記憶體管理1006中,其中將來自主機1002之LBA位址直接映射至多庫快閃記憶體中之實體區塊,使得實體記憶體之第一巨型區塊在前進至下一個巨型區塊之前完全以資料填充。或者,在圖11中,儲存位址重映射方案可實施於儲存裝置1102上之應用程式中,但與裝置1102之每一庫的記憶體管理器1104分開。在圖11之實施例中,將利用按照完整巨型區塊寫入來自主機之資料的技術將來自主機1002之每一邏輯位址重映射至第二邏輯位址(本文中稱作儲存邏輯區塊位址(儲存LBA),本文中亦稱作裝置邏輯區塊位址(DLBA)),且接著記憶體管理器1104將在DLBA配置下組織的資料轉譯至每一各別庫之實體記憶體的區塊。DLBA位址空間以均一大小(等於實體元區塊之大小)之DLBA區塊構成。
圖12之實施例將儲存位址重映射之功能性自儲存裝置1204移至主機1202上之應用程式。在此實施例中,將LBA位址映射至DLBA位址之功能將類似於圖11之實施例,主要不同之處在於轉譯將發生於主機1202上而不發生於記憶體裝置1204中。主機1202將接著將主機處所產生之DLBA位址資訊連同與DLBA位址相關聯之資料傳輸至記憶體裝置1204。對於圖12之實施例,為了按邏輯位址區塊來劃分及管理邏輯位址空間800,主機與記憶體系統可能需要交換關於快閃記憶體中實體區塊之區塊大小的資訊。邏輯區塊之大小較佳與實體區塊之大小相同,且在記憶體系統與主機連接時,可傳達此資訊。此通信可經設置以在加電或記憶體系統連接至主機後作為交握操作而發生。在一實施例中,主機可將「識別驅動器」詢問發送至記憶體系統以請求區塊大小及對準資訊,其中區塊大小為特定記憶體系統之個別實體區塊的大小,且對準資訊為對於可能已佔據每一實體區塊之一些的系統資料而言需要加以考量的自實體區塊之開頭的偏移(若存在)。
「識別驅動器」命令可實施為舊版LBA介面命令組中之保留碼。可經由標準通信介面中之保留或未經分配之命令碼來將命令自主機傳輸至記憶體系統。合適介面之實例包括ATA介面(對於固態磁碟)或ATA相關介面(例如,CF或SD記憶體卡中所使用之介面)。若記憶體系統未能提供區塊大小及偏移資訊,則主機可採用一預設區塊大小及偏移。若記憶體系統僅用區塊大小資訊但不用偏移資訊來回應於「識別驅動器」命令,則主機可採用一預設偏移。該預設區塊大小可為許多標準區塊大小中之任一者,且較佳設定為大於可能之實際實體區塊大小。該預設偏移可設定為零偏移,使得假定每一實體區塊可始於實體區塊中之第一位址而自主機接收資料。若主機耦接至預定內部驅動器(諸如,SSD),則可能不需要執行判定區塊大小及偏移之此步驟,因為可能已知曉且預先程式化記憶體裝置之容量。然而,因為甚至可替換內部驅動器,所以主機可經組態以始終驗證記憶體裝置容量。對於可移除式記憶體系統,主機可始終經由「識別驅動器」命令或類似機制來探詢區塊大小及偏移。
多庫巨型區塊寫入演算法
根據一實施例,如圖13所說明,一種管理多庫記憶體中之主機資料寫入操作的方法包括以在上文關於圖8所描述之主機LBA格式來自主機檔案系統10接收主機資料(1302處)。在接收到主機資料時,藉由將主機資料按接收到其之次序而無關於主機LBA次序來寫入至當前開放之寫入巨型區塊中的當前開放之巨型頁來將資料重映射至儲存位址(1304處)。如下文中更詳細地論述,在將主機資料寫入至多庫記憶體107中之巨型區塊時,更新儲存位址表(SAT),以追蹤原始主機LBA位址至多庫記憶體107中之當前位址的映射(1306處)。每一巨型頁708在寫入至下一巨型頁之前被充分寫入,且新巨型區塊704較佳僅經分配以僅在當前寫入巨型區塊被充分寫入後才接收額外主機資料(1308、1310及1312處)。若下一巨型頁708在當前巨型區塊704中為可用的,則將寫入指標設定至彼下一巨型頁708之開頭(1314處),且主機資料繼續逐庫地按被接收之次序來重映射至巨型頁之每一元頁中的相連儲存位址。當以巨型區塊級別按巨型頁次序對多庫記憶體系統107整個執行主機資料寫入演算法時,將清除演算法獨立地應用於記憶體系統102中之庫107A至107D中之每一者(1316處)。清除演算法(如下文更詳細地解釋)在每一庫內產生新的白區塊,該等新白區塊用於新巨型區塊中以用於主機資料寫入或其他儲存需要。雖然在上文論述單一寫入巨型區塊,但若適當地分割庫107A至107D,則可實施多個寫入巨型區塊。
根據儲存位址重映射演算法之一實施例的每一庫107A至107D內之資料流及區塊狀態改變的樣式展示於圖14中。在當前寫入區塊中之最末頁填充有有效資料時,當前寫入區塊變成紅區塊(在步驟1404處),且分配來自一白區塊清單之新寫入區塊(步驟1404處)使之為下一巨型區塊704之部分。應注意,若在充分程式化一當前寫入區塊之前,該當前寫入區塊內之一些頁變成陳舊的,則該當前寫入區塊在被完全程式化時亦可直接轉變為粉紅區塊。為清楚起見,未展示此轉變;然而,其可藉由自寫入區塊至粉紅區塊之箭頭表示。
再次參考圖14中之資料流的特定實例,當因對LBA段之刪除而使紅區塊內之一或多個頁稍後為陳舊的,則紅區塊變成粉紅區塊(步驟1406處)。當儲存位址重映射演算法偵測到在庫中需要更多白區塊時,該演算法在該庫內獨立於可在另一庫中起作用的任何其他清除演算法來起始一清除操作,以自粉紅區塊移動有效資料,使得粉紅區塊變成白區塊(步驟1408處)。為了清除粉紅區塊,按出現次序將粉紅區塊的有效資料順序地重定位至已指定為重定位區塊之白區塊(步驟1410處)。一旦重定位區塊被填充,其便變成紅區塊(步驟1412處)。如在上文參考白區塊所述,若重定位區塊內之一些頁在其經充分程式化之前已變成陳舊的,則重定位區塊亦可直接轉變為粉紅區塊。為清楚起見,未展示此轉變,但可藉由圖4中自重定位區塊至粉紅區塊之箭頭表示。
如上所述,當將主機資料寫入至記憶體系統102時,圖13之多庫寫入演算法按巨型區塊來分配位址空間且按巨型頁次序來填滿整個巨型區塊。因此,因為圖14說明單一庫,所以應理解,可在任何給定庫中的寫入區塊處接收來自主機的資料,直至彼庫之寫入區塊中的元頁被填充為止,且因而,儘管該庫中之寫入區塊中更多元頁可能為可用的,但將要將下一個元頁量的主機資料寫入至巨型頁中之下一個元頁,亦即,多庫快閃記憶體107中之下一個庫的寫入區塊中。因此,駐於記憶體之一庫中的給定寫入區塊將對於主機提供的每N個元頁的主機資料接收一樣式的一元頁之主機資料,其中N為多庫快閃記憶體107中庫的數目。與此經調整之主機資料寫入順序相比,將在記憶體系統102內產生之資訊(諸如,上述SAT)或來自粉紅區塊之作為清除操作之部分而重定位以在庫中形成新的白區塊的有效資料完全寫入至該庫中的相應個別寫入區塊。
多庫清除操作
儲存位址重映射演算法之一實施例藉由將有效資料自粉紅區塊906重定位(本文中亦稱為清除)至被稱為重定位指標的特殊寫入指標來管理白區塊904之產生。若按上述範圍或檔案大小來再分儲存位址空間,則每一儲存位址範圍可具有其自有重定位區塊及相關聯之重定位指標。參看圖15,多庫快閃記憶體之清除操作之一實施例包括對於每一庫107A至107D單獨或獨立地追蹤是否存在足夠數目之白區塊(1502處)。此判定可基於當前存在於該庫中之白區塊的總數目來做出,或可基於該庫中正消耗白區塊的速率。若存在足夠數目之白區塊,則不需要清除操作且該庫可等待下一個寫入操作(1504處)。若判定存在不足數目之白區塊,則如下所述自為該庫維護之粉紅區塊清單選擇該庫中之粉紅區塊(1506處)。若該庫中之當前重定位區塊未滿,則按在選定粉紅區塊中出現之次序將有效資料自選定粉紅區塊複製至重定位區塊中之相連位置(1508、1510處)。在一實施例中,僅在充分程式化重定位區塊時,才將來自同一庫之另一白區塊分配為下一個重定位區塊(1512處)。又,在一實施例中,僅將來自選定粉紅區塊之有效資料複製至一重定位區塊中,同時彼粉紅區塊仍含有任何未經複製之有效資料(1514處)。圖15中所說明之清除操作反映,在多庫快閃記憶體107中,清除操作係獨立地執行,且完全含於每一各別庫107A至107D中,使得僅將一特定庫中之粉紅區塊906中的有效資料清除至同一庫內之重定位區塊中。通常將清除操作作為後台操作來執行,以將粉紅區塊變換成白區塊。
根據粉紅區塊之特性來選擇粉紅區塊906用於清除操作。在一實施例中,為多庫快閃記憶體107中之每一庫107A至107D獨立地維護粉紅區塊之清單。再次參看圖9,在一實施例中,將選擇具有最少量有效資料的粉紅區塊(亦即,圖9中陰影最少之叢集),因為在清除彼特定粉紅區塊時,較少之具有有效資料的位址導致較少之需要重定位的資料。因此,在圖9之實例中,粉紅區塊B將優先於粉紅區塊A而被選擇,因為粉紅區塊B具有較少之具有有效資料的位址。在其他實施例中,經選擇以用於清除操作之粉紅區塊可為與少於某一臨限量之有效資料相關聯的一群粉紅區塊中之任一者。該臨限值可小於整組粉紅區塊中含有之有效資料的平均量。處於或低於該臨限有效資料量的粉紅區塊之子集可維護於一清單中,主機或記憶體系統可自該清單選擇粉紅區塊。舉例而言,可維護當前滿足臨限值要求的所界定數目(例如,十六個)或百分比(例如,百分之30)之粉紅區塊的動態清單,且可自彼清單選擇任何粉紅區塊以供清除,而不考慮彼清單中之選定粉紅區塊是否具有絕對最少量之有效資料。在每一庫中形成記憶體系統或主機將自其進行選擇的清單的粉紅區塊之數目或百分比可為固定值或使用者可選之值。該清單可包括按等級次序來呈現來自可用粉紅區塊之具有絕對最少量之有效資料的粉紅區塊的粉紅區塊群組或可僅包括落在臨限值要求內的粉紅區塊。
替代地或與其組合,亦可基於將額外陳舊資料聚集於特定粉紅區塊906中的計算出之機率來做出對粉紅區塊的選擇。其他陳舊資料被聚集於粉紅區塊906中的機率可基於最不可能刪除殘留於記憶體中最久的資料的假設。因此,為重定位區塊之粉紅區塊906將含有比為具有新主機資料之寫入區塊的粉紅區塊906中的資料殘留更久的資料。選擇供清除之粉紅區塊906之過程將因而首先將為近來之重定位區塊的粉紅區塊906作為目標,因為其將較不可能具有更多資料要刪除,且因此可預期較少之額外陳舊資料。將基於更可能刪除較新資料,因此產生更多陳舊資料的假設來選擇先前為寫入區塊的粉紅區塊906以供稍後進行清除。
在圖16至圖17中說明巨型區塊寫入過程之更特定實例。在此實例中,假定正使用圖11之系統組態,其中在由記憶體系統102中之控制器108執行之應用程式中將主機LBA位址轉譯至中間儲存LBA位址(亦稱為DLBA位址)。如圖16所示,四庫記憶體中具有各自具有六個元頁(P1至P6)之元區塊1602的開放寫入巨型區塊1600與用於圖17所示之LBA段1702的LBA位址相關聯。寫入至多庫記憶體107中之次序開始於第一個開放元頁(庫2中之P2)且沿著巨型頁之其餘部分自左至右順序地繼續(庫3中之P2,繼之以庫4中之P2)。控制器將LBA位址導引至巨型頁中之各別元頁,使得將LBA段1702之引入LBA位址按接收到其之次序來重映射至與每一元頁相關聯之相連DLBA位址,且在移至下一個元頁之前程式化整個元頁。LBA段1702繼續重映射至與下一個巨型頁相關聯之DLBA位址(接連地,庫1至4中之每一者的元頁P3)。接著將LBA段1702之最末部分相連地重映射至與庫1及庫2中之元頁P4相關聯的DLBA位址。
雖然由控制器108管理之寫入演算法藉由在前進至巨型區塊1600中之下一個巨型頁之前跨越該等庫中之每一者來順序地分布有經LBA定址之主機資料的巨型頁來順序地寫入至巨型區塊1600,但用於單個段1702之每一庫中之不連續LBA位址的集合由每一庫作為DLBA段來管理,對於此實例,將該等DLBA段識別為圖16至圖17中之DLBA段A1至A4。在維護於多庫快閃記憶體107中之用於該記憶體的儲存位址表(SAT)1704中追蹤自LBA位址至每一庫中之DLBA位址的映射。圖17所說明之SAT 1704的型式將含有有效資料之每一LBA段映射至相關聯之DLBA段。SAT 1704中之LBA項1706包括該段中之第一個LBA位址、該段之長度,及映射至LBA段1702之第一個DLBA段(DLBA段A1)的DLAB位址及庫識別符。相應DLBA項1708包括第一個DLBA項1710,第一個DLBA項1710具有DLBA段之第一個DLBA位址及庫編號及LBA段1702中之LBA位址偏移,在第一個DLBA項1710將為零且在給定LBA段1702中之所有順序DLBA項將為非零值的情況下,第一個DLBA位址映射至該LBA段1702。
在將與LBA段1702相關聯之資料重映射至DLBA位址且寫入至巨型區塊1600中之與該等DLBA位址相關聯的實體位址位置後,將一或多個隨後LBA段重映射且寫入至巨型區塊1600中之其餘未經寫入容量(與庫3及4中之P4對準的巨型頁之其餘部分,及分別與P5及P6對準的巨型頁)。在充分程式化諸如巨型區塊1600之巨型區塊後,控制器不再追蹤該巨型區塊,且巨型區塊1600中之每一區塊1602至1608其後由在其各別庫中執行的獨立清除操作來管理。因此,可將原始巨型區塊1600之區塊1602至1608(在其各自歸因於陳舊資料之聚集而變成粉紅區塊時)獨立地清除至非相關重定位區塊。圖18說明可如何藉助於各別庫中之獨立清除操作來將DLBA段A1至A4移至新區塊1802至1808。與DLBA段A1至A4相關聯之資料的殘留當然假定此資料為有效資料且區塊1600中之其他資料為陳舊的且觸發各別清除操作。又,雖然為便於參考及說明在各別清除操作後DLBA段A1至A4相對於其在圖16之巨型區塊中之原始相對頁對準的可能移動而在圖18中將區塊1802至1808展示為彼此鄰近,但該等區塊1802至1808有可能位於每一庫中之不同實體或相對位置中。
參看圖11及圖12所說明之儲存位址重映射的實施例,其中邏輯至邏輯、LBA至DLBA之轉譯係由在記憶體系統上之控制器108所執行或由主機100上之處理器109所執行的應用程式來執行,現參看圖8至圖9及圖19至圖20來論述根據圖14之狀態圖的位址操縱的實例。假定一系統已根據由圖15所表示之儲存位址重映射演算法來操作,則在LBA位址空間(圖8)中,空閒叢集804分散於本質上隨機之位置處。在用於給定庫之DLBA位址空間(圖9)中,兩個白區塊904為可用的,且存在具有不同編號之陳舊(空閒)叢集804的三個粉紅區塊906。
當主機接下來要將資料寫入至儲存裝置時,其分配LBA位址空間,只要該LBA位址空間可用。圖19指示儲存位址重映射演算法如何將可用白區塊中之一者(諸如,圖9之白區塊904)分配為係較大巨型區塊之部分的寫入區塊1904,及如何將每一LBA位址映射至寫入區塊1904中可用之DLBA空間中的順序叢集。無關於LBA位址位置,根據上述之巨型區塊寫入樣式按寫入LBA位址之次序來對DLBA空間中之寫入區塊1904進行寫入。無關於LBA位址編號次序,應用於庫之儲存位址重映射演算法將按接收到LBA位址之時間次序來指派寫入區塊1904中之DLBA位址。將資料寫入於一或多個DLBA段中之寫入區塊中。DLBA段為映射至同一LBA段中之相連LBA位址的一組相連DLBA位址。DLBA段必須終止於DLBA位址空間1902中之區塊邊界(其為庫邊界)處。當寫入區塊1904變滿時,將白區塊904分配為下一個寫入區塊1904。
在每一庫中,DLBA區塊與快閃記憶體107之實體位址空間中之區塊1906對準,且因此DLBA區塊大小與實體位址區塊大小為相同的。DLBA寫入區塊1904中之位址的配置因而亦與實體位址空間中之相應更新區塊1906之配置相同。歸因於此對應,在實體更新區塊中從不需要獨立資料合併(常被稱為廢料收集)。在常用廢料收集操作中,通常始終重新組合一邏輯位址區塊以在邏輯區塊中維護一特定LBA位址範圍,該特定LBA位址範圍亦反映於實體區塊中。更特定言之,當利用常用廢料收集操作之記憶體系統接收對應於特定實體區塊中之一區段的經更新之資訊區段時,該記憶體系統將分配實體記憶體中之更新區塊以接收該(等)經更新區段且接著將來自原始實體區塊之全部其餘有效資料合併至更新區塊之其餘部分中。以此方式,標準廢料收集將使一特定LBA位址範圍之資料區塊永存,使得對應於該特定位址範圍之資料將始終合併至共同實體區塊中。本文所論述之清除操作不需要合併相同位址範圍中之資料。實情為,清除操作執行位址映射以產生可為來自各個實體區塊之資料之集合的資料的新區塊,其中並不有意地合併一特定LBA位址範圍之資料。
如先前所提及,儲存位址重映射演算法在每一庫107A至107D中獨立地操作以確保白區塊之足夠供應為可用的。儲存位址重映射演算法藉由將資料自粉紅區塊清除至被稱為重定位區塊1908(圖19)之特殊寫入區塊來管理白區塊之產生。當前經選擇以供清除之粉紅區塊被稱為清除區塊。
現順序地參看圖19至圖20,展示對給定庫之區塊清除過程的說明。在圖11之實施例中由控制器108對每一庫107A至107D獨立地執行的儲存位址重映射演算法將白區塊指定為重定位區塊1908,將資料自同一庫中之選定粉紅區塊清除至該重定位區塊1908以產生額外白區塊。如圖19所示,將清除區塊(圖9之粉紅區塊A)中之有效資料(亦稱為紅資料)重定位至重定位區塊1908中之順序位址,以將清除區塊轉換為白區塊904。亦指派實體位址空間1910中之相應更新區塊1906以接收經清除之資料。如同用於自主機接收到之新資料的更新區塊1906,用於接收經清除資料之更新區塊1906將從不需要廢料收集操作以合併有效資料,因為清除操作已在DLBA位址空間1902中完成合併。
自圖20所說明之其餘粉紅區塊識別下一個清除區塊(圖19之粉紅區塊B)。再次將具有最少紅資料之粉紅區塊指定為清除區塊,且將粉紅區塊之紅資料(有效資料)傳送至開放重定位區塊中之順序位置。亦進行對更新區塊1906中之實體位址的並行指派。再次,在映射至重定位區塊1908之實體更新區塊1906中不需要資料合併。將對粉紅區塊之清除操作作為後台操作來執行來以足以補償指定為寫入區塊之白區塊之消耗的速率來產生白區塊。圖8至圖9及圖19至圖20之實例說明可如何為來自主機之新資料及來自粉紅區塊之經重定位資料獨立地維護寫入區塊及重定位區塊以及實體位址空間中之各別獨立更新區塊。類似於僅在充分程式化當前巨型區塊時才分配用於作為巨型區塊之部分操作的新寫入區塊且使自主機接收到之新資料相關聯的過程,較佳僅在已充分程式化先前重定位區塊後才分配新重定位區塊。在分配後,新重定位區塊較佳僅含有未經寫入之容量,亦即,僅與準備好抹除之陳舊資料相關聯,或已經抹除且不含有效資料。
在上述實施例中,來自主機之新資料與將僅接收來自主機之其他新資料的寫入區塊相關聯,且將在清除操作中自粉紅區塊清除之有效資料移至一特定庫中之將僅含有來自彼庫之一或多個粉紅區塊之有效資料的重定位區塊中。如上所述,在其他實施例中,可進行對供清除之粉紅區塊的選擇,其中可選擇來自與低於臨限值(諸如,當前粉紅區塊之平均量)之紅資料量相關聯的粉紅區塊之清單的任何粉紅區塊,或該粉紅區塊可為來自具有在可用粉紅區塊外之特定等級(基於與粉紅區塊相關聯之有效資料的量)的粉紅區塊的任一粉紅區塊。
清除操作將來自已使來自其中之「熱」資料變為陳舊的區塊之相對「冷」資料重定位至含有類似相對冷資料的重定位區塊。此具有產生相對熱及相對冷區塊之獨立群體的效應。始終將待清除之區塊選擇為含有最少量之資料的熱區塊。熱區塊群體之產生藉由減少需要重定位之資料量來減少記憶應力因素。
在一實施例中,被選為清除區塊之粉紅區塊可為充填最稀疏的粉紅區塊(亦即,含有最少量之有效資料的粉紅區塊)且回應於藉由主機執行之特定寫入及刪除操作而不加以選擇。以此方式將粉紅區塊選為清除區塊允許執行具有對有效資料之最少重定位的區塊清除操作,因為經如此選擇的任何粉紅區塊將歸因於主機對檔案之刪除而已聚集最大量之未經分配資料位址。
粉紅區塊選擇過程之一實例可為選擇在具有最少數目之有效頁或叢集的粉紅區塊之5%中的任何粉紅區塊。在後台過程中,建置具有最少頁或叢集計數值的16個粉紅區塊之清單。粉紅區塊識別過程可在由「P」個經排程區塊清除操作所佔用之時間中完成一個循環。在圖21中說明清除區塊識別過程中之一循環。如下文更詳細地描述,對於每一庫107A至107B,藉由儲存位址重映射功能來獨立地維護含有白、粉紅及其他類型之DLBA位址區塊之區塊位址的清單之區塊資訊表(BIT),且讀取該區塊資訊表以識別接著在先前處理循環期間識別之該組區塊的下一組Q個粉紅區塊(步驟2102處)。對於每一庫獨立地,應在裝置初始化後之第一個處理循環中識別第一組粉紅區塊。為了確保清除區塊之可用性,Q之值應大於P之值。在一實施例中,Q之值可為8,且P可為4。對於該組中之粉紅區塊中之每一者,將一有效頁計數值設定為零(步驟2104處)。每次一個地掃描經維護以追蹤LBA與DLBA關係之儲存位址表(SAT)頁項以識別位於該組中之任何粉紅區塊中的有效資料頁(步驟2106處)。在下文更詳細地描述儲存位址表。有效頁計數值相應地增加。在已掃描所有SAT頁後,針對低有效頁計數值對照該清單中之粉紅區塊的有效頁計數值來評估該組中之粉紅區塊中之每一者的有效頁計數值,且在必要時藉由來自該組之區塊來替換該清單中之區塊(步驟2108處)。在完成區塊清除操作後,應為下一個區塊清除操作選擇一區塊。此區塊應為該清單中之具有最低有效頁計數值的區塊。
在於特定庫107A至107D中開始區塊清除操作之前,諸如關於圖19至圖20來描述,必須映射選定區塊以判定必須加以重定位之有效DLBA段的位置。此藉由一搜尋演算法來達成,該演算法利用自該區塊讀取之選定資料頁之標頭中的LBA位址及用於此等LBA位址的SAT項。該搜尋演算法利用其逐漸建置之已知有效與陳舊DLBA段的映射。當SAT項界定一有效DLBA段在區塊中之存在時,將該有效DLBA段添加至該區塊映射。當用於正經映射之區塊中的資料頁標頭中之一LBA範圍的SAT項界定一有效DLBA在另一區塊中之存在時,將一陳舊DLBA段添加至該區塊映射。搜尋過程繼續,直至已將該區塊中之所有DLBA位址明確地映射為有效或陳舊的為止。
在區塊清除操作中,將在上述區塊映射過程中識別之有效DLBA段內的所有頁自選定粉紅區塊重定位至同一庫中之重定位區塊中的重定位指標。用於經重定位DLBA之項記錄於SAT清單中。在圖11所說明之配置的情況下,對有效及陳舊DLBA段之搜尋可由記憶體系統102之控制器108執行,且區塊DLBA映射可儲存於與該控制器相關聯之RAM中。對於圖12之配置,主機系統100處之CPU 109可執行搜尋且將所得區塊DLBA資訊儲存於與主機系統CPU相關聯之RAM中。
用於多庫記憶體配置之儲存位址重映射演算法根據以下原理來操作:當一特定庫中之白區塊的數目已降至低於預定臨限值時,必須以足以確保以與藉由在寫入區塊中寫入主機資料而消耗白區塊容量的速率相同的速率來產生可經分配以用於寫入資料的可用白區塊容量的速率來對彼區塊中之粉紅區塊執行清除操作。必須藉由區塊清除操作所恢復之陳舊頁的數目來平衡藉由寫入來自主機之資料所消耗的寫入區塊中之頁的數目。在完成區塊清除操作後,如上所述,藉由自BIT及SAT讀取特定項來判定經選擇以用於下一個區塊清除操作的粉紅區塊中之陳舊資料的頁的數目。下一個區塊清除操作可經排程以在將此數目之有效頁的資料寫入至寫入區塊後立即開始。另外,對於每一庫而言,用於起始清除操作之臨限值可不同。舉例而言,用於清除之臨限值可基於一庫內將經重定位之資料量而為適應性的,使得若該臨限值係基於一庫中之粉紅區塊中之有效資料的平均量來觸發,則可在所有庫中以大致相同之速率來產生白區塊。
儲存位址表
為了實施上述儲存位址重映射,使用諸如大體上參看圖17所描述之儲存位址表(SAT)1704來追蹤資料在儲存位址空間內之位置。亦將該SAT中之資訊作為對完整快閃元區塊之順序更新的部分來寫入。因此,在一實施例中,將該SAT資訊寫入至與用於自主機接收到之資料的寫入區塊分開且與用於清除操作之重定位區塊分開的寫入區塊。在其他實施例中,該SAT資訊可儲存於不同區塊群組中,例如二進位快閃記憶體分隔中而非由非SAT資訊佔用之MLC快閃記憶體分隔中之區塊。或者,SAT及非SAT資料可儲存於相同類型之快閃記憶體區塊中,但由區塊分離。在其他實施例中,SAT及非SAT資料可混合於同一區塊中。雖然SAT 1704可為用於多庫記憶體107中之所有庫107A至107D的單個表,但在其他實施例中,每一庫可維護僅映射彼特定庫中之資訊之獨立SAT。
SAT與圖10至圖12之實施例中之每一者有關。又,雖然以下論述集中於自主機LBA至與圖11至圖12之主機及記憶體系統組態有關的被稱為DLBA(亦稱為儲存LBA)的第二LBA空間的重映射,但此相同SAT技術適用於圖10之實施例,其中與主機LBA位址相關聯之資料直接映射至實體區塊,而無需介入之邏輯至邏輯轉譯。SAT資訊較佳儲存於記憶體裝置中之快閃記憶體中,而無關於所論述之實施例。對於圖12之實施例(其中自主機LBA至DLBA之重映射發生於主機1202上),傳輸SAT資訊以供儲存於記憶體系統1204中之快閃記憶體中。對於圖10之實施例(其中儲存位址重映射演算法實施於記憶體系統內之記憶體管理器中),術語DLBA指代快閃記憶體107中之實體位址,而非圖11至圖12之實施例中所使用之第二邏輯位址空間,且DLBA位址之區塊表示實體記憶體中之元區塊。
儲存位址表(SAT)含有使由主機檔案系統指派之LBA位址與DLBA位址有關的相關資訊。更特定言之,使用該SAT來記錄LBA位址空間中之由主機檔案系統分配給有效資料的每一段位址與DLBA位址空間中之藉由儲存位址重映射演算法產生的一或多段位址之間的映射。如上所述,系統位址空間之單位為LBA,且LBA段為當前由主機檔案系統分配給有效資料的一組相連LBA位址。LBA段通常由未經分配之LBA位址來定界,然而,若SAT資料結構要求,則可將LBA段作為多個較小LBA段來加以管理。裝置位址空間之單位為DLBA,且DLBA段為映射至同一LBA段中之相連LBA位址的一組相連DLBA位址。DLBA段終止於DLBA位址空間中之區塊邊界處。藉由SAT將每一LBA段映射至一或多個DLBA段。一LBA段之長度等於其所映射至之DLBA段之累加長度。用於LBA段之SAT項含有至用於其所映射至之第一個DLBA段的一項及該DLBA段所位於之庫的鏈接。其亦可映射至之隨後DLBA段為緊接著此段之順序項。DLBA段含有至其在其所映射至之LBA段內之偏移位址但不至該LBA段之絕對LBA位址的向後鏈接。可將個別LBA位址界定為LBA段內之LBA偏移。SAT記錄對應於映射至LBA段之每一DLBA段之開頭的LBA偏移。可因此將對應於個別LBA位址之個別DLBA位址識別為DLBA段內之DLBA偏移。雖然該SAT中之LBA段可僅用於有效資料之段,但在其他實施例中,該SAT亦可經組態以儲存用於有效資料及陳舊資料兩者之LBA段。
該SAT實施於被稱為SAT區塊的LBA位址之區塊內。該SAT包括所界定最大數目之SAT區塊,且含有一所界定最大數目之有效SAT頁。對於所指定之最大數目之SAT區塊,SAT因此具有其可編入索引之最大數目的DLBA段。在一實施例中,雖然界定最大數目之SAT區塊,但該SAT為可自動地按比例調整直至最大數目的大小可變之表,因為該SAT中之項數目將根據由主機所指派之LBA的分裂而調整自身。因此,若主機指派高度分裂之LBA,則該SAT將比主機將較少分裂之LBA群組指派給資料時包括更多項。因此,若主機LBA變成較少分裂的,則該SAT之大小將減小。較少分裂導致要映射較少獨立段,且較少獨立段導致該SAT中之較少項,因為該SAT在一項中將一主機LBA位址段映射至一或多個DLBA段而非嚴格地追蹤及更新固定數目之邏輯位址。
歸因於圖17之SAT的LBA段至DLBA段映射配置,可將一主機LBA位址段映射至兩個或兩個以上之DLBA段,其中該主機LBA段為分配給有效資料的一組相連邏輯位址,且DLBA(或儲存LBA)段為同一元區塊內的且映射至同一主機LBA段的一組相連DLBA位址。SAT索引及映射結構之層級說明於圖22中。展示LBA段2204及相應DLBA段2202。LBA至DLBA映射資訊含於SAT頁2206中。LBA至SAT頁索引資訊含於SAT索引頁2208中,且主版頁索引2210快取於與主機處理器相關聯之RAM中(對於圖12之實施例)且快取於與控制器108相關聯之RAM 212中(對於圖10至圖11之實施例)。
SAT通常包含多個SAT區塊,但SAT資訊可僅寫入至當前指定為SAT寫入區塊的單個區塊。所有其他SAT區塊已經寫滿,且可能含有有效頁與陳舊頁之組合。一SAT頁含有用於一可變範圍之主機LBA位址空間內之所有LBA段的項,以及用於裝置位址空間中之其所映射至之段的項。可存在大數目之SAT頁。SAT索引頁含有對較大範圍之主機LBA位址空間內之每一有效SAT頁的位置的索引。小數目之SAT索引頁存在,其通常為一。藉由在單個SAT寫入區塊中之下一個可用位置處重寫一經更新頁且將該頁之先前型式處理為陳舊的來修改SAT中之資訊。大數目之無效頁可因此存在於SAT中。藉由用於寫入頁及清除區塊之演算法來管理SAT區塊,該等演算法類似於上述用於主機資料的演算法,除了將SAT頁寫入至庫中之個別區塊而不寫入至巨型區塊及將來自粉紅SAT區塊之有效資料複製至當前SAT寫入區塊而非獨立重定位區塊外。
每一SAT區塊為專用於儲存SAT資訊的DLBA位址之區塊。將一SAT區塊劃分成表格頁,可將SAT頁2206或SAT索引頁2208寫入至表格頁中。一SAT區塊可含有有效SAT頁2206、有效SAT索引頁2208與陳舊頁的任何組合。參看圖23,展示樣本SAT寫入區塊2300。將資料寫入至SAT寫入區塊2300中由遞增之SAT寫入指標2302所界定的順序位置處。資料可僅寫入至指定為SAT寫入區塊2300的單個SAT區塊。以與用於先前所描述之主機資料寫入區塊之方式相同的方式,僅在SAT寫入區塊2300已經寫滿時,才將一白區塊分配為新SAT寫入區塊2300。一SAT頁位置係藉由其SAT區塊內其順序編號來定址。在為所有庫維護單個SAT之一實施例中,控制器可選擇交替庫107A至107D之SAT以用以分配新SAT白區塊。以此方式,可避免對用於儲存SAT之一個庫的不成比例的使用。
SAT頁
SAT頁2206為SAT中之映射資訊的最小可更新單位。將經更新之SAT頁2206寫入於由SAT寫入指標2302界定之位置處。一SAT頁2206含有用於具有遞增之LBA位址之一組LBA段的映射資訊,但連續LBA段之位址不必為相連的。一SAT頁2206中之LBA位址範圍不與任何其他SAT頁2206中之LBA位址範圍重疊。SAT頁2206可無限制地分布於整組SAT區塊各處。用於任何LBA位址範圍的SAT頁2206可處於任何SAT區塊中。一SAT頁2206可包括一索引緩衝器欄位2304、LBA欄位2306、DLBA欄位2308及控制指標2310。參數備份項亦含有儲存於揮發性RAM中之一些參數的值。
SAT頁2206內之LBA欄位2306含有用於一LBA位址範圍內之經分配以用於資料儲存的相連LBA位址之段的項。由一SAT頁2206橫跨之LBA位址範圍不與由任何其他SAT頁2206橫跨之LBA位址範圍重疊。LBA欄位具有可變長度且含有可變數目之LBA項。在LBA欄位2306內,存在用於由SAT頁2206編索引之LBA位址的範圍內的每一LBA段的LBA項2312。將一LBA段映射至一或多個DLBA段。如圖24所示,一LBA項2312含有以下資訊:段中之第一個LBA 2402、區段中之LBA段的長度2404,及在同一SAT頁2206中之DLBA欄位內的LBA段所映射至之第一個DLBA段的DLBA項編號及庫編號2406。
SAT頁2206內之DLBA欄位2308含有用於映射至同一SAT頁2206中之LBA欄位內的LBA段的所有DLBA位址段的項。DLBA欄位2308具有可變長度且含有可變數目之DLBA項2314。在DLBA欄位2308內,存在用於映射至同一SAT頁2206中之LBA欄位2306內之LBA段的每一DLBA段的DLBA項2314。如圖25所示,每一DLBA項2314含有以下資訊:段中之第一個DLBA位址2502及第一個DLBA位址所映射至之LBA段中的LBA偏移2504。作為每一SAT頁2206之部分而寫入但僅在最近寫入之SAT頁2206中保持有效的SAT頁/索引緩衝器欄位含有SAT索引項2316。在為多庫記憶體107維護單個SAT之實施例中,庫編號亦包括於段中之第一個DLBA之項2502內。在每一庫中維護獨立SAT之替代實施例中,在DLBA項2314中不需要庫資訊,因為開始DLBA位址已為庫特定的。
存在用於SAT中當前在相關SAT索引頁2208中不具有有效項的每一SAT頁2206的SAT索引項2316(圖26所示)。只要一SAT頁2206被寫入,便產生或更新SAT索引項,且在更新相關SAT索引頁2208時刪除該SAT索引項。其含有由SAT頁2206編索引之第一個LBA 2602、由SAT頁2206編索引之最末LBA 2604、含有SAT頁2206之SAT區塊編號及庫編號2606,及該SAT區塊內SAT頁2206之頁編號2608。SAT索引欄位2318具有用於固定數目之SAT索引項2320的容量。此數目判定可寫入SAT頁2206及SAT索引頁2208的相對頻率。在一實施例中,此固定數目可為32。
SAT頁欄位指標2310界定自LBA欄位之開頭至DLBA欄位之開頭的偏移。其含有作為許多LBA項之偏移值。SAT頁2206中之參數備份項含有儲存於揮發性RAM中之參數的值。此等參數值用在一電力循環後初始化RAM中之資訊(對於圖8至圖9之實施例,與控制器108相關聯,或對於圖10之實施例,與主機CPU相關聯)期間。其僅在最近寫入之SAT頁2206中為有效的。
SAT索引頁
一組SAT索引頁2208提供對SAT中每一有效SAT頁2206之位置的索引。個別SAT索引頁2208含有界定與一LBA位址範圍有關的有效SAT頁的位置的項2320。由一SAT索引頁2208橫跨之LBA位址範圍不與由任何其他SAT索引頁2208橫跨之LBA位址範圍重疊。該等項係根據其所相關之SAT頁之LBA位址範圍值來加以排序。SAT索引頁2208含有固定數目之項。SAT索引頁2208可無限制地分布於整組SAT區塊各處。用於任何LBA位址範圍的SAT索引頁2208可處於任何SAT區塊中。SAT索引頁2208包含一SAT索引欄位及一頁索引欄位。
SAT索引欄位2318含有用於由SAT索引頁2208所橫跨之LBA位址範圍內的所有有效SAT頁的SAT索引項。SAT索引項2320與單個SAT頁2206有關,且含有以下資訊:由SAT頁2206編索引之第一個LBA、含有SAT頁2206之SAT區塊編號,及SAT頁2206在SAT區塊內之頁編號。頁索引欄位含有用於SAT內所有有效SAT索引頁2208的頁索引項。存在用於SAT中之每一有效SAT索引頁2208的頁索引項,且該頁索引項含有以下資訊:由SAT索引頁編索引之第一個LBA、含有SAT索引頁之SAT區塊編號,及在SAT區塊內SAT索引頁之頁編號。頁索引項僅在最近寫入之SAT索引頁2208中為有效的。
臨時SAT資料結構
雖然並非圖22所示之用於位址映射之長期儲存的SAT層級之部分,但可在層級式程序內使用額外資料結構以更新SAT。一個此種結構為包含用於由對LBA段之更新操作或區塊清除操作得到的新位址映射的新項的LBA項與相應DLBA映射的SAT清單,該等LBA項與相應DLBA映射尚未被寫入於SAT頁2206中。該SAT清單可為RAM中之揮發性結構。當在SAT頁更新期間將SAT清單中之項寫入至SAT頁2206時,除去該SAT清單中之項。
表格頁
表格頁為SAT區塊內DLBA位址空間之固定大小單元,其用以儲存一個SAT頁2206或一個SAT索引頁2208。表格頁之最小大小為一個頁,且最大大小為一個元頁,其中頁及元頁為對應於每一庫107A至107D之實體記憶體中的頁及元頁之DLBA位址空間的單元。
SAT中之項大小
SAT頁2206及SAT索引頁2208內之項的大小展示於表1中。
位址轉譯
SAT可用於快速地定位對應於主機檔案系統之LBA位址的DLBA位址。在一實施例中,僅映射至有效資料之LBA位址包括於SAT中。因為SAT頁2206係按LBA次序來配置且一個SAT頁2206與另一個SAT頁2206在LBA範圍上不重疊,所以可使用簡單搜尋演算法來快速地導向所要資料。此位址轉譯程序之實例展示於圖27中。首先由控制器或處理器(取決於儲存位址重映射實施例係分別如圖11中般組態還是如圖12中般組態)來接收目標LBA 2702。在其他實施例中,預期SAT可包括映射至有效資料及陳舊資料的LBA位址且追蹤該資料是有效還是陳舊的。
圖27除了說明位址轉譯程序外亦展示可如何組態來自最末寫入之SAT索引頁的頁索引欄位及來自最末寫入之SAT頁的索引緩衝器欄位。在圖27之實施例中,此等兩個欄位臨時維護於揮發性記憶體(諸如,儲存裝置或主機之RAM)中。最末寫入之SAT索引頁中的頁索引欄位包括至每一SAT索引頁的指標。索引緩衝器欄位可含有尚未寫入至索引頁中的用於最近寫入之SAT頁的一組索引項。
用於目標LBA位址至相應DLBA位址之映射資訊留存於含有用於包含目標位址之一LBA位址範圍的所有映射資訊的特定SAT頁2206中。位址轉譯程序之第一階段為識別及讀取此目標SAT頁。參看圖27,對在最末寫入之SAT頁中之索引緩衝器欄位的經快取之型式執行二元搜尋,以判定用於目標LBA之SAT索引項是否存在(步驟2704處)。若目標SAT頁近來已經重寫,則一項將存在,但尚未寫入對併有記錄目標SAT頁之新位置的SAT索引項的SAT索引頁。若發現用於目標LBA之SAT索引項,則其界定目標SAT頁之位置,且讀取此頁(步驟2706處)。
若在步驟2704中未發現用於目標LBA之SAT索引項,則對最末寫入之SAT索引頁中之頁索引欄位的經快取型式執行二元搜尋,以定位用於目標LBA之SAT索引項(步驟2708處)。在步驟2708中發現的用於目標LBA之SAT索引項界定用於含有目標LBA之LBA位址範圍的SAT索引頁之位置。讀取此頁(步驟2710處)。執行二元搜尋以定位用於目標LBA之SAT索引項(步驟2712處)。用於目標LBA之SAT索引項界定目標SAT頁之位置。讀取此頁(步驟2714處)。
當已在步驟2706或步驟2714處讀取目標SAT頁時,可如下地執行LBA至DLBA轉譯。對LBA欄位執行二元搜尋,以定位用於併有目標LBA之目標LBA段的LBA項。記錄目標LBA段內目標LBA之偏移(步驟2716處)。欄位指標中之資訊界定用於二元搜尋的LBA欄位之長度,及亦界定DLBA欄位相對於LBA欄位之開頭的開頭(步驟2718處)。在步驟2716中發現之LBA項界定映射至LBA段之第一個DLBA項在DLBA欄位內的位置(步驟2720處)。將在步驟2716中判定之偏移與在步驟2720中定位之一或多個DLBA項一起用以判定目標DLBA位址(步驟2722處)。
儲存位址重映射演算法根據以下原理來操作:當白區塊之數目已降至低於預定臨限值時,必須以足以確保以與藉由在寫入區塊中寫入主機資料而消耗空白容量的速率相同的速率來產生可經分配以用於寫入資料的可用空白容量的速率來對粉紅區塊執行清除(亦稱為重定位)操作。可經分配以用於寫入資料之可用空白叢集容量為白區塊中之容量加上在清除操作期間可將資料寫入至其中的重定位區塊內之空白叢集容量。
若經選擇以用於清除操作之粉紅區塊中之空白叢集容量佔用每一粉紅區塊之x%,則藉由對一粉紅區塊之清除操作而產生的新可用容量為自該粉紅區塊產生之一個完整白區塊減去在因對來自正經清除之區塊的資料重定位而在重定位區塊中消耗的區塊之(100-x)%。對粉紅區塊之清除操作因此產生白區塊之x%的新可用容量。因此,對於藉由所寫入之主機資料填充的每一寫入區塊,必須對100/x個粉紅區塊執行清除操作,且必須加以重定位之資料佔用(100-x)/x個區塊。程式化至藉由主機寫入之區段的區段之比率因此近似界定為1+(100-x)/x。
藉由所使用之總裝置容量的百分比及含有資料之區塊為紅區塊的百分比來判定平均粉紅區塊中之空白叢集容量的百分比。舉例而言,若裝置為80%滿,且含有資料之區塊的30%為紅區塊,則粉紅區塊包含26.2%的空白叢集容量。有可能裝置中之LBA位址處刪除資料之不等分布將導致一些粉紅區塊具有兩倍於平均%之空白容量。因此,在此實例中,經選擇以用於清除操作之粉紅區塊將具有52.4%之空白容量,亦即,x=52.4,且藉由主機寫入之資料的每區段經程式化之區段比率將為1.90。
在判定將清除哪個粉紅區塊(是主機資料粉紅區塊還是SAT粉紅區塊)時,儲存位址重映射演算法可藉由監視藉由NTFS寫入之$bitmap 檔案來偵測未經分配之位址的名稱。可以兩種方式來對清除操作進行排程。較佳地,清除操作充當後台操作,且因此僅在SSD或其他可攜式快閃記憶體裝置閒置時才起作用,以使得主機資料寫入速度不受影響。或者,可在主機正寫入資料時活動之前台操作中利用清除操作。若將清除操作配置為前台操作,則在主機活動發生時或在「清除快取記憶體」命令表示SSD或可攜式快閃記憶體裝置之潛在斷電時,此等操作可自動地暫停。前台及後台清除操作的選擇可為動態決策,其中在需要比在記憶體裝置之閒置狀態期間可達成之清除速率高的清除速率時,執行前台操作。舉例而言,主機或記憶體裝置可在前台清除操作與後台清除操作之間輪轉,使得控制清除速率以維持恆定之主機資料寫入速度,直至記憶體裝置為滿為止。前台清除操作可與主機資料寫入操作交錯。舉例而言,若因為在主機介面處持續之活動而使可用之閒置時間不足,則可在短叢發中將為執行區塊清除操作而對資料頁之重定位與回應於主機命令之裝置活動交錯。
SAT更新程序
使用表2所示之層級式程序來更新SAT資料結構中之元素。
如表2中所述,除了DLBA段更新外,用於特定結構之SAT更新係藉由SAT層級中較下級結構中之活動來觸發。只要將與完整DLBA段相關聯之資料寫入至寫入區塊,便更新SAT清單。在最大准許數目之項存在於SAT清單中時,更新一或多個SAT頁。在更新一SAT頁時,將來自SAT清單之一或多個項添加至該SAT頁,且將其自SAT清單移除。可將在SAT清單為滿時加以更新之SAT頁劃分成許多個不同頁群組,且在單個操作中僅需要更新單個群組。此可有助於最小化SAT更新操作可使來自主機之資料寫入操作延遲的時間。在此種情況下,僅將自SAT清單複製至已經更新之SAT頁群組的項自SAT清單移除。可將經更新之SAT頁之一群組的大小設定為不干擾主機系統100存取記憶體系統102之能力的點。在一實施例中,該群組大小可為4個SAT頁。
SAT索引緩衝器欄位在最近寫入之SAT頁中為有效的。只要寫入SAT頁,SAT索引緩衝器欄位便在不具有額外程式化之情況下進行更新。最後,在最大准許數目之項存在於SAT索引緩衝器中時,更新一SAT索引頁。在SAT索引頁更新期間,將來自SAT索引緩衝器之一或多個項添加至SAT索引頁,且將其自SAT索引緩衝器移除。如上文關於對SAT頁之更新所述,可將必須加以更新之SAT索引頁劃分成許多個不同頁群組,且在單個操作中僅需要更新單個群組。此最小化SAT更新操作可使來自主機之資料寫入操作延遲的時間。僅將自SAT索引緩衝器複製至已經更新之SAT索引頁群組的項自SAT索引緩衝器移除。在一實施例中,經更新之SAT索引頁之一群組的大小可為4個頁。
由SAT頁或SAT索引頁橫跨之LBA範圍內所需要的項之數目為可變的,且可隨著時間改變。因此,SAT中之頁溢出或頁被非常些微地充填並不罕見。可藉由用於裂開及合併SAT中之頁的方案來管理此等狀況。
當要在SAT頁或SAT索引頁之更新期間添加項,但在該頁中不具有足夠可用之未使用空間以適應該改變時,將該頁分成兩部分。引入新SAT頁或SAT索引頁,且為先前為滿之頁及新的空頁判定LBA範圍,該LBA範圍將各自給予每一個頁許多個項,該等項將使其為半滿的。若可能,則接著在單個程式化操作中寫入兩個頁。在該等頁為SAT頁之情況下,用於該兩個頁之SAT索引項包括於最末寫入之SAT頁中之索引緩衝器欄位中。在該等頁為SAT索引頁之情況下,頁索引項包括於最末寫入之SAT索引頁中之頁索引欄位中。
當具有鄰近LBA範圍的兩個或兩個以上之SAT頁或兩個SAT索引頁被些微地充填時,可將該等頁合併成單個頁。在所得單個頁被填充不多於80%時,起始合併。新單個頁之LBA範圍藉由獨立的合併頁所橫跨之範圍來界定。在所合併頁為SAT頁之情況下,在最末寫入之SAT頁中的索引緩衝器欄位中更新新頁及所合併頁之SAT索引項。在該等頁為SAT索引頁之情況下,在最末寫入之SAT索引頁中之頁索引欄位中更新頁索引項。
在電力循環後,亦即,在已移除電力且復原後,必需將RAM中之SAT清單重構至與其在電力循環之前所處的狀態完全相同的狀態。此可藉由掃描所有寫入區塊及重定位區塊以由資料標頭中之LBA位址資訊來識別自從上次SAT頁更新以來所寫入的額外資料來完成。亦將在上次SAT頁更新時此等區塊之位置及寫入及重定位指標在其內之位置記錄於最末寫入之SAT頁中的欄位中。因此僅需要在此等指標之位置處開始掃描。
清除SAT區塊
清除SAT區塊之過程類似於上文關於自主機接收到之資料所描述的過程,但僅對SAT區塊操作。藉由儲存位址重映射寫入及清除演算法引起的對SAT之更新使SAT區塊在如圖28所示之區塊狀態之間轉變。首先,將來自當前經指定以接收下一個SAT區塊的庫之白區塊清單的白區塊分配為SAT寫入區塊(2802處)。在已分配該SAT寫入區塊中之最末頁時,該區塊變成紅SAT區塊(2804處)。若該SAT寫入區塊內之一些頁已變成陳舊的,則有可能該SAT寫入區塊亦可轉變為粉紅SAT區塊。然而,為清楚之目的,在圖28中未展示彼轉變。在更新一SAT頁或SAT索引頁時使一紅SAT區塊內之一或多個頁變成陳舊的,且該紅SAT區塊變成粉紅SAT區塊(2806處)。與對含有主機資料之粉紅區塊的清除操作(其中,有效資料移至經指定以僅用於經重定位資料之特殊寫入區塊)不同,對粉紅SAT區塊之清除操作僅將有效SAT資料重定位至當前SAT寫入區塊。在已完成對選定粉紅SAT區塊之清除操作時,該粉紅SAT區塊變成白區塊(2808處)。較佳將該SAT粉紅區塊清除至同一庫107A至107D中之SAT寫入區塊。
現將描述選擇哪些SAT區塊將經受清除程序的過程。將含有少數目之有效頁或叢集之SAT區塊選為待清除之下一個SAT區塊。該區塊應在特定庫中之SAT區塊中之具有最少數目之有效頁的SAT區塊之5%中。對區塊之選擇可藉由一後台過程來完成,該後台過程建置每一庫中具有最低有效頁計數值的16個SAT區塊的清單。此過程應較佳在由M個經排程SAT區塊清除操作所佔用之時間中完成一個循環。
在該後台過程之一個循環期間發生的用於判定接下來清除哪些SAT區塊的活動之實例說明於圖29中。首先,掃描用於每一庫之區塊資訊表(BIT)以識別每一各別庫中之接著在先前處理循環期間識別之一組區塊的下一組N個SAT區塊(步驟2902處)。在裝置初始化後,應在第一個處理循環中識別第一組SAT區塊。N之值可經選擇以對於特定應用為適當的且較佳大於為M選定之值,以便確保SAT清除區塊之可用性。作為一實例,M可為4,且N可為8。對於該組中之SAT區塊中之每一者,將一有效頁計數值設定為零(步驟2904處)。接著掃描經快取之頁索引欄位中的頁索引項,以識別位於該組中之任何SAT區塊中的有效SAT索引頁(步驟2906處)。有效頁計數值相應地遞增。依次地掃描每一SAT索引頁中之SAT索引項,以識別位於該組中之任何SAT區塊中的有效SAT頁(步驟2908處)。有效頁計數值相應地遞增(步驟2910處)。在掃描頁索引及SAT索引頁以判定有效頁計數值後,針對低有效頁計數值對照該清單中之SAT區塊的有效頁計數值來評估該組中之SAT區塊中之每一者的有效頁計數值,且在必要時藉由來自該組之區塊來替換該清單中之區塊(步驟2912處)。在應對SAT區塊清除操作排程時,選擇該清單中具有最低有效頁計數值的區塊。
在SAT區塊清除操作中,將所有有效SAT索引頁及SAT頁自選定區塊重定位至各別庫中之SAT寫入區塊2300之SAT寫入指標2302。僅更新最末寫入之SAT索引頁中之頁索引欄位。為了使SAT區塊之數目保持大致恆定,必須藉由SAT區塊清除操作所恢復之陳舊SAT頁及SAT索引頁的數目來平衡由對SAT頁及SAT索引頁之更新操作所消耗的SAT中之頁的數目。如上文參看圖29所論述,判定經選擇以用於下一個SAT清除操作的SAT區塊中之具陳舊資訊之頁的數目。下一個SAT區塊清除操作可經排程以在自從先前SAT清除操作以來已將相同數目之有效頁的資訊寫入至SAT時發生。又,控制器108可對於每一區塊獨立地基於粉紅區塊中之有效資料的量或基於一或多個其他參數來選擇是清除SAT資料之粉紅區塊還是主機資料之粉紅區塊。
區塊資訊表(BIT)
使用區塊資訊表(BIT)來為白區塊、粉紅區塊及SAT區塊記錄獨立之區塊位址清單。在多庫記憶體中,在每一庫107A至107D中維護一獨立BIT。BIT寫入區塊含有關於同一庫中之所有其他BIT區塊位於何處的資訊。在一實施例中,儲存位址重映射演算法及相關聯之系統希望維護白區塊之清單以允許選擇被分配為寫入區塊、重定位區塊或SAT區塊的區塊。亦希望維護粉紅區塊之清單以允許選擇每一庫中將經受區塊清除操作之粉紅區塊及SAT區塊。在BIT中維護此等清單,該BIT之結構接近地反映SAT之結構。在一實施例中,一獨立BIT經維護且儲存於每一庫107A至107D中。在另一實施例中,該BIT可為具有由庫編索引之資訊的單個表。
BIT資料結構
每一庫中之BIT實施於被稱為BIT區塊的DLBA位址之區塊內。區塊清單資訊儲存於BIT頁內,且「DLBA區塊至BIT頁」索引資訊儲存於BIT索引頁內。BIT頁與BIT索引頁可在同一BIT區塊內以任何次序來混合。BIT可由多個BIT區塊組成,但BIT資訊可僅寫入至當前被指定為BIT寫入區塊的單個區塊。所有其他BIT區塊先前已經寫滿,且可含有有效頁與陳舊頁之組合。實施與上述關於SAT區塊之區塊清除方案相同的BIT區塊清除方案以消除陳舊BIT資訊之頁且產生白區塊以供再用。
BIT區塊
如圖30所示,BIT區塊為專用於儲存BIT資訊的DLBA位址之區塊。其可含有BIT頁3002及BIT索引頁3004。一BIT區塊可含有有效BIT頁、有效BIT索引頁與陳舊頁的任何組合。BIT資訊可僅寫入至被指定為BIT寫入區塊3000的單個BIT區塊。將BIT資訊寫入至BIT寫入區塊3000中由遞增之BIT寫入指標3006界定的順序位置處。在BIT寫入區塊3000已經寫滿時,將一白區塊分配為新BIT寫入區塊。組成BIT之區塊各自由其BIT區塊位置來識別,BIT區塊位置為其在裝置之區塊群體內的區塊位址。將一BIT區塊劃分成表格頁,可將BIT頁3002或BIT索引頁3004寫入至表格頁中。BIT頁位置係藉由其BIT區塊內其順序編號來定址。BIT資訊在快閃記憶體之不同區塊中可與非BIT資訊分離,可分離至與非BIT資訊不同類型之區塊(例如,二進位對MLC),或可在一區塊中與非BIT資訊混合。
BIT頁3002為BIT中之區塊清單資訊的最小可更新單位。將經更新之BIT頁寫入於由BIT寫入指標3006界定之位置處。BIT頁3002含有具有在一界定範圍內之DLBA區塊位址的白區塊、粉紅區塊及SAT區塊的清單,但任何清單中之連續區塊之區塊位址無需為相連的。一BIT頁中之DLBA區塊位址範圍不與任何其他BIT頁中之DLBA區塊位址範圍重疊。BIT頁可無限制地分布於整組BIT區塊各處。用於任何LBA位址範圍的BIT頁可處於任何BIT區塊中。一BIT頁包含一白區塊清單(WBL)欄位3008、一粉紅區塊清單(PBL)欄位3010、一SAT區塊清單(SBL)欄位3012及一索引緩衝器欄位3014,加上兩個控制指標3016。參數備份項亦含有儲存於揮發性RAM中之一些參數的值。
BIT頁3002內之WBL欄位3008含有用於處於白區塊清單中之在與BIT頁3002有關之DLBA區塊位址範圍內的區塊的項。由一BIT頁3002橫跨之DLBA區塊位址範圍不與由任何其他BIT頁3002橫跨之DLBA區塊位址範圍重疊。WBL欄位3008具有可變長度且含有可變數目之WBL項。在WBL欄位中,存在用於在由BIT頁3002編索引之DLBA區塊位址範圍內的每一白區塊的WBL項。一WBL項含有區塊之DLBA位址。
BIT頁3002內之PBL欄位3010含有用於處於粉紅區塊清單中之在與BIT頁3002有關之DLBA區塊位址範圍內的區塊的項。由一BIT頁3002橫跨之DLBA區塊位址範圍不與由任何其他BIT頁3002橫跨之DLBA區塊位址範圍重疊。PBL欄位3010具有可變長度且含有可變數目之PBL項。在PBL欄位3010內,存在用於在由BIT頁3002編索引之DLBA區塊位址範圍內的每一粉紅區塊的PBL項。一PBL項含有區塊之DLBA位址。
BIT頁內之SBL欄位3012含有用於處於SAT區塊清單中之在與BIT頁3002有關之DLBA區塊位址範圍內的區塊的項。由一BIT頁3002橫跨之DLBA區塊位址範圍不與由任何其他BIT頁3002橫跨之DLBA區塊位址範圍重疊。SBL欄位3012具有可變長度且含有可變數目之SBL項。在SBL欄位3012內,存在用於在由BIT頁3012編索引之DLBA區塊位址範圍內的每一SAT區塊的SBL項。一SBL項含有區塊之DLBA位址。
一索引緩衝器欄位3014被作為每一BIT頁3002之部分來寫入,但僅在最近寫入之BIT頁中保持有效。一BIT頁3002之索引緩衝器欄位3014含有BIT索引項。存在用於當前在相關BIT索引頁3004中不具有有效項的BIT中之每一BIT頁3002的BIT索引項。只要一BIT頁3002被寫入,便產生或更新BIT索引項,且在更新相關BIT索引頁3004時刪除該BIT索引項。BIT索引項可含有由BIT頁3002編索引之範圍的第一個DLBA區塊位址、由BIT頁3002編索引之範圍的最末DLBA區塊位址、含有BIT頁3002之BIT區塊位置,及該BIT頁在BIT區塊內之BIT頁位置。索引緩衝器欄位3014具有用於固定數目之BIT索引項(暫時界定為32)的容量。此數目判定可寫入BIT頁3002及BIT索引頁3004的相對頻率。
BIT頁3002之控制指標3016界定自WBL欄位3008之開頭、PBL欄位3010之開頭及SBL欄位3012之開頭的偏移。BIT頁3002含有作為許多清單項之偏移值。
BIT索引頁
一組BIT索引頁3004提供對BIT中每一有效BIT頁3002之位置的索引。個別BIT索引頁3004含有界定與一DLBA區塊位址範圍有關的有效BIT頁的位置的項。由一BIT索引頁橫跨之DLBA區塊位址範圍不與由任何其他BIT索引頁3004橫跨之DLBA區塊位址範圍重疊。該等項係根據其所相關之BIT頁3002之DLBA區塊位址範圍值來加以排序。BIT索引頁3004含有固定數目之項。
BIT索引頁可無限制地分布於整組BIT區塊各處。用於任何DLBA區塊位址範圍的BIT索引頁3004可處於任何BIT區塊中。BIT索引頁3004包含一BIT索引欄位3018及一頁索引欄位3020。BIT索引欄位3018含有用於在由BIT索引頁3004橫跨之DLBA區塊位址範圍內的所有有效BIT頁的BIT索引項。一BIT索引項與單個BIT頁3002有關,且可含有由該BIT頁編索引之第一個DLBA區塊、含有該BIT頁之BIT區塊位置,及該BIT頁在BIT區塊內之BIT頁位置。
一BIT索引頁3004之頁索引欄位3020含有用於BIT中之所有有效BIT索引頁的頁索引項。存在用於BIT中之每一有效BIT索引頁3004的BIT頁索引項,且該BIT頁索引項可含有由該BIT索引頁編索引之第一個DLBA區塊、含有該BIT索引頁之BIT區塊位置,及該BIT索引頁在BIT區塊內之BIT頁位置。
維護BIT
更新一BIT頁3002以添加或移除來自WBL 3008、PBL 3010及SBL 3012之項。可將對若干項之更新聚集於RAM中之一清單中,且在單個操作中實施於BIT中,其限制條件為該清單可在電力循環後復原至RAM。BIT索引緩衝器欄位在最近寫入之BIT頁中為有效的。只要寫入BIT頁,便在不具有額外程式化之情況下進行更新。在更新BIT索引頁時,將來自BIT索引緩衝器之一或多個項添加至BIT索引頁,且將其自BIT索引緩衝器移除。在最大准許數目之項存在於BIT索引緩衝器中時,更新一或多個BIT索引頁3004。
由BIT頁3002或BIT索引頁3004橫跨之DLBA區塊範圍內所需要的項之數目為可變的,且可隨著時間改變。因此,BIT中之頁溢出或頁被非常些微地充填並不罕見。藉由用於裂開及合併BIT中之頁的方案來管理此等狀況。
當要在BIT頁3002或BIT索引頁3004之更新期間添加項,但在該頁中不具有足夠可用之未使用空間以適應該改變時,將該頁分成兩部分。引入新BIT頁3002或BIT索引頁3004,且為先前為滿之頁及新的空頁判定DLBA區塊範圍,該DLBA區塊範圍將各自給予新BIT頁3002或BIT索引頁3004許多個項,該等項將使其為半滿的。若可能,則接著在單個程式化操作中寫入兩個頁。在該等頁為BIT頁3002之情況下,用於該兩個頁之BIT索引項包括於最末寫入之BIT頁中之索引緩衝器欄位中。在該等頁為BIT索引頁3004之情況下,頁索引項包括於最末寫入之BIT索引頁中之頁索引欄位中。
相反,當具有鄰近DLBA區塊範圍的兩個或兩個以上之BIT頁3002或兩個BIT索引頁3004被些微地充填時,可將該等頁合併成單個頁。在所得單個頁被填充不多於80%時,起始合併。新單個頁之DLBA區塊範圍藉由獨立合併頁所橫跨之範圍來界定,在所合併頁為BIT頁之情況下,在最末寫入之BIT頁中的索引緩衝器欄位中更新新頁及所合併頁之BIT索引項。在該等頁為BIT索引頁之情況下,在最末寫入之BIT索引頁中之頁索引欄位中更新頁索引項。
清除BIT區塊
清除BIT區塊之過程緊密地遵照上文關於SAT區塊所描述之清除過程,且在此處不對其加以重複。
控制區塊
在其他實施例中,BIT及SAT資訊可儲存於同一區塊之不同頁中。此區塊(稱作控制區塊)可經構造,使得一SAT或BIT資訊頁佔用該控制區塊中之一個頁。該控制區塊可由具有整數個頁之頁單元組成,其中每一頁單元係藉由其在該控制區塊內之順序編號來定址。一頁單元在實體記憶體中可具有一個頁之最小大小及一個元頁之最大大小。該控制區塊可含有有效SAT頁、SAT索引頁、BIT頁、BIT索引頁與陳舊頁的任何組合。因此,並非具有獨立SAT區塊及BIT區塊,SAT資訊及BIT資訊兩者可儲存於一個或多個相同區塊中。如同上述獨立SAT及BIT寫入區塊,控制資訊(SAT或BIT資訊)可僅寫入至單個控制寫入區塊,一控制寫入指標將識別用於接收控制資料的下一個順序位置,且在一控制寫入區塊被寫滿時,將一寫入區塊分配為新控制寫入區塊。此外,控制區塊可各自由其在記憶體系統102中之二進位區塊群體中的區塊位址來識別。可以與關於上述分離之SAT及BIT區塊所描述之方式相同的方式來清除控制區塊以產生新的未經寫入之容量,不同之處在於用於控制區塊之重定位區塊可接受與有效SAT或BIT資訊有關的頁。可以與上文關於SAT清除過程所描述之方式相同的方式來實施對供清除之適當粉紅控制區塊的選擇及清除適當粉紅控制區塊的時序。
監視LBA分配狀態
儲存位址重映射演算法記錄僅用於當前由主機分配給有效資料的主機LBA位址的位址映射資訊。因此必需判定主機何時將叢集自資料儲存器解分配,以便準確地維護此映射資訊。
在一實施例中,來自主機檔案系統之命令可將關於經解分配之叢集的資訊提供給儲存位址重映射演算法。舉例而言,已提議「資料集」命令以供用於微軟公司之Vista作業系統中。對「ATA8-ACS2刪除資料通知提議」的提議已由微軟提交給T13。此新命令意欲提供對刪除資料的通知。單個命令可向裝置通知對在相連LBA位址(表示達2GB之陳舊資料)處之資料的刪除。
解譯NTFS元資料
若主機檔案系統命令(諸如,剪切命令)為不可用的,則可藉由追蹤由NTFS寫入之$bitmap 系統檔案之資訊改變來監視LBA分配狀態,該$bitmap 系統檔案含有磁碟區(volume)上之所有叢集之分配狀態的位元映射。現論述在個人電腦(PC)中追蹤$bitmap 改變的一實例。
分割引導區段
分割引導區段為分割上之區段0。如在表3之實例中,位元組偏移0x30處之欄位含有關於主檔案表(MFT)之開頭的邏輯叢集數目。
MFT中之$bitmap記錄
名為$bitmap之系統檔案含有磁碟區上之所有叢集之分配狀態的位元映射。用於$bitmap檔案之記錄在MFT中為記錄編號6。一MFT記錄具有1024個位元組之長度。因此,該$bitmap記錄相對於MFT之開頭具有十進制之12個區段的偏移。在上述實例中,MFT開始於叢集0xC4FD2處或十進制806866處,其為區段十進制6454928。$bitmap檔案記錄因此開始於區段十進制6454940處。
以下資訊存在於$bitmap記錄內(在正描述之實例中)。如在表4之實例中,位元組偏移0x141至0x142處之欄位含有$bitmap檔案之第一資料屬性之叢集的長度。
如在表5之實例中,在位元組偏移0x143至0x145處之欄位含有$bitmap檔案之第一資料屬性的開頭的叢集數目。
如在表6之實例中,位元組偏移0x147至0x148處之欄位含有$bitmap檔案之第二資料屬性之叢集的長度。
如在表7之實例中,在位元組偏移0x149至0x14B處之欄位含有$bitmap檔案之第一資料屬性的開頭與第二資料屬性的開頭之間的叢集數目。
$bitmap檔案之資料屬性
$bitmap檔案之資料屬性內的區段按邏輯叢集編號之次序來含有磁碟區中之每一叢集的分配狀態的位元映射。「1」表示一叢集已由檔案系統分配給資料儲存器,「0」表示叢集為空閒的。位元映射中之每一位元組與8個叢集或64個十進制區段之邏輯範圍有關。位元映射中之每一區段與0x1000(十進制4096)個叢集或0x8000(十進制32768)個區段之邏輯範圍有關。位元映射中之每一叢集與0x8000(十進制32768)個叢集或0x40000(十進制262144)個區段之邏輯範圍有關。
維護叢集分配狀態
只要將來自主機之寫入操作導向至$bitmap檔案之資料屬性內的區段,則必須自儲存裝置讀取該區段之先前型式,及其與剛由主機寫入之資料進行比較的資料。必須識別已自「1」狀態輪轉至「0」狀態之所有位元,及判定已由主機解分配之叢集的相應邏輯位址。只要一命令(諸如,所提議之剪切命令)或NTFS元資料追蹤指示已由主機進行叢集解分配,則必須更新儲存位址表(SAT)以記錄所指定叢集之位址的解分配。
LBA位址之整個區塊至DLBA段的SAT映射
與圖17所示之僅有效主機LBA段至DLBA位址段之映射相反,產生SAT之替代方法說明於圖31至圖32中,其中對LBA位址之巨型區塊中之所有LBA位址進行映射而無關於該LBA位址是否與有效資料相關聯。代替在SAT中產生用於與有效資料相關聯之每一LBA位址段的獨立LBA項,可在SAT中映射LBA位址之巨型區塊,使得每一LBA位址巨型區塊為SAT上之單個項。
參看圖31,說明DLBA空間中之巨型區塊3102,其中單個連續LBA段映射至該巨型區塊中之DLBA空間。為簡化說明,假設巨型區塊3102在第一個巨型頁3104之開頭(庫1及2之P1)中包括陳舊資料。將一連續LBA位址段(見圖32)按如先前所述每庫一元頁地跨越所有庫來使LBA段「成條」之巨型頁次序映射至開始於庫3之元頁P1至庫3之元頁P3處的DLBA位址。圖31中之巨型區塊的其餘部分含有陳舊資料。如所說明,每一庫含有垂直地展示之其自有DLBA段(DLBA段B1至B4),該DLBA段因為沿著連續LBA位址之每一連續巨型頁的(在此說明中為水平的)巨型頁寫入演算法而在各別庫中之DLBA段的元頁之間在LBA位址上為不連續的。參看圖32,LBA位址空間3202之巨型區塊說明由元頁破壞且用DLBA段及該DLBA段內之頁標識之連續LBA段3204,DLBA段展示於圖31中。因此,LBA段3204中之第一個元頁映射至DLBA段B1,由LBA段3204之下一個元頁跟著的第一個元頁(庫3)映射至DLBA段B2,頁1(庫4)依此類推。
如圖32所說明,可將LBA位址空間中之完整LBA位址巨型區塊記錄為SAT中之單個LBA項3206。在此實施例中,LBA項3206列出LBA位址巨型區塊所映射至之DLBA段的數目及在同一SAT頁中第一個DLBA項的指標3208。可將一LBA位址巨型區塊映射至該LBA位址巨型區塊中之最大數目的叢集,此取決於儲存於記憶體裝置中之資料的分裂程度。
在圖32之實例中,LBA位址巨型區塊包括6個LBA段,其中4個段分配給有效資料(開始於LBA偏移L1至L9處的有陰影部分),且2個段為未經分配之位址段(開始於LBA偏移0及L10處的空白部分)。用於LBA位址巨型區塊之相應DLBA項3210使DLBA段之DLBA位址(由DLBA區塊、位址偏移(P1-P3)及長度表示)與相應LBA偏移相關。與在上文參看圖17所論述的記錄用於每一LBA段之獨立LBA項的SAT之型式(其中僅記錄與有效資料相關聯之LBA段)不同,記錄在一LBA位址巨型區塊中之每一LBA段。因此,記錄LBA位址區塊480中之當前未分配給有效資料的LBA段以及分配給有效資料之LBA段。在圖32所示之SAT頁之DLBA項部分3210中,使標記一組未經分配之LBA位址的開頭之LBA偏移與DLBA位址空間中之「FFFFFFFF」值成對。此表示一指示未經分配之位址的保留值的預設十六進制數。先前所述之相同總體SAT結構及功能性以及參看圖22所論述之基本SAT層級適用於LBA位址巨型區塊映射實施例,然而,SAT頁表示LBA位址巨型區塊至DLBA段映射資訊而非個別LBA段至DLBA段資訊。又,在此實施例中,SAT索引頁儲存LBA位址區塊至SAT頁映射資訊。
參看圖33,展示樣本LBA位址格式3300。位址格式3300展示為在長度上為32個位元,但可使用許多位址長度中之任一者。可藉由控制器108在記憶體系統102中將最低有效位元處理為與元頁中之LBA位址3302有關,且可將該位址中接下來之位元處理為表示庫識別符3304。在存在4個庫107A至107D之上述實例中,此可為2個位元之位址。可將接下來之位元處理為資料將與其相關聯之巨型區塊中之頁3306,且可將最後位元解譯為巨型區塊識別符3308。在一實施例中,控制器可去除庫識別符3304之位元,使得儘管本文所論述之巨型區塊寫入演算法將導致每一庫內之LBA位址的交錯,但DLBA位址在一庫內可為連續的。再次參看圖31及巨型區塊寫入演算法可更佳地理解此。在將主機資料寫入至記憶體系統102且一當前寫入巨型區塊之第一個可用部分為庫3之元頁P1時,在將位址重映射至庫3之P1且接著在庫3之P1被寫滿時重映射至庫4之P1時,控制器108將移除庫識別符位元。在寫入演算法繼續相連地跨越巨型區塊之下一個巨型頁(庫1至4中之P2,按庫次序)來使主機資料成條時,可應用相同定址程序。此將導致在注視每一順次頁時在每一庫中之連續DLBA定址(在一庫內自左至右及垂直向下)。圖17及圖32之SAT型式將追蹤庫資訊,使得可自記憶體裝置準確地讀取資料,但可藉由每一區塊及庫中之連續DLBA位址來管理對每一庫中之主機資料的清除操作。
上文之論述主要集中於儲存位址重映射之實施,其中需要自主機LBA位址空間至DLBA位址空間(亦稱作儲存LBA位址空間)的邏輯至邏輯映射。此邏輯至邏輯映射可用於圖11及圖12之組態中。將已重映射至DLBA位址之主機資料及儲存裝置產生之資料(例如,SAT及BIT)寫入至當前對應於DLBA位址空間中之元區塊的各別庫中之元區塊的實體位址。此表(在本文中稱作群組位址表或GAT)可為固定大小之表,其具有用於DLBA位址空間中之每一邏輯區塊及一元區塊之實體區塊間隔尺寸的一個項。在一實施例中,每一庫107A至107D具有其自有GAT,使得可追蹤映射至每一庫中之實體區塊的邏輯區塊。
邏輯至實體映射
如上所述,在圖10之實施例中,將儲存位址重映射(STAR)演算法併入至記憶體裝置之記憶體管理器中而非如分別在圖11至圖12中般併入於記憶體裝置或主機上的獨立應用程式中。控制器108將主機資料自主機LBA直接映射至記憶體系統102中之每一庫107A至107D中之實體位址。在圖10之實施例中,上述之DLBA位址由實體記憶體位址而非中間DLBA(儲存LBA)位址替換,且在SAT中,DLBA段可由資料段替換。將主機資料寫入至沿著跨越每一庫之巨型頁之「條帶」中的實體位址之巨型區塊保持與關於實體區塊之每一庫的獨立粉紅區塊選擇及清除的情況相同。圖10之邏輯至實體實施例亦包括參考實體位址的相同SAT及BIT(或控制)元區塊結構及代替先前論述之DLBA位址及DLBA段的實體資料段。圖10之配置中之儲存重映射演算法為記憶體系統102中之記憶體控制器108的部分,而非記憶體系統102或主機100(分別為圖11及圖12)上之獨立應用程式。
在習知邏輯至實體區塊映射之情況下,只要將主機資料之分裂獨立地寫入至邏輯位址之區塊,資料之主體均必須要在廢料收集操作中被重定位。藉由儲存位址重映射演算法,始終將資料寫入至順序位址,直至一區塊(邏輯或實體)被填滿,且因此不需要廢料收集為止。本文所揭示之儲存位址重映射中之清除操作並不藉由寫入過程來觸發而僅回應於使資料變為陳舊而觸發。因此,在具有本文所描述之儲存位址重映射功能性的系統中,資料重定位附加項應較低。偏向具有最少量或至少少於臨限量之有效資料的粉紅區塊及可獨立清除之獨立庫的清除操作的組合可進一步輔助減少需要加以重定位之有效資料的量及相關聯之附加項。
已描述用於在多庫記憶體中進行儲存位址重映射的系統及方法,其在隨機寫入應用中可增加記憶體系統之效能,此由需要將短資料叢發寫入至裝置之LBA位址空間中之無關區域來表徵,可在個人電腦之固態磁碟應用中體驗到。在所揭示之儲存位址重映射的某些實施例中,將主機資料自由主機指派之第一邏輯位址映射至第二邏輯位址空間中之具有相連邏輯位址之元區塊的巨型區塊。在使與經充分程式化之位址區塊相關聯的資料變為陳舊時,揭示一清除程序,其對於每一庫獨立地自具有最少量之有效資料或具有少於臨限量之有效資料的一群粉紅區塊選擇一粉紅區塊且重定位彼等區塊中之有效資料以便釋放彼等區塊以供寫入更多資料。將一庫中之一粉紅區塊中之有效資料按其在選定粉紅區塊中出現之次序而無關於由主機指派之邏輯位址來相連地寫入至同一庫中之重定位區塊。以此方式,可藉由非故意地合併由主機指派之邏輯位址段來減少附加項。使用一儲存位址表來追蹤由主機指派之邏輯位址與第二邏輯位址及相關庫之間的映射,以及映射歸因於清除的隨後改變。在由主機指派之邏輯位址直接映射至實體位址中的實施例中,該儲存位址表追蹤彼關係,且維護一區塊資訊表以追蹤(例如)一特定區塊為具有有效及陳舊資料之粉紅區塊還是僅具有未經寫入之容量的白區塊。
因此,意欲將前述詳細描述視為說明性而非限制性的,且應理解,是以下申請專利範圍(包括所有等效物)意欲界定本發明之精神及範疇。
100...主機系統/主機
102...記憶體系統/記憶體
103...配合部分
104...配合部分
105...應用部分
106...驅動器部分
107...多庫快閃記憶體/多庫記憶體系統
107A...記憶體庫
107B...記憶體庫
107C...記憶體庫
107D...記憶體庫
108...控制器電路/控制器/系統控制器
109...處理器/CPU
110...檔案系統
202...內部資料匯流排
204...記憶體介面
206...處理器
210...開機碼ROM
212...RAM緩衝器/RAM
214...錯誤校正碼(ECC)模組
216...主機介面
218...內部時鐘
302...系統匯流排
304...資料部分
306...位址部分
308...控制及狀態部分/匯流排部分
310...平面/記憶體單元陣列
312...平面/記憶體單元陣列
314...行控制電路
316...行控制電路
318...位元線
320...位元線
322...字線
324...列控制電路
326...源電壓控制電路
328...源電壓控制電路
330...p井電壓控制電路
332...p井電壓控制電路
334...資料輸入/輸出電路
336...資料輸入/輸出電路
338...線
340...線
342...介面電路/介面
344...狀態機
346...控制線
348...控制線
350...控制線
352...控制線
354...控制線
356...線
402...線
404...線
406...線
408...線
410...記憶體單元串
412...記憶體單元串
414...記憶體單元串
416...記憶體單元串
418...記憶體單元串
420...記憶體單元串
422...記憶體單元串
424...記憶體單元串
426...電荷儲存記憶體單元
428...電荷儲存記憶體單元
430...電荷儲存記憶體單元
432...電荷儲存記憶體單元
434...選擇電晶體
436...選擇電晶體
438...字線/字線及控制閘極線
440...字線/字線及控制閘極線
442...字線/字線及控制閘極線
444...字線/字線及控制閘極線
446...閘極/字線及控制閘極線
450...閘極/字線及控制閘極線
452...第一區塊
454...第二區塊
502...平面或子陣列
504...平面或子陣列
506...平面或子陣列
508...平面或子陣列
510...區塊
512...區塊
514...區塊
516...區塊
518...元區塊
520...第二元區塊
522...區塊
524...區塊
526...區塊
528...區塊
602...元頁
702...元區塊
704...巨型區塊
706...元頁
708...巨型頁
800...連續邏輯位址空間
802...經分配叢集
804...空閒叢集
900...叢集/區塊
902...紅區塊
904...白區塊
906...粉紅區塊
1002...舊版主機
1004...記憶體系統
1006...記憶體管理
1102...儲存裝置
1104...記憶體管理器
1202...主機
1204...舊版儲存裝置
1600...開放寫入巨型區塊
1602...區塊
1604...區塊
1606...區塊
1608...區塊
1702...LBA段
1704...儲存位址表
1706...LBA項
1708...DLBA項
1710...第一個DLBA項
1802...區塊
1804...區塊
1806...區塊
1808...區塊
1902...DLBA位址空間
1904...DLBA寫入區塊
1906...更新區塊
1908...重定位區塊
1910...實體位址空間
2202...DLBA段
2204...LBA段
2206...SAT頁
2208...SAT索引頁
2210...主版頁索引
2300...樣本SAT寫入區塊
2302...SAT寫入指標
2304...索引緩衝器欄位
2306...LBA欄位
2308...DLBA欄位
2310...控制指標
2312...LBA項
2314...DLBA項
2316...SAT索引項
2318...SAT索引欄位
2320...SAT索引項
2402...第一個LBA
2404...LBA段的長度
2406...DLBA項編號及庫編號
2502...第一個DLBA位址
2504...LBA偏移
2602...第一個LBA
2604...最末LBA
2606...SAT區塊編號及庫編號
2608...頁編號
2702...目標LBA
3000...BIT寫入區塊
3002...BIT頁
3004...BIT索引頁
3006...BIT寫入指標
3008...白區塊清單欄位
3010...粉紅區塊清單欄位
3012...SAT區塊清單欄位
3014...索引緩衝器欄位
3016...控制指標
3018...BIT索引欄位
3020...頁索引欄位
3102...巨型區塊
3104...第一個巨型頁
3202...LBA位址空間
3204...LBA段
3206...LBA項
3208...第一個DLBA項的指標
3210...DLBA項
3300...樣本LBA位址格式
3302...LBA位址
3304...庫識別符
3306...巨型區塊中之頁
3308...巨型區塊識別符
P0...頁
P1...頁
P2...頁
P3...頁
P4...頁
P5...頁
P6...頁
P7...頁
圖1說明與具有多庫非揮發性記憶體之記憶體系統連接的主機;
圖2為供用於圖1之多庫非揮發性記憶體中的實例快閃記憶體系統控制器的實例方塊圖;
圖3為適合作為圖1所說明之快閃記憶體庫中之一者的一實例快閃記憶體庫;
圖4為可用於圖3之記憶體庫中的記憶體單元陣列之代表性電路圖;
圖5說明圖3之記憶體庫的實例實體記憶體組織;
圖6展示圖5之實體記憶體之部分的展開圖;
圖7說明圖1之多庫記憶體中的多個庫之實體記憶體組織;
圖8說明主機LBA位址空間中之經分配及空閒叢集之典型樣式;
圖9說明根據一所揭示實施例的按區塊分配叢集的樣式;
圖10說明主機與記憶體系統之間的儲存位址重映射的實施例,其中記憶體系統之記憶體管理器併有儲存位址重映射功能;
圖11說明圖10所示之儲存位址重映射的替代實施例;
圖12說明儲存位址重映射的實施例,其中該功能性位於主機上;
圖13為用於圖10至圖12之系統中的多庫寫入演算法的流程圖;
圖14為記憶體系統之個別庫內叢集之區塊的分配之狀態圖;
圖15為可獨立地應用於多庫記憶體系統之每一庫的清除操作的流程圖;
圖16說明一巨型區塊中之DLBA段分布;
圖17說明用於圖16之DLBA分布的巨型區塊寫入程序及儲存位址表產生;
圖18說明在已清除圖16之巨型區塊中之區塊後DLBA段之實例重配置;
圖19說明多庫記憶體中之一庫的DLBA位址空間中之清除操作及用於彼庫之實體位址空間中的相應更新區塊;
圖20說明圖19之庫之DLBA空間中的第二清除操作;
圖21為用於清除操作之粉紅區塊選擇過程的流程圖;
圖22說明在主機邏輯位址重映射至第二邏輯位址空間的配置中的儲存位址表(SAT)層級;
圖23說明用以追蹤邏輯至邏輯映射的儲存位址表(SAT)寫入區塊;
圖24為用於圖23之SAT表之SAT頁中的LBA項;
圖25為用於圖23之SAT表之SAT頁中的DLBA項;
圖26為用於圖23之SAT表之SAT頁中的SAT索引項;
圖27說明用於圖11及圖12之儲存位址重映射實施例中的儲存位址表轉譯程序;
圖28說明SAT區塊轉變之狀態圖;
圖29為用於判定SAT區塊清除次序的過程的流程圖;
圖30說明區塊資訊表(BIT)寫入區塊;
圖31說明一巨型區塊中之DLBA段分布;
圖32說明將一完整邏輯位址巨型區塊映射至DLBA段的SAT之實施例;及
圖33說明用於一LBA位址之位址格式的實例。
(無元件符號說明)

Claims (19)

  1. 一種在一主機系統與一可重新程式化之非揮發性大量儲存系統之間傳送資料之方法,該大量儲存系統具有複數個記憶體單元庫,其中該複數個庫中之每一者配置成可一起抹除之記憶體單元區塊,該方法包含:接收與由該主機系統指派之主機邏輯區塊位址LBA位址相關聯的資料;分配相連儲存LBA位址之一巨型區塊以供對與該等主機LBA位址相關聯之該資料定址,相連儲存LBA位址之該巨型區塊包含該複數個記憶體單元庫中之每一者中的至少一記憶體單元區塊且僅對在分配後未經寫入之容量進行定址;將用於該所接收資料之該等主機LBA位址中之每一者重映射至相連儲存LBA位址之該巨型區塊,其中每一儲存LBA位址係按接收到該所接收資料之一次序而無關於該主機LBA位址來以一相連方式順序地指派給該所接收資料;及獨立於清除該複數個庫中之一第二者中之一區塊來清除該複數個庫中之一第一者中之一區塊,其中清除該第一庫中之該區塊包含將用於來自該第一庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給一第一重定位區塊中之相連儲存LBA位址,且其中清除該第二庫中之該區塊包含將用於來自該第二庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給 一第二重定位區塊中之相連儲存LBA位址。
  2. 如請求項1之方法,其中清除該第一庫中之該區塊進一步包含將用於來自該第一庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址僅重新指派至該第一庫中之重定位區塊,且其中清除該第二區塊包含將用於來自該第二庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址僅重新指派至該第二庫中之重定位區塊。
  3. 如請求項2之方法,其進一步包含將該第一庫中之相連儲存LBA位址之一區塊分配為一新重定位區塊,相連儲存LBA位址之該新重定位區塊僅與在分配後未經寫入之容量相關聯,其中對該新重定位區塊之該分配僅在完全指派該第一庫中之該重定位區塊中之儲存LBA位址後才進行。
  4. 如請求項1之方法,其中將用於該所接收資料之該等主機LBA位址中之每一者重映射至相連儲存LBA位址之該巨型區塊包含使儲存LBA位址按該巨型區塊之巨型頁次序來與主機LBA位址相關聯,其中一巨型頁包含該巨型區塊之每一區塊中的一元頁。
  5. 如請求項1之方法,其進一步包含將識別主機LBA位址與該複數個庫中之每一者的儲存LBA位址之一關係的相關資訊記錄於一單個儲存位址表中。
  6. 如請求項5之方法,其中該相關資訊僅包含與有效資料相關聯之主機LBA位址段及映射至該等主機LBA位址段的儲存LBA位址。
  7. 如請求項5之方法,其中該相關資訊包含用於主機LBA位址之一巨型區塊中的所有主機LBA位址的映射資訊。
  8. 如請求項5之方法,其中該單個儲存位址表包含至少一儲存位址表區塊,該方法進一步包含在一先前儲存位址表寫入區塊已完全指派給相關資訊時分配一僅與在分配後未經寫入之容量相關聯的新儲存位址表寫入區塊。
  9. 如請求項8之方法,其進一步包含在不同於含有該先前儲存位址表寫入區塊之一庫的一庫中分配該新儲存位址表寫入區塊。
  10. 一種在一主機系統與一可重新程式化之非揮發性大量儲存系統之間傳送資料之方法,該大量儲存系統具有複數個記憶體單元庫,其中該複數個庫中之每一者配置成可一起抹除之記憶體單元區塊,該方法包含:將用於所接收主機資料之主機邏輯區塊位址(LBA)位址重映射至儲存LBA位址之一巨型區塊,儲存LBA位址之該巨型區塊包含該複數個記憶體單元庫中之每一者中的至少一記憶體單元區塊,其中將用於所接收資料之主機LBA位址按接收到該所接收資料之一次序而無關於該主機LBA位址來按該巨型區塊內之巨型頁次序以一相連方式來指派給儲存LBA位址,每一巨型頁包含該巨型區塊之該等區塊中之每一者中的一元頁;及在該複數個庫中之每一者中獨立地執行清除操作,其中一清除操作包含將用於來自一特定庫中之一區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給該特 定庫內之一重定位區塊中的相連儲存LBA位址。
  11. 如請求項10之方法,其進一步包含:識別該複數個庫中之每一者中的粉紅區塊,其中每一粉紅區塊包含一與有效資料及陳舊資料兩者相關聯的被寫滿之儲存LBA位址區塊;及對於每一庫,獨立地選擇該庫內之該等經識別之粉紅區塊中之一者以供進行下一個清除操作。
  12. 如請求項11之方法,其進一步包含在該複數個庫中之每一者中維護一區塊資訊表,用於一庫之該區塊資訊表包含該庫內之粉紅區塊之一清單。
  13. 如請求項10之方法,其中獨立地執行清除操作包含在該複數個庫中之一者中基於一第一臨限值及在該複數個庫中之一第二者中基於一第二臨限值來起始清除操作。
  14. 如請求項10之方法,其進一步包含將識別主機LBA位址與該複數個庫中之每一者的儲存LBA位址之一關係的相關資訊記錄於一單個儲存位址表中。
  15. 如請求項14之方法,其中該相關資訊僅包含與有效資料相關聯之主機LBA位址段及映射至該等主機LBA位址段的儲存LBA位址。
  16. 如請求項14之方法,其中該相關資訊包含用於主機LBA位址之一巨型區塊中的所有主機LBA位址的映射資訊。
  17. 如請求項14之方法,其中該單個儲存位址表包含至少一儲存位址表區塊,該方法進一步包含在一先前儲存位址表寫入區塊已完全指派給相關資訊時分配一僅與在分配 後未經寫入之容量相關聯的新儲存位址表寫入區塊。
  18. 如請求項17之方法,其進一步包含在不同於含有該先前儲存位址表寫入區塊之一庫的一庫中分配該新儲存位址表寫入區塊。
  19. 一種大量儲存記憶體系統,其包含:複數個可重新程式化之非揮發性記憶體單元庫,其中該複數個庫中之每一者配置成可一起抹除之記憶體單元區塊;一經調適可從一主機系統接收資料之介面,該資料係依主機邏輯區塊位址LBA而定址;及一可與該介面通信之控制器,該控制器經配置以:透過該介面接收與由該主機系統指派之LBA位址相關聯的資料;分配相連儲存LBA位址之一巨型區塊以供對與該等主機LBA位址相關聯之該資料定址,相連儲存LBA位址之該巨型區塊包含該複數個記憶體單元庫中之每一者中的至少一記憶體單元區塊且僅對在分配後未經寫入之容量進行定址;將用於該所接收資料之該等主機LBA位址中之每一者重映射至相連儲存LBA位址之該巨型區塊,其中每一儲存LBA位址係按接收到該所接收資料之一次序而無關於該主機LBA位址來以一相連方式順序地指派給該所接收資料;及獨立於清除該複數個庫中之一第二者中之一區塊來 清除該複數個庫中之一第一者中之一區塊,其中清除該第一庫中之該區塊包含將用於來自該第一庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給一第一重定位區塊中之相連儲存LBA位址,且其中清除該第二庫中之該區塊包含將用於來自該第二庫中之該區塊的儲存LBA位址之有效資料的主機LBA位址重新指派給一第二重定位區塊中之相連儲存LBA位址。
TW098113544A 2008-04-25 2009-04-23 多庫記憶體裝置之儲存位址重映射之方法及系統 TWI437441B (zh)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US12/110,050 US20090271562A1 (en) 2008-04-25 2008-04-25 Method and system for storage address re-mapping for a multi-bank memory device

Publications (2)

Publication Number Publication Date
TW200951722A TW200951722A (en) 2009-12-16
TWI437441B true TWI437441B (zh) 2014-05-11

Family

ID=40792849

Family Applications (1)

Application Number Title Priority Date Filing Date
TW098113544A TWI437441B (zh) 2008-04-25 2009-04-23 多庫記憶體裝置之儲存位址重映射之方法及系統

Country Status (6)

Country Link
US (2) US20090271562A1 (zh)
EP (1) EP2286341B1 (zh)
JP (1) JP2011519095A (zh)
KR (1) KR20100139149A (zh)
TW (1) TWI437441B (zh)
WO (1) WO2009131851A1 (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI845275B (zh) * 2023-04-24 2024-06-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Families Citing this family (169)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US8843691B2 (en) 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101083673B1 (ko) * 2008-10-01 2011-11-16 주식회사 하이닉스반도체 반도체 스토리지 시스템 및 그 제어 방법
US8239614B2 (en) 2009-03-04 2012-08-07 Micron Technology, Inc. Memory super block allocation
US8873550B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Task queuing in a multi-flow network processor architecture
US8515965B2 (en) 2010-05-18 2013-08-20 Lsi Corporation Concurrent linked-list traversal for real-time hash processing in multi-core, multi-thread network processors
US8705531B2 (en) 2010-05-18 2014-04-22 Lsi Corporation Multicast address learning in an input/output adapter of a network processor
US9444757B2 (en) 2009-04-27 2016-09-13 Intel Corporation Dynamic configuration of processing modules in a network communications processor architecture
US8874878B2 (en) 2010-05-18 2014-10-28 Lsi Corporation Thread synchronization in a multi-thread, multi-flow network communications processor architecture
US8321385B2 (en) * 2010-03-12 2012-11-27 Lsi Corporation Hash processing in a network communications processor architecture
US9461930B2 (en) 2009-04-27 2016-10-04 Intel Corporation Modifying data streams without reordering in a multi-thread, multi-flow network processor
US9727508B2 (en) 2009-04-27 2017-08-08 Intel Corporation Address learning and aging for network bridging in a network processor
US9152564B2 (en) 2010-05-18 2015-10-06 Intel Corporation Early cache eviction in a multi-flow network processor architecture
US8910168B2 (en) 2009-04-27 2014-12-09 Lsi Corporation Task backpressure and deletion in a multi-flow network processor architecture
US8949578B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Sharing of internal pipeline resources of a network processor with external devices
US8949582B2 (en) 2009-04-27 2015-02-03 Lsi Corporation Changing a flow identifier of a packet in a multi-thread, multi-flow network processor
US8286004B2 (en) * 2009-10-09 2012-10-09 Lsi Corporation Saving encryption keys in one-time programmable memory
US8219776B2 (en) * 2009-09-23 2012-07-10 Lsi Corporation Logical-to-physical address translation for solid state disks
US20100306451A1 (en) * 2009-06-01 2010-12-02 Joshua Johnson Architecture for nand flash constraint enforcement
US8555141B2 (en) * 2009-06-04 2013-10-08 Lsi Corporation Flash memory organization
US8321639B2 (en) * 2009-12-30 2012-11-27 Lsi Corporation Command tracking for direct access block storage devices
US8245112B2 (en) * 2009-06-04 2012-08-14 Lsi Corporation Flash memory organization
US8166258B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Skip operations for solid state disks
US8200857B2 (en) * 2009-11-30 2012-06-12 Lsi Corporation Coalescing multiple contexts into a single data transfer in a media controller architecture
US8166233B2 (en) * 2009-07-24 2012-04-24 Lsi Corporation Garbage collection for solid state disks
US20100318720A1 (en) * 2009-06-16 2010-12-16 Saranyan Rajagopalan Multi-Bank Non-Volatile Memory System with Satellite File System
US9753847B2 (en) * 2009-10-27 2017-09-05 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential, random, and system data to reduce garbage collection for page based mapping
US9110594B2 (en) * 2009-11-04 2015-08-18 Seagate Technology Llc File management system for devices containing solid-state media
US8949515B2 (en) 2009-12-03 2015-02-03 Hitachi, Ltd. Storage device and memory controller
US8473669B2 (en) * 2009-12-07 2013-06-25 Sandisk Technologies Inc. Method and system for concurrent background and foreground operations in a non-volatile memory array
TWI484334B (zh) * 2009-12-24 2015-05-11 Univ Nat Taiwan 非揮發記憶體的區域式管理方法
US8316176B1 (en) * 2010-02-17 2012-11-20 Western Digital Technologies, Inc. Non-volatile semiconductor memory segregating sequential data during garbage collection to reduce write amplification
US8725931B1 (en) 2010-03-26 2014-05-13 Western Digital Technologies, Inc. System and method for managing the execution of memory commands in a solid-state memory
US9563397B1 (en) 2010-05-05 2017-02-07 Western Digital Technologies, Inc. Disk drive using non-volatile cache when garbage collecting log structured writes
US8782327B1 (en) 2010-05-11 2014-07-15 Western Digital Technologies, Inc. System and method for managing execution of internal commands and host commands in a solid-state memory
US9026716B2 (en) * 2010-05-12 2015-05-05 Western Digital Technologies, Inc. System and method for managing garbage collection in solid-state memory
US9104546B2 (en) * 2010-05-24 2015-08-11 Silicon Motion Inc. Method for performing block management using dynamic threshold, and associated memory device and controller thereof
US8341339B1 (en) 2010-06-14 2012-12-25 Western Digital Technologies, Inc. Hybrid drive garbage collecting a non-volatile semiconductor memory by migrating valid data to a disk
US8959284B1 (en) 2010-06-28 2015-02-17 Western Digital Technologies, Inc. Disk drive steering write data to write cache based on workload
US9146875B1 (en) 2010-08-09 2015-09-29 Western Digital Technologies, Inc. Hybrid drive converting non-volatile semiconductor memory to read only based on life remaining
US9058280B1 (en) 2010-08-13 2015-06-16 Western Digital Technologies, Inc. Hybrid drive migrating data from disk to non-volatile semiconductor memory based on accumulated access time
US8639872B1 (en) 2010-08-13 2014-01-28 Western Digital Technologies, Inc. Hybrid drive comprising write cache spanning non-volatile semiconductor memory and disk
US9268499B1 (en) 2010-08-13 2016-02-23 Western Digital Technologies, Inc. Hybrid drive migrating high workload data from disk to non-volatile semiconductor memory
US8775720B1 (en) 2010-08-31 2014-07-08 Western Digital Technologies, Inc. Hybrid drive balancing execution times for non-volatile semiconductor memory and disk
US8683295B1 (en) 2010-08-31 2014-03-25 Western Digital Technologies, Inc. Hybrid drive writing extended error correction code symbols to disk for data sectors stored in non-volatile semiconductor memory
US8782334B1 (en) 2010-09-10 2014-07-15 Western Digital Technologies, Inc. Hybrid drive copying disk cache to non-volatile semiconductor memory
US9021192B1 (en) 2010-09-21 2015-04-28 Western Digital Technologies, Inc. System and method for enhancing processing of memory access requests
US9164886B1 (en) 2010-09-21 2015-10-20 Western Digital Technologies, Inc. System and method for multistage processing in a memory storage subsystem
US8825976B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive executing biased migration policy during host boot to migrate data to a non-volatile semiconductor memory
US8825977B1 (en) 2010-09-28 2014-09-02 Western Digital Technologies, Inc. Hybrid drive writing copy of data to disk when non-volatile semiconductor memory nears end of life
US8670205B1 (en) 2010-09-29 2014-03-11 Western Digital Technologies, Inc. Hybrid drive changing power mode of disk channel when frequency of write data exceeds a threshold
US8699171B1 (en) 2010-09-30 2014-04-15 Western Digital Technologies, Inc. Disk drive selecting head for write operation based on environmental condition
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8427771B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive storing copy of data in non-volatile semiconductor memory for suspect disk data sectors
US8429343B1 (en) 2010-10-21 2013-04-23 Western Digital Technologies, Inc. Hybrid drive employing non-volatile semiconductor memory to facilitate refreshing disk
US8612798B1 (en) 2010-10-21 2013-12-17 Western Digital Technologies, Inc. Hybrid drive storing write data in non-volatile semiconductor memory if write verify of disk fails
US8560759B1 (en) 2010-10-25 2013-10-15 Western Digital Technologies, Inc. Hybrid drive storing redundant copies of data on disk and in non-volatile semiconductor memory based on read frequency
US9069475B1 (en) 2010-10-26 2015-06-30 Western Digital Technologies, Inc. Hybrid drive selectively spinning up disk when powered on
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
US8458133B2 (en) 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
US9092160B2 (en) * 2011-02-08 2015-07-28 Seagate Technology Llc Selective enablement of operating modes or features via host transfer rate detection
US9021215B2 (en) 2011-03-21 2015-04-28 Apple Inc. Storage system exporting internal storage rules
TWI454908B (zh) * 2011-03-28 2014-10-01 Phison Electronics Corp 記憶體組態方法、記憶體控制器與記憶體儲存裝置
US9361044B2 (en) * 2011-03-28 2016-06-07 Western Digital Technologies, Inc. Power-safe data management system
US9311229B2 (en) * 2011-03-29 2016-04-12 Blackberry Limited System and method for managing flash memory
US8849777B1 (en) * 2011-06-30 2014-09-30 Emc Corporation File deletion detection in key value databases for virtual backups
US8843443B1 (en) 2011-06-30 2014-09-23 Emc Corporation Efficient backup of virtual data
JP5579135B2 (ja) * 2011-07-29 2014-08-27 株式会社東芝 データ記憶装置、メモリ制御装置及びメモリ制御方法
US8930614B2 (en) 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
US9098399B2 (en) 2011-08-31 2015-08-04 SMART Storage Systems, Inc. Electronic system with storage management mechanism and method of operation thereof
US9021319B2 (en) 2011-09-02 2015-04-28 SMART Storage Systems, Inc. Non-volatile memory management system with load leveling and method of operation thereof
US9063844B2 (en) 2011-09-02 2015-06-23 SMART Storage Systems, Inc. Non-volatile memory management system with time measure mechanism and method of operation thereof
US8630056B1 (en) 2011-09-12 2014-01-14 Western Digital Technologies, Inc. Hybrid drive adjusting spin-up profile based on cache status of non-volatile semiconductor memory
CN104115136B (zh) 2011-09-30 2017-12-08 英特尔公司 非易失性随机访问存储器中存储bios的装置、方法和系统
CN108549609B (zh) 2011-09-30 2022-06-21 英特尔公司 作为传统大容量存储设备的替代的非易失性随机存取存储器(nvram)
WO2013048485A1 (en) 2011-09-30 2013-04-04 Intel Corporation Autonomous initialization of non-volatile random access memory in a computer system
EP2761468B1 (en) * 2011-09-30 2019-12-11 Intel Corporation Platform storage hierarchy with non-volatile random access memory having configurable partitions
US8909889B1 (en) 2011-10-10 2014-12-09 Western Digital Technologies, Inc. Method and apparatus for servicing host commands by a disk drive
US8977804B1 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Varying data redundancy in storage systems
US8977803B2 (en) 2011-11-21 2015-03-10 Western Digital Technologies, Inc. Disk drive data caching using a multi-tiered memory
US9268701B1 (en) 2011-11-21 2016-02-23 Western Digital Technologies, Inc. Caching of data in data storage systems by managing the size of read and write cache based on a measurement of cache reliability
US8700961B2 (en) 2011-12-20 2014-04-15 Sandisk Technologies Inc. Controller and method for virtual LUN assignment for improved memory bank mapping
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8904091B1 (en) 2011-12-22 2014-12-02 Western Digital Technologies, Inc. High performance media transport manager architecture for data storage systems
US8996839B1 (en) 2012-01-23 2015-03-31 Western Digital Technologies, Inc. Data storage device aligning partition to boundary of sector when partition offset correlates with offset of write commands
US9063838B1 (en) * 2012-01-23 2015-06-23 Western Digital Technologies, Inc. Data storage device shifting data chunks of alignment zone relative to sector boundaries
US9239781B2 (en) * 2012-02-07 2016-01-19 SMART Storage Systems, Inc. Storage control system with erase block mechanism and method of operation thereof
US8949512B2 (en) * 2012-02-17 2015-02-03 Apple Inc. Trim token journaling
US9311251B2 (en) 2012-08-27 2016-04-12 Apple Inc. System cache with sticky allocation
TWI492051B (zh) * 2012-09-05 2015-07-11 Silicon Motion Inc 資料儲存裝置與快閃記憶體控制方法
TW201413450A (zh) * 2012-09-25 2014-04-01 Phison Electronics Corp 資料儲存方法、記憶體控制器與記憶體儲存裝置
US20140089600A1 (en) * 2012-09-27 2014-03-27 Apple Inc. System cache with data pending state
US8959281B1 (en) 2012-11-09 2015-02-17 Western Digital Technologies, Inc. Data management for a storage device
US9671962B2 (en) 2012-11-30 2017-06-06 Sandisk Technologies Llc Storage control system with data management mechanism of parity and method of operation thereof
US9430376B2 (en) 2012-12-26 2016-08-30 Western Digital Technologies, Inc. Priority-based garbage collection for data storage systems
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
US9348746B2 (en) 2012-12-31 2016-05-24 Sandisk Technologies Method and system for managing block reclaim operations in a multi-layer memory
US9336133B2 (en) 2012-12-31 2016-05-10 Sandisk Technologies Inc. Method and system for managing program cycles including maintenance programming operations in a multi-layer memory
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9734050B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for managing background operations in a multi-layer memory
US9223693B2 (en) 2012-12-31 2015-12-29 Sandisk Technologies Inc. Memory system having an unequal number of memory die on different control channels
US9123445B2 (en) 2013-01-22 2015-09-01 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US10445229B1 (en) 2013-01-28 2019-10-15 Radian Memory Systems, Inc. Memory controller with at least one address segment defined for which data is striped across flash memory dies, with a common address offset being used to obtain physical addresses for the data in each of the dies
US9229854B1 (en) * 2013-01-28 2016-01-05 Radian Memory Systems, LLC Multi-array operation support and related devices, systems and software
US11249652B1 (en) 2013-01-28 2022-02-15 Radian Memory Systems, Inc. Maintenance of nonvolatile memory on host selected namespaces by a common memory controller
US10642505B1 (en) 2013-01-28 2020-05-05 Radian Memory Systems, Inc. Techniques for data migration based on per-data metrics and memory degradation
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9329928B2 (en) 2013-02-20 2016-05-03 Sandisk Enterprise IP LLC. Bandwidth optimization in a non-volatile memory system
US9214965B2 (en) 2013-02-20 2015-12-15 Sandisk Enterprise Ip Llc Method and system for improving data integrity in non-volatile storage
US9183137B2 (en) 2013-02-27 2015-11-10 SMART Storage Systems, Inc. Storage control system with data management mechanism and method of operation thereof
US9645942B2 (en) 2013-03-15 2017-05-09 Intel Corporation Method for pinning data in large cache in multi-level memory system
US9170941B2 (en) 2013-04-05 2015-10-27 Sandisk Enterprises IP LLC Data hardening in a storage system
US10049037B2 (en) 2013-04-05 2018-08-14 Sandisk Enterprise Ip Llc Data management in a storage system
US9543025B2 (en) 2013-04-11 2017-01-10 Sandisk Technologies Llc Storage control system with power-off time estimation mechanism and method of operation thereof
US10546648B2 (en) 2013-04-12 2020-01-28 Sandisk Technologies Llc Storage control system with data management mechanism and method of operation thereof
US9244519B1 (en) 2013-06-25 2016-01-26 Smart Storage Systems. Inc. Storage system with data transfer rate adjustment for power throttling
US9367353B1 (en) 2013-06-25 2016-06-14 Sandisk Technologies Inc. Storage control system with power throttling mechanism and method of operation thereof
US9141176B1 (en) 2013-07-29 2015-09-22 Western Digital Technologies, Inc. Power management for data storage device
US9146850B2 (en) 2013-08-01 2015-09-29 SMART Storage Systems, Inc. Data storage system with dynamic read threshold mechanism and method of operation thereof
US9431113B2 (en) 2013-08-07 2016-08-30 Sandisk Technologies Llc Data storage system with dynamic erase block grouping mechanism and method of operation thereof
US9448946B2 (en) 2013-08-07 2016-09-20 Sandisk Technologies Llc Data storage system with stale data mechanism and method of operation thereof
US9361222B2 (en) 2013-08-07 2016-06-07 SMART Storage Systems, Inc. Electronic system with storage drive life estimation mechanism and method of operation thereof
US9070379B2 (en) 2013-08-28 2015-06-30 Western Digital Technologies, Inc. Data migration for data storage device
US8917471B1 (en) 2013-10-29 2014-12-23 Western Digital Technologies, Inc. Power management for data storage device
US9323467B2 (en) 2013-10-29 2016-04-26 Western Digital Technologies, Inc. Data storage device startup
CN104598386B (zh) * 2013-10-31 2018-03-27 Lsi公司 通过追踪和利用二级映射索引重复利用固态驱动器块
US9152555B2 (en) 2013-11-15 2015-10-06 Sandisk Enterprise IP LLC. Data management with modular erase in a data storage system
DE102014100800A1 (de) * 2014-01-24 2015-07-30 Hyperstone Gmbh Verfahren zur zuverlässigen Adressierung eines großen Flash-Speichers
KR20160015784A (ko) * 2014-07-31 2016-02-15 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10552085B1 (en) 2014-09-09 2020-02-04 Radian Memory Systems, Inc. Techniques for directed data migration
US9542118B1 (en) * 2014-09-09 2017-01-10 Radian Memory Systems, Inc. Expositive flash memory control
US9720596B1 (en) * 2014-12-19 2017-08-01 EMC IP Holding Company LLC Coalescing writes for improved storage utilization
US9940259B2 (en) * 2015-01-16 2018-04-10 International Business Machines Corporation Virtual disk alignment access
KR102391678B1 (ko) 2015-01-22 2022-04-29 삼성전자주식회사 저장 장치 및 그것의 서스테인드 상태 가속 방법
US9720762B2 (en) * 2015-03-04 2017-08-01 Unisys Corporation Clearing bank descriptors for reuse by a gate bank
DE102015204824A1 (de) * 2015-03-17 2016-09-22 Bundesdruckerei Gmbh Verfahren zum Speichern von Nutzerdaten in einem Dokument
CN104714894B (zh) * 2015-03-18 2017-08-11 清华大学 一种分层的基于随机映射的相变内存磨损均衡方法及系统
US9582420B2 (en) 2015-03-18 2017-02-28 International Business Machines Corporation Programmable memory mapping scheme with interleave properties
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
US10552058B1 (en) 2015-07-17 2020-02-04 Radian Memory Systems, Inc. Techniques for delegating data processing to a cooperative memory controller
US20170031838A1 (en) * 2015-07-28 2017-02-02 Qualcomm Incorporated Method and apparatus for using context information to protect virtual machine security
US9778855B2 (en) 2015-10-30 2017-10-03 Sandisk Technologies Llc System and method for precision interleaving of data writes in a non-volatile memory
US10120613B2 (en) 2015-10-30 2018-11-06 Sandisk Technologies Llc System and method for rescheduling host and maintenance operations in a non-volatile memory
US10133490B2 (en) 2015-10-30 2018-11-20 Sandisk Technologies Llc System and method for managing extended maintenance scheduling in a non-volatile memory
US10042553B2 (en) 2015-10-30 2018-08-07 Sandisk Technologies Llc Method and system for programming a multi-layer non-volatile memory having a single fold data path
CN105353989B (zh) * 2015-11-19 2018-12-28 华为技术有限公司 存储数据访问方法及相关的控制器、设备、主机和系统
US10089243B2 (en) 2016-02-25 2018-10-02 SK Hynix Inc. Memory controller and system including variable address mapping tables and a fixed address mapping table
US10175889B2 (en) 2016-03-10 2019-01-08 Toshiba Memory Corporation Memory system capable of accessing memory cell arrays in parallel
KR102420897B1 (ko) * 2016-03-17 2022-07-18 에스케이하이닉스 주식회사 메모리 모듈, 이를 포함하는 메모리 시스템 및 그의 동작 방법
US10031845B2 (en) * 2016-04-01 2018-07-24 Intel Corporation Method and apparatus for processing sequential writes to a block group of physical blocks in a memory device
KR102611292B1 (ko) 2016-06-22 2023-12-11 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20180019419A (ko) * 2016-08-16 2018-02-26 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 그 동작방법
US10417198B1 (en) * 2016-09-21 2019-09-17 Well Fargo Bank, N.A. Collaborative data mapping system
KR20190107504A (ko) 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10936199B2 (en) * 2018-07-17 2021-03-02 Silicon Motion, Inc. Flash controllers, methods, and corresponding storage devices capable of rapidly/fast generating or updating contents of valid page count table
KR102520412B1 (ko) * 2018-09-19 2023-04-12 에스케이하이닉스 주식회사 메모리 시스템 및 그것의 동작방법
US10817430B2 (en) 2018-10-02 2020-10-27 Micron Technology, Inc. Access unit and management segment memory operations
KR102199575B1 (ko) * 2018-12-26 2021-01-07 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
CN110879687B (zh) * 2019-10-18 2021-03-16 蚂蚁区块链科技(上海)有限公司 一种基于磁盘存储的数据读取方法、装置及设备
US11175984B1 (en) 2019-12-09 2021-11-16 Radian Memory Systems, Inc. Erasure coding techniques for flash memory
US11520596B2 (en) 2020-02-26 2022-12-06 Microsoft Technology Licensing, Llc Selective boot sequence controller for resilient storage memory
KR20210120240A (ko) * 2020-03-26 2021-10-07 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
TWI748410B (zh) 2020-04-15 2021-12-01 慧榮科技股份有限公司 用來針對非揮發性記憶體進行區塊管理的方法以及設備
WO2022107920A1 (ko) * 2020-11-20 2022-05-27 울산과학기술원 데이터 일관성을 위한 버퍼 캐시 및 방법
US11487450B1 (en) * 2021-05-14 2022-11-01 Western Digital Technologies, Inc. Storage system and method for dynamic allocation of control blocks for improving host write and read
US11816358B2 (en) * 2021-08-24 2023-11-14 Micron Technology, Inc. Preserving application data order in memory devices
JP2023044824A (ja) * 2021-09-21 2023-04-03 キオクシア株式会社 メモリシステム
CN114333930B (zh) 2021-12-23 2024-03-08 合肥兆芯电子有限公司 多通道存储器存储装置、控制电路单元及其数据读取方法

Family Cites Families (41)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
GB2251323B (en) * 1990-12-31 1994-10-12 Intel Corp Disk emulation for a non-volatile semiconductor memory
US5535369A (en) * 1992-10-30 1996-07-09 Intel Corporation Method for allocating memory in a solid state memory disk
US5555204A (en) * 1993-06-29 1996-09-10 Kabushiki Kaisha Toshiba Non-volatile semiconductor memory device
KR0169267B1 (ko) * 1993-09-21 1999-02-01 사토 후미오 불휘발성 반도체 기억장치
DE4417907A1 (de) * 1994-05-21 1995-11-23 Hoechst Ag Verfahren zur Nachbehandlung von platten-, folien- oder bandförmigem Material, Träger aus derartigem Material und seine Verwendung für Offsetdruckplatten
GB2291991A (en) * 1995-09-27 1996-02-07 Memory Corp Plc Disk drive emulation with a block-erasable memory
US5903495A (en) * 1996-03-18 1999-05-11 Kabushiki Kaisha Toshiba Semiconductor device and memory system
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6898762B2 (en) * 1998-08-21 2005-05-24 United Video Properties, Inc. Client-server electronic program guide
GB9903490D0 (en) * 1999-02-17 1999-04-07 Memory Corp Plc Memory system
US6622199B1 (en) * 1999-07-02 2003-09-16 Qualcomm Incorporated Method for minimizing data relocation overhead in flash based file systems
US7966462B2 (en) * 1999-08-04 2011-06-21 Super Talent Electronics, Inc. Multi-channel flash module with plane-interleaved sequential ECC writes and background recycling to restricted-write flash chips
JP3863330B2 (ja) * 1999-09-28 2006-12-27 株式会社東芝 不揮発性半導体メモリ
JP3793868B2 (ja) * 1999-11-25 2006-07-05 カシオ計算機株式会社 フラッシュメモリ管理装置及び記録媒体
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
US6522580B2 (en) * 2001-06-27 2003-02-18 Sandisk Corporation Operating techniques for reducing effects of coupling between storage elements of a non-volatile memory operated in multiple data states
US6456528B1 (en) * 2001-09-17 2002-09-24 Sandisk Corporation Selective operation of a multi-state non-volatile memory system in a binary mode
US6925007B2 (en) * 2001-10-31 2005-08-02 Sandisk Corporation Multi-state non-volatile integrated circuit memory systems that employ dielectric storage elements
US6771536B2 (en) * 2002-02-27 2004-08-03 Sandisk Corporation Operating techniques for reducing program and read disturbs of a non-volatile memory
KR100453053B1 (ko) * 2002-06-10 2004-10-15 삼성전자주식회사 플래쉬 메모리용 파일 시스템
US7123512B2 (en) * 2002-07-19 2006-10-17 Micron Technology, Inc. Contiguous block addressing scheme
US6775751B2 (en) * 2002-08-06 2004-08-10 International Business Machines Corporation System and method for using a compressed main memory based on degree of compressibility
US6781877B2 (en) * 2002-09-06 2004-08-24 Sandisk Corporation Techniques for reducing effects of coupling between storage elements of adjacent rows of memory cells
US7433993B2 (en) * 2003-12-30 2008-10-07 San Disk Corportion Adaptive metablocks
US7631138B2 (en) * 2003-12-30 2009-12-08 Sandisk Corporation Adaptive mode switching of flash memory address mapping based on host usage characteristics
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
KR20070028618A (ko) * 2004-07-19 2007-03-12 코닌클리케 필립스 일렉트로닉스 엔.브이. 다층 디스크에서의 층 점프
US7395384B2 (en) * 2004-07-21 2008-07-01 Sandisk Corproation Method and apparatus for maintaining data on non-volatile memory systems
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US20060161724A1 (en) * 2005-01-20 2006-07-20 Bennett Alan D Scheduling of housekeeping operations in flash memory systems
US7315917B2 (en) * 2005-01-20 2008-01-01 Sandisk Corporation Scheduling of housekeeping operations in flash memory systems
JP5130646B2 (ja) * 2005-06-06 2013-01-30 ソニー株式会社 記憶装置
JP5162846B2 (ja) * 2005-07-29 2013-03-13 ソニー株式会社 記憶装置、コンピュータシステム、および記憶システム
US7409489B2 (en) * 2005-08-03 2008-08-05 Sandisk Corporation Scheduling of reclaim operations in non-volatile memory
US7877540B2 (en) * 2005-12-13 2011-01-25 Sandisk Corporation Logically-addressed file storage methods
US7979624B2 (en) * 2006-03-31 2011-07-12 Intel Corporation Techniques to truncate data files in nonvolatile memory
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US8429352B2 (en) * 2007-06-08 2013-04-23 Sandisk Technologies Inc. Method and system for memory block flushing
US7978516B2 (en) * 2007-12-27 2011-07-12 Pliant Technology, Inc. Flash memory controller having reduced pinout

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
TWI845275B (zh) * 2023-04-24 2024-06-11 群聯電子股份有限公司 記憶體管理方法、記憶體儲存裝置及記憶體控制電路單元

Also Published As

Publication number Publication date
EP2286341A1 (en) 2011-02-23
TW200951722A (en) 2009-12-16
EP2286341B1 (en) 2015-06-03
WO2009131851A1 (en) 2009-10-29
US20140068152A1 (en) 2014-03-06
KR20100139149A (ko) 2010-12-31
JP2011519095A (ja) 2011-06-30
US20090271562A1 (en) 2009-10-29

Similar Documents

Publication Publication Date Title
TWI437441B (zh) 多庫記憶體裝置之儲存位址重映射之方法及系統
US9396103B2 (en) Method and system for storage address re-mapping for a memory device
US7949845B2 (en) Indexing of file data in reprogrammable non-volatile memories that directly store data files
US7669003B2 (en) Reprogrammable non-volatile memory systems with indexing of directly stored data files
US7877540B2 (en) Logically-addressed file storage methods
US7739444B2 (en) System using a direct data file system with a continuous logical address space interface
US7814262B2 (en) Memory system storing transformed units of data in fixed sized storage blocks
US8046522B2 (en) Use of a direct data file system with a continuous logical address space interface and control of file address storage in logical blocks
US8209461B2 (en) Configuration of host LBA interface with flash memory
US8166267B2 (en) Managing a LBA interface in a direct data file memory system
US7917686B2 (en) Host system with direct data file interface configurability
US8880483B2 (en) System and method for implementing extensions to intelligently manage resources of a mass storage system
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
US20070086260A1 (en) Method of storing transformed units of data in a memory system having fixed sized storage blocks
US20070136553A1 (en) Logically-addressed file storage systems
US20090164745A1 (en) System and Method for Controlling an Amount of Unprogrammed Capacity in Memory Blocks of a Mass Storage System
KR20080042851A (ko) 스케쥴링된 리클레임 작동들을 갖는 비휘발성 메모리
KR20090108694A (ko) 연속 논리 주소 공간 인터페이스를 구비한 다이렉트 데이터 파일 시스템을 사용하는 방법
KR20090108695A (ko) 다이렉트 데이터 파일 메모리 시스템에서 lba 인터페이스를 관리하는 방법

Legal Events

Date Code Title Description
MM4A Annulment or lapse of patent due to non-payment of fees