TWI394160B - 用於重映射記憶體裝置之儲存位址的方法及系統 - Google Patents

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

Info

Publication number
TWI394160B
TWI394160B TW097121253A TW97121253A TWI394160B TW I394160 B TWI394160 B TW I394160B TW 097121253 A TW097121253 A TW 097121253A TW 97121253 A TW97121253 A TW 97121253A TW I394160 B TWI394160 B TW I394160B
Authority
TW
Taiwan
Prior art keywords
block
address
lba
data
sat
Prior art date
Application number
TW097121253A
Other languages
English (en)
Other versions
TW200905680A (en
Inventor
Alan W Sinclair
Barry Wright
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 TW200905680A publication Critical patent/TW200905680A/zh
Application granted granted Critical
Publication of TWI394160B publication Critical patent/TWI394160B/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
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/06Addressing a physical block of locations, e.g. base addressing, module addressing, memory dedication
    • G06F12/0607Interleaved addressing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/10Providing a specific technical effect
    • G06F2212/1016Performance improvement
    • 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

Description

用於重映射記憶體裝置之儲存位址的方法及系統
本申請案概言之係關於作業系統與記憶體裝置之間的資料通信。更特定而言,本申請案係關於例如可重新程式化非揮發性半導體快閃記憶體之記憶體系統、及該記憶體連接或可連接至其之一主機裝置之運作。
當將資料寫入至一習用快閃資料記憶體系統時,主機通常在記憶體系統中一連續的虛擬位址空間內為扇區、叢集或其他資料單位指配唯一的邏輯位址。主機將資料寫入至記憶體系統之邏輯位址空間內之位址,並自記憶體系統之邏輯位址空間內之位址讀取資料。然後,記憶體系統通常在邏輯位址空間與記憶體之實體塊或元塊之間映射資料,其中資料儲存於對應於邏輯位址空間中之範圍之固定邏輯組群中。一般而言,每一固定邏輯組群皆儲存於記憶體系統之一單獨的實體塊中。記憶體系統記錄邏輯位址空間係如何映射至實體記憶體中但主機對此一無所知。主機記錄其資料檔案在邏輯位址空間內之位址但記憶體系統在不知道此映射之情況下運作。
以此方式運作之記憶體系統之一缺點在於碎裂。舉例而言,寫入至一根據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位址時將該等主機LBA位址映射至儲存LBA位址。
根據另一態樣,揭示一種用於在一主機系統與一可重新 程式化非揮發性大容量儲存系統之間傳送資料之方法,其包括以下步驟:在該大容量儲存系統上之一應用處自該主機系統接收與主機邏輯塊位址(LBA)位址相關聯之資料並按一所接收之次序連續地將該等所接收主機LBA位址重映射至一連續儲存LBA位址塊。該方法進一步包括分配一額外連續儲存LBA位址塊,該額外塊在分配時僅定址未寫入容量,且只在完全程式化該連續儲存LBA位址塊時連續地將其他所接收主機LBA位址重映射至該額外塊。亦包括以下步驟:在接收與先前所接收主機LBA位址相關聯之新資料之前,識別目前定址有效資料及廢棄資料之先前完全程式化之連續儲存LBA位址塊;並由所識別之先前完全程式化連續儲存LBA位址塊形成僅定址未寫入容量之新連續儲存LBA位址塊。
於本發明之一態樣中,揭示一種大容量儲存記憶體系統,其包含:可重新程式化非揮發性記憶體單元,其配置於複數個可一同擦除之記憶體單元塊中;一介面,其適於自一主機系統接收藉由主機邏輯塊位址(LBA)位址定址之接收資料;及一控制器,其與該介面通信。該控制器經組態以分配一用於自該主機系統接收該資料之連續儲存LBA位址塊,且經組態以將該所接收資料之該等主機LBA位址中之每一者重映射至該連續儲存LBA位址塊,其中該控制器經配置以不管一與該接收資料相關聯之主機LBA位址如何均將每一連續儲存LBA位址按一接收該所接收資料之次序依序指配給所接收資料。
根據本發明之另一態樣,一種大容量儲存記憶體系統包括:可重新程式化非揮發性記憶體單元,其配置於複數個可一同擦除之記憶體單元塊中;一介面,其適於自一主機系統接收以一主機邏輯塊位址(LBA)格式定址之資料;及一控制器,其與該介面通信。該控制器包括:處理器可執行指令,其用於執行以下步驟:在該大容量儲存系統處自該主機系統接收與主機LBA位址相關聯之資料;按一所接收之次序連續地將該等所接收主機LBA位址重映射至一連接儲存LBA位址塊;分配一額外連續儲存LBA位址塊,其中該施加塊在分配時僅含有未寫入容量;並只在完全程式化該連續儲存LBA位址塊之情況下連續地將其餘所接收主機LBA位址重映射至該額外塊。該等處理器可執行指令亦包括用於形成不含有有效資料之新連續儲存LBA位址塊的指令。
如本發明之另一態樣中所揭示,一種用於地與主機LBA位址相關聯之資料重映射至儲存LBA位址之非揮發性大容量儲存系統包括:可程式化非揮發性記憶體單元,其中該等記憶體單元配置於複數個可一同擦除之記憶體單元塊中;一介面,其適於自一主機系統接收以一主機LBA格式定址之資料;及一控制器,其與該介面通信。該控制器經組態以:按一所接收之次序連續地將該等所接收主機LBA位址重映射至一連續儲存LBA位址塊;分配一額外連續儲存LBA位址塊,其中該額外塊在分配時僅定址未寫入容量;並只在完全程式化該連續儲存LBA位址塊時連續地將 其他所接收主機LBA位址重映射至該額外塊。該控制器進一步經組態以:產生一儲存位址表,其在與主機LBA位址相關聯之資料重映射至連續儲存LBA位址時將該等主機LBA位址映射至儲存LBA位址;並產生一塊資訊表,其識別複數個儲存LBA位址塊中之每一者之一狀態。
於另一態樣中,一種非揮發性大容量儲存系統包括:接收構件,其用於在該大容量儲存系統處自一主機系統接收與主機LBA位址相關聯之資料;分配構件,其用於分配一用於接收該等主機LBA位址之連續儲存LBA位址塊,其中該連續儲存LBA位址塊在分配時僅與未寫入容量相關聯;及重映射構件,其用於將該所接收資料之該等主機LBA位址中之每一者重映射至該連續儲存LBA位址塊,其中不管該主機LBA位址如何均將每一儲存LBA位址按一接收該所接收資料之次序以一連續方式依序指配給所接收資料。
於本發明之再一態樣中,一種用於在一主機系統與一可程式化非揮發性大容量儲存系統之間傳送資料之方法包含在該主機系統上之一主機重映射模組處接收與主機LBA位址相關聯之資料。該主機重映射模組分配一用於接收該等主機LBA位址之連續儲存LBA位址塊,其中該連續儲存LBA位址塊在分配時僅與未寫入容量相關聯,並將該接收資料之該等主機LBA位址中之每一者重映射至該連續儲存LBA位址塊以便不管主機LBA位址如何均將每一儲存LBA位址按一接收該所接收資料之次序以一連續方式依序指配給所接收資料。將重映射至該連續儲存LBA位址塊之該接 收資料及該等所指配儲存LBA位址自該主機系統傳輸至該大容量儲存系統。
於另一態樣中,一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法包含在一駐存於該主機系統上之主機重映射模組處接收與主機邏輯塊位址(LBA)位址相關聯之資料並按一所接收之次序依序將該等所接收主機LBA位址重映射至一連續儲存LBA位址塊。分配一在分配時僅定址未寫入容量之額外連續儲存LBA位址塊。只在完全程式化該連續儲存LBA位址塊之情況下,連續地將其餘所接收主機LBA位址重映射至該額外塊。該方法進一步包括形成僅定址廢棄資料之新連續儲存LBA位址塊並將重映射至該連續儲存LBA位址塊之該所接收資料及該等所指配儲存LBA位址自該主機系統傳輸至該大容量儲存系統。
根據本發明之一態樣,一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法包括:在該主機系統上之一主機重映射模組處接收與主機LBA位址相關聯之資料;在該主機系統處按一所接收之次序連續地將該等所接收主機LBA位址重映射至一連續儲存LBA位址塊;分配一在分配時僅定位未寫入容量之額外連續儲存LBA位址塊;並只在完全程式化該連續儲存LBA位址塊時連續地將其他所接收主機LBA位址重映射至該額外塊。該方法進一步包括在該主機系統處產生一儲存位址表,該儲存位址表在將主機LBA位址重映射至連續儲存 LBA位址時將該等主機LBA位址映射至儲存LBA位址。
於本發明之另一態樣中,揭示一種用於將資料傳送至一可重新程式化非揮發性大容量儲存系統之主機系統。該主機系統包括:一介面,其經組態以允許與該大容量儲存裝置通信;及一主機處理器,其經組態以根據來自一主機重映射模組之指令經由該介面將資料儲存於該大容量儲存系統上。該主機重映射模組包括處理器可執行指令,該等處理器可執行指令用於:致使該主機處理器在該主機系統上之該主機重映射模組處接收與主機邏輯塊位址(LBA)位址相關聯之資料;分配一用於接收該等主機LBA位址之連續儲存LBA位址塊,該連續儲存LBA位址塊在分配時僅定址未寫入容量;將該所接收資料之該等主機LBA位址中之每一者重映射至該連續儲存LBA位址塊,其中不管主機LBA位址如何均將每一儲存LBA位址按一接收該所接收資料之次序以一連續方式依序指配給該所接收資料;並將重映射至該連續儲存LBA位址塊之該所接收資料及該等所指配儲存LBA位址自該主機系統傳輸至該大容量儲存系統。
根據本發明之另一態樣,揭示一種用於將資料傳送至一可重新程式化非揮發性大容量儲存系統之主機系統。該主機系統包括:一介面,其經組態以允許與該大容量儲存裝置通信;及一主機處理器,其經組態以根據來自一主機重映射模組之指令經由該介面將資料儲存於該大容量儲存系統上。該主機重映射模組包含處理器可執行指令,該處理器可執行指令用於:致使該主機處理器在該主機重映射模 組處接收與主機邏輯塊位址(LBA)位址相關聯之資料;在該主機系統處按一所接收之次序連續地將該等所接收主機LBA位址重映射至一連續儲存LBA位址塊;分配一在分配時僅與未寫入容量相關聯之額外連續儲存LBA位址塊;且只在完全程式化該連續儲存LBA位址塊時連續時將其他所接收主機LBA位址重映射至該額外塊。該主機重映射模組之該等處理器可執行指令亦經配置以致使該主機處理器在該主機系統處產生一儲存位址表,該儲存位址表在與主機LBA位址相關聯之該資料重映射至連續儲存LBA位址時將該等主機LBA位址映射至儲存LBA位址。
在本發明之另一態樣中,一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法包括:在一主機檔案系統處接收欲儲存於該大容量儲存系統上之資料;分配一用於與該所接收資料相關聯之第一連續主機LBA位址塊;並將該第一塊中之每一可用主機LBA位址關聯至該所接收資料,其中每一可用主機LBA位址皆按一接收該所接收資料之次序依序指配給該所接收資料。該方法進一步包括分配一第二連續主機LBA位址塊,該第二連續主機LBA位址塊具有至少一個可用主機LBA位址,其中該第二塊只在關聯該第一塊中該至少一個可用主機LBA位址中之每一者之後分配。
根據另一態樣,揭示一種用於將資料傳送至一可重新程式化非揮發性大容量儲存系統之主機系統。該主機系統包括:一介面,其經組態以允許與該大容量儲存裝置通信; 及一主機處理器,其經組態以根據來自一主機記憶體之指令經由該介面將資料儲存於該大容量儲存系統上。該主機記憶體具有處理器可執行指令,該等處理器可執行指令用於:構建一主機檔案系統以致使該處理器分配一用於與接收於該主機檔案系統處之資料相關聯之第一連續主機LBA位址塊;將該第一塊中之每一可用主機LBA位址關聯至該接收資料,其中每一可用主機LBA位址皆按一接收該所接收資料之次序依序指配給該所接收資料;且僅地關聯該第一塊中該至少一個可用主機LBA位址中之每一者之後分配一用於與所接收資料相關聯之第二連續主機LBA位址塊。
於另一態樣中,揭示一種電腦可讀媒體,其具有用於將資料自一主機系統傳送至一可重新程式化非揮發性大容量儲存系統之電腦可執行指令。該等電腦可執行指令經配置以致使一處理器執行以下步驟:在一主機檔案系統處接收欲儲存於該大容量儲存系統上之資料;分配一用於與該所接收資料相關聯之第一連續主機LBA位址塊;並將該第一塊中之每一可用主機LBA位址關聯至該所接收資料,其中每一可用主機LBA位址皆按接收該所接收資料之該次序依序指配給該所接收資料。該等電腦可執行指令亦經配置以致使該處理器執行用於分配一用於只在關聯該第一塊中該等可用主機LBA位址中之每一者之後與所接收資料相關聯之第二連續主機LBA位址塊的步驟。
於本發明之再一態樣中,一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法 包括在該大容量儲存系統處自該主機系統接收與主機LBA位址相關聯之資料。該方法包括:不管主機LBA位址次序如何均將所接收資料按一所接收之次序儲存於一具有連續實體位址之寫入塊之連續實體位址中;分配一白色塊,該白色塊包含一僅含有未寫入容量之連續實體位址塊,作為一用於在完全程式化該寫入塊時儲存該所接收資料之下一寫入塊;並更新一將該所接收資料之主機LBA位址映射至每一寫入塊中之實體位址之儲存位址表,其中該儲存位址表保持於至少一個實體位址塊中。該方法進一步包括形成一新白色塊,其中形成一新寫入塊包括從複數個粉紅色塊中選擇一粉紅色塊,其中該複數個粉紅色塊中之每一者皆係一具有有效資料及廢棄資料兩者之連續完全程式化實體位址塊且該選定粉紅色塊具有小於臨限有效資料量之有效資料量。所有來自該選定粉紅色塊之有效資料皆重定位至一重定位塊,以便在重定位所有來自該選定粉紅色塊之有效資料時,該選定粉紅色塊變為一新白色塊。
根據本發明之一態樣,揭示一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法。該方法包括在該大容量儲存系統處自該主機系統接收與主機邏輯塊位址(LBA)位址相關聯之資料且不管主機LBA位址次序如何均將該所接收資料按一所接收之次序儲存於一具有連續實體位址之寫入塊之連續實體位址中。將該接收資料之一主機LBA位址運行映射至一儲存位址表(SAT)之一單個頁上之至少兩個實體位址運行,其中SAT 係由該大容量儲存系統中之至少一個連續實體位址塊構成。
於另一態樣中,揭示一種用於在一可重新程式化非揮發性大容量儲存系統中產生僅具有未寫入容量之連續實體位址塊的方法,其中該大容量儲存系統具有複數個連續實體位址塊。該方法包括:確定含於該複數個塊中每一個粉紅色塊中之有效資料量,其中每一個粉紅色塊皆包含一具有有效資料及廢棄資料兩者之完全程式化連續實體位址塊;並基於該所確定之有效資料量來選擇該等粉紅色塊中之一者。該方法進一步包含:將有效資料自該等粉紅色塊中之該選定塊複製至一重定位塊中之連續實體位址,其中該重定位塊包含一用來連續地重定位來自該等粉紅色塊中之該選定塊之有效資料的連續實體位址塊,且其中不管一與該有效資料相關聯之主機LBA位址如何均按一出現次序自該等粉紅色塊中之該選定塊複製該有效資料。
於本發明之另一態樣中,揭示一種大容量儲存記憶體系統。該大容量儲存系統包括:可重新程式化非揮發性記憶體單元,其配置於複數個可一同擦除之記憶體單元塊中;一介面,其適於自一主機系統接收藉由主機LBA位址定址之接收資料;及一控制器,其與該介面通信。該控制器經組態以:分配一用於自該主機系統接收該資料之第一連續實體位址塊;將該所接收資料之該等主機LBA位址中之每一者映射至該連續實體位址塊,其中不管一與該所接收資料相關聯之主機LBA位址如何均將該所接收資料按一接收 該所接收資料之次序依序寫入至連續實體位址。該主機控制器進一步經組態以分配一用於以一連續方式接收其他所接收資料之第二連續實體位址塊,該第二連續實體位址塊在分配時僅具有未寫入容量,其中該控制器只在完全指配該第一連續實體位址塊時給該第二塊分配資料。此外,該控制器進一步經組態以:產生將主機LBA位址與實體位址位置相關之相關資料;並將該關聯資料儲存於該大容量儲存記憶體系統中之一儲存位址表中,其中該關聯資料將每一主機LBA位址運行映射至一個或多個實體位址運行,該一個或多個實體位址運行對應於與該主機LBA位址運行相關聯之資料。
根據本發明之另一態樣,揭示一種用於在一連續邏輯位址範圍內移動一其中藉由一邏輯位址來識別資料之儲存裝置內之資料之方法。該方法包括:將該連續邏輯位址範圍劃分成相等大小之連續邏輯位址塊;並識別一含有分配給儲存於該裝置中之有效資料之至少一個邏輯位址之邏輯位址塊。該方法亦包括:將該有效資料重映射至不含於該邏輯位址塊內之至少一個邏輯位址;讀取與分配給有效資料之該至少一個邏輯位址相關聯之該有效資料;並將該有效資料寫入至該至少一個邏輯位址,以使該所識別塊不包含分配給有效資料之位址。
閱讀附圖、詳細說明及申請專利範圍,將易知本發明之其他特徵及優點。
一用於構建本發明態樣之快閃記憶體系統顯示於圖1-6中。圖1所示主機系統1將資料儲存至快閃記憶體2中並自快閃記憶體2擷取資料。該快閃記憶體可例如呈一安裝於一個人電腦中之固態磁碟(SSD)驅動機形式嵌入於主機內。另一選擇係,記憶體2可呈一卡形式,其經由如圖1中所示之機械及電連接器之配合部分3及4以可抽換方式連接至主機。一組態作用一內部或嵌入式SSD驅動機之快閃記憶體可看似圖1之示意圖,且主要區別在於主機內部之記憶體系統2之位置。SSD驅動機可呈係對旋轉式磁碟驅動機之偶入置換之分立模組形式。
一市售SSD驅動機之一實例係一由SanDisk公司生產之32吉字節SSD。市售可抽換式快閃記憶卡之實例包括:CompactFlash(CF)、MultiMediaCard(MMC)、安全數碼(SD)、小型SD、記憶棒、SmartMedia及TransFlash卡。儘管該等卡中之每一者皆根據其標準化規範而具有一唯一之機械及/或電介面,然而每一卡中所包括之快閃記憶體系統皆相似。該等卡皆可自SanDisk公司(本申請案之受讓人)購得。SanDisk亦以其Cruzer商標提供一組快閃驅動機,其為小封裝形式的手持式記憶體系統,其具有一用於藉由插入主機之USB插孔內而與主機相連接的通用串列匯流排(USB)插頭。該等記憶卡及快閃驅動機中之每一者皆包括與主機介接並控制其中之快閃記憶體作業之控制器。
可使用SSD、記憶卡及已將驅動機之主機系統數量衆多且多種多樣。其包括諸如膝上型電腦及其他可攜式電腦之 個人電腦(PC)、蜂巢式電話、個人數位助理(PDA)、數位相機、數位攝影機及可攜式音訊播放器。對於可攜式記憶卡應用,主機可包括用於一種或多種類型之記憶卡或快閃驅動機之內建式插孔,或主機可能需要將記憶體卡插進其中之適配器。記憶體系統通常含有其自身的控制器及驅動器,但亦在在一些唯記憶體系統,其改為由記憶體連接至其之主機所執行之軟體控制。在一些含有控制器之記憶體系統(尤其嵌入於主機內之彼等記憶體系統)中,記憶體、控制器及驅動器通常形成於一單個積體電路晶片上。
就記憶體2而言,圖1所示主機系統1可視為具有兩個由一電路與軟體組合構成之主要部件。其為應用程式部分5以及與記憶體2介接之驅動器部分6。例如,在一PC中,應用程式部分5可包括:一處理器9,其運行字處理、圖形、控制或其他常用應用軟體;及檔案系統10,其用於管理主機1上之資料。在相機、蜂巢式電話或者其他主要專用於執行單組功能之主機系統中,應用程式部分5包括用於運作相機以拍攝並儲存照片、運作蜂巢式電話以實施並接收呼叫等等之軟體。
圖1所示記憶體系統2包括快閃記憶體7及電路8,二者皆與卡連接至其以來回傳遞資料之主機介接並控制記憶體7。在資料程式化及讀取期間,控制器8通常在由主機1所使用之資料之邏輯位址與記憶體7之實體位址之間進行轉換。
參見圖2,對可用作圖1所示非易失性記憶體2之典型快 閃記憶體系統之電路進行說明。該系統控制器通常構建於一單個集成電路晶片11上,積體電路晶片11藉由系統匯流排13與一個或多個積體電路記憶體晶片並行連接,一單個此種記憶體晶片15顯示於圖2中。所示特定匯流排13包括單獨的一組用於載送資料的導體17、一組用於記憶體位址的導體19以及一組用於控制及狀態信號的導體21。另一選擇為,可使單組導體在該三種功能之間分時共享。此外,可採用系統匯流排之其他組態,例如一闡述於2004年8月9日提出申請且標題為"環形匯流排結構及其在快閃記憶體系統中之應用(Ring Bus Structure and It's Use in Flash Memory Systems)"之第10/915,039號美國專利申請案中之環形匯流排。
典型的控制器晶片11具有其自身的內部匯流排23,內部匯流排23經由介面電路25與系統匯流排13介接。通常連接至該匯流排之主要功能組件係處理器27(例如微處理器或微控制器)、含有用於初始化("引導")該系統之唯讀記憶體(ROM)29、主要用於緩衝傳送於記憶體與主機之間的資料的唯讀記憶體(RAM)31、以及電路33,電路33為在記憶體與主機之間穿過控制器之資料計算並檢查錯誤修正碼(ECC)。控制器匯流排23經由電路35與主機系統介接,在含於一記憶卡中之圖2所示系統之情況下,此係經由作為連接器4之部分之卡之外部觸點37來實現。時鐘39與控制器11之每一其他組件連接並供其使用。
記憶體晶片15以及與系統匯流排13相連之任何其他記憶 體晶片通常含有一組織成多個子陣列或平面之記憶體單元陣列,為簡明起見,在圖中顯示兩個此種平面41及43,但也可改為使用更多個(例如四個或八個)此種平面。另一選擇係,晶片15之記憶體單元陣列可不劃分成平面。然而,當如此劃分時,每一平面皆具有其自身的可彼此獨立運作之行控制電路45及47。電路45及47自系統匯流排13之位址部分19接收其相應記憶體單元陣列之位址,並對其進行解碼,以定址特定的一個或多個相應位元線49及51。響應於在位址匯流排19上接收到之位址而經由列控制電路55來定址字線53。源極電壓控制電路57及59亦與相應平面連接,p-井電壓控制電路61及63亦如此。若記憶體晶片15具有單個記憶體單元陣列,且若系統中存在兩個或更多個此種晶片,則每一晶片之陣列皆可類似於上述多平面晶片內之平面或子陣列加以運作。
資料經由與系統匯流排13之資料部分17連接之相應資料輸入/輸出電路65及67傳送入及傳送出平面41及43。電路65及67使得經由線69及71既能夠將資料程式化至記憶體單元中,亦能夠自其相應平面之記憶體單元讀取資料,線69及71經由相應行控制電路45及47連接至該等平面。
儘管控制器11控制記憶體晶片15之運作,以程式化資料、讀取資料、擦除及照管各種內務,然而每一記憶體晶片亦含有某一執行來自控制器11之命令以實施此等功能之控制電路。介面電路73連接至系統匯流排13之控制及狀態部分21。來自控制器之命令提供至狀態機75,狀態機75隨 後提供對其他電路之特定控制,以執行此等命令。控制線77-81連接狀態機75與此等其他電路,如圖2中所示。來自狀態機75之狀態資訊藉由線83傳送至介面73,以藉由匯流排部分21傳輸至控制器11。
記憶體單元陣列41及43之NAND架構當前係較佳的,但亦可改為使用例如NOR之其他架構。作為記憶體系統之部分之NAND快閃記憶體及其運作之實例可藉由參考第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陣列由圖3之電路圖說明,其係圖2之記憶體系統之記憶體單元陣列41之一部分。提供大量全局位元線,然而為簡化說明起見,圖2中僅顯示四個此種線91-94。若干個串行連接之記憶體單元串97-104連接於此等位元線中之一者與一參考電位之間。使用記憶體單元串99作為代表性實例,複數個電荷儲存記憶體單元107-110與該串兩端處之選定電晶體111及112串行連接。當串之選定電晶體變為導電時,該串連接於其位元線與參考電位之間。然後,同時程式化並讀取該串內之一個記憶體單元。
圖3所示字線115-118分別延伸父之過多個記憶體單元串中每一者內一個記憶體單元之電荷儲存元件,且閘極119及120控制該等串之每一端處之選定電晶體之狀態。使共享共用字線及控制閘極線115-120之記憶體單元串形成一 可一同擦除之記憶體單元塊123。該單元塊包含可一次性地實體擦除之最少數量的單元。同時程式化一列記憶體單元(沿條字線115-118中之一者之彼等記憶體單元)。通常,按一規定次序程式化NAND陣列中之各列,在此種情況下,從沿最接近於連接至地或另一共用電位之串之端部之字線118之列開始。接下來,在整個塊123中,程式化沿字線117之記憶體單元列,依此類推。最後,程式化沿字線115之列。
第二個塊125與此類似,其記憶體單元串連接至與第一塊123中之串相同但具有一組不同之字線及控制閘極線之全局位元線。字線及控制閘極線由列控制電路55驅動至其適當之操作電壓。若系統中存在不止一個平面或子陣列,例如圖2所示平面1及2,則一個記憶體架構使用延伸於其之間的共用字線。另一選擇係,可存在不止兩個共享共用字線之平面或子陣列。在其他記憶體架構中,單獨驅動個別平面或子陣列之字線。
如在上文所提及之幾個NAND專利及公開申請案中所述,可運作記憶體系統,以在每一電荷儲存元件或區域中儲存不止兩個可偵測電荷位準,從而在每一者中儲存不止一個資料位元。記憶體單元之電荷儲存元件係最常用之導電性浮動閘極,但亦可係非導電性介電電荷陷獲材料,如第2003/0109093號美國專利申請公開案中所述。
圖4概念性地圖解闡釋在下文進一步說明中用作一實例之快閃記憶體單元陣列7(圖1)之組織形式。四個記憶體單 元平面或子陣列131-134可位於一單個整合型記憶體單元晶片上、兩個晶片(每一晶片上兩個平面)上或四個單獨晶片上。該特定配置對下文說明而言並不重要。當然,一系統中亦可存在其他平面數,例如1個、2個、8個、16個或更多個。該等平面個別地劃分成在圖4中由矩形所顯示之記憶體單元塊,例如位於相應平面131-134中之塊137、138、139及140。每一平面內可存在數十個或數百個塊。
如上文所述,記憶體單元塊係擦除單位,即可一同實體擦除之最少記憶體單元數。然而,為增強平行性,各塊係以更大之元塊單元形式運作。來自每一平面之一個塊在邏輯上鏈接在一起以形成一元塊。顯示四個塊137-140以形成一個元塊141。通常一同擦除一元塊內之所有單元。用於形成元塊的各塊不必僅限於其相應平面內之相同相對位置,如由塊145-148所構成之第二元塊143中所顯示。儘管通常較佳使元塊延伸跨越所有平面,然而為達成高系統效能,記憶體系統亦可運作以能夠動態地形成由不同平面內一個、兩個或三個塊中任何或所有塊組成之元塊。此使元塊之大小能夠與可供用於在一個程式化作業中儲存之資料量更密切匹配。
出於操作目的,如在圖5中所圖解闡釋,依次將個別塊劃分成記憶體單元頁。例如,由塊137-140中之每一者構成之記憶體單元分別被劃分成八個頁P0-P7。另一選擇係,每一塊內可存在16個、32個或更多個記憶體單元頁。頁係塊內之資料程式化及讀取單位,其含有一次性地程式 化或讀取之最少資料量。在圖3所示的NAND架構中,頁係由塊內沿一字線之記憶體單元形成。然而,為增強記憶體系統操作的平行性,可將兩個或更多個塊內的此類頁在邏輯上鏈接成元頁。圖5中圖解闡釋一個元頁151,其係由來自四個塊137-140中之每一者之一個實體頁形成。舉例而言,元頁151包括該四個塊中之每一每一者中之頁P2,但元頁中之各頁未必必然在每一塊內具有相同相對位置。元頁係最大程式化單位。
主機1與記憶體系統2之間的一共用邏輯介面(其顯示於圖6中)利用大到足以為所有可儲存於記憶體系統2中之資料提供位址之連續邏輯位址空間160。參見上文所述之主機1及記憶體系統2,預定用於儲存於快閃記憶體7中之資料通常以一邏輯塊位址(LBA)格式接收。主機位址空間通常被劃分成資料叢集之增量。每一叢集皆可在一既定主機系統內設計成含有多個資料扇區,大約介於4至64個扇區之間係典型的。一標準扇區含有512個資料位元組。參見圖6,圖中顯示NTFS檔案系統之邏輯位址空間160中之經分配叢集162及空閒叢集164之一典型型樣。
一用於定址圖6中所見之邏輯位址空間160之碎裂之組織結構顯示於圖7中。本文所述用於儲存位址重映射之系統及方法根據叢集塊166(下文說明中通常稱作"塊")分配LBA位址。一寫入作業係藉由下述方式來加以操縱:始終將資料寫入至個別塊166中,並在進行至下一可用塊之前使彼塊166完全填滿資料。在下文說明中,完全填滿有效資料 之塊166稱作紅色塊168,而不具有有效資料且因此僅含有未寫入容量之塊稱作白色塊170。若記憶體系統採用一種"使用後擦除"類型之程序,則一白色塊170中之未寫入容量可處於被擦除狀態下。另一選擇係,若記憶體系統採用一種"使用前擦除"類型之程序,則白色塊170中之未寫入容量可由將需要在分配時擦除之廢棄資料組成。已完全程式化且具有有效資料叢集162及無效(亦稱作廢棄)資料叢集164兩者之塊稱作粉紅色塊172。
為了根據邏輯位址塊劃分並管理邏輯位址空間160,主機系統與記憶體系統可能需要交換關於快閃記憶體中實體塊之塊大小之資訊。邏輯塊之大小較佳與實體塊之大小相同且此資訊可在記憶體系統與主機連接時傳送。此傳送可建立成在加電時或在將記憶體系統連接至主機時以一握手作業形式存在。於一實施例中,主機可向記憶體系統發送一"識別驅動機"查詢以請求塊大小及對準資訊,其中塊大小係特定記憶體系統之個別實體塊之大小且對準資訊係針對可能已經正在佔據每一實體塊中某一部分之系統資料所需要慮及之與一實體塊之開頭之偏移(若有)。
識別驅動機命令可構建為一組遺留LBA介面命令中之保留代碼。該等命令可經由標準通信介面中之保留或未分配之命令代碼自主機傳輸至記憶體系統。合適介面之實例包括用於固態磁碟之ATA介面、或例如用於CF或SD記憶卡之ATA相關介面。若記憶體系統未能提供塊大小及偏移資訊,則主機可假定一預設塊大小及偏移。若記憶體系統僅 以塊大小資訊但不以偏移資訊來對該識別驅動機命令作出響應,則主機可假定一預設偏移。該預設塊大小可係多個標準塊大小中之任何一者,且較佳設定為大於可能之實際實體塊大小。該預設偏移可設定為零偏移從而假定每一實體塊皆可從該實體塊中之第一位址開始自一主機接收資料。若主機耦合秷一預定內部驅動機(例如一SSD),則可能不需要實施用於確定塊大小及偏移之此步驟,此乃因可能已經知道且預程式化記憶體裝置之能力。由於即使可替換一內部驅動機,但主機可經組態以始終驗證記憶體裝置能力。對於可抽換式記憶體系統而言,主機可始終經由一識別驅動機命令或類似機制來詢問塊大小及偏移。
本文所述用於分配空閒叢集塊166並寫入至空閒叢集塊166之系統及方法包括以多種不同組合方式分散於主機系統與記憶體系統之間的功能性及硬體。圖8-11圖解闡釋如何可在主機及固態儲存裝置中在一包含檔案之系統之層次內之四個不同層面上構建實現叢集塊分配之儲存位址映射或重映射演算法之實例。
圖8及9之配置係其中儲存位址映射或重映射功能性全部含於儲存裝置176、178內之實施例。在該前兩個配置中,儲存裝置176、178可與一遺留主機174一同運作而無需對主機174進行修改。相反地,圖10及11所示之配置係其中儲存位址映射或重映射功能性全部含於主機180、182內之實施例。在該後兩個實施例中,主機180、182可與一無需修改之舊型存裝置184一同運作。
在圖8之實例中,儲存位址映射演算法可整合於儲存裝置176之記憶體管理程式177中,其中來自主機174之LBA位址直接映射至快閃記憶體中之實體塊以便在進行至下一塊之前使一第一實體記憶體塊完全填滿資料。另一選擇係,在圖9中,儲存位址重映射機制可構建於儲存裝置178中,但與裝置178之記憶體管理程式179分離。在圖9所示構建形式中,來自主機174之每一邏輯位址均將根據完整塊166利用寫入資料技術重映射至一第二邏輯位址(其在本文中稱作儲存邏輯塊位址(儲存LBA),亦在本文中稱作裝置邏輯塊位址(DLBA)),且隨後記憶體管理程式179將把按照DLBA管理程式所組織之資料轉換至實體記憶塊。DLBA位址空間結構化於等於實體元塊之大小之統一大小之DLBA塊中。圖10之構建形式將把儲存位址重映射功能性自儲存裝置184移至主機180上之一應用程式。在此構建形式中,將LBA位址映射至DLBA位址之功能將類似於圖9所示功能,且主要區別在於轉換將在主機180上而不是在記憶體裝置184中進行。主機180隨後將把主機處所產生之DLBA位址資訊以及與DLBA位址相關聯之資料兩者傳輸至記憶體裝置184。最後,一嵌入於主機作業系統182本身中之資料分配配置顯示於圖11中。在此最後構建形式中,主機182之檔案系統185(例如WINDOWS XP或VISTA作業系統內之NTFS檔案系統)可經配置以根據完整邏輯叢集塊產生儲存位址而無需中間、邏輯位址至邏輯位址轉換。因此,圖11之構建形式包括主機檔案系統中之一經修改的演 算法以便首先產生LBA位址以在開始填充額外塊之前填充完整塊。
在圖8-11所示配置中之任何一者中,一白色塊170分配為唯一用於寫入資料之位置,且其按其由主機提供之次序依序在其寫入指針之當前位置處填滿資料。當一儲存位址塊變為完全分配給有效資料時,其變為一紅色塊168。當檔案由主機刪除或檔案之部分由主機更新時,紅色塊168中之一些位址不可能再分配給有效資料,且因此該塊變為一粉紅色塊172。如本文更詳細闡述,一分配用於自主機接收資料之白色塊170稱作一寫入塊而一分配用於在一沖洗作業期間接收資料之白色塊稱作一重定位塊。可出於不同目的界定多個寫入指針。舉例而言,在不同應用中,邏輯位址空間可基於位址範圍或基於檔案大小細分成多個順序範圍。每一單獨的邏輯位址空間範圍皆可經組態以在儲存位址空間中具有其自身的寫入塊及關聯寫入指針。除運行順序或檔案大小之外,亦可基於一資料類型來實施邏輯位址空間位址運行劃分。舉例而言,可能期望將經常更新之NTFS MFT表資料與偶爾更新之資料分離。
一儲存位址重映射演算法藉由將有效資料自一粉紅色塊172重定位(本文中亦稱作沖洗)至一專用寫入指針(亦稱作重定位指針)來管理對白色塊170之形成。若儲存位址空間按範圍或檔案大小細分(如上文所提及),則每一儲存位址範圍皆可具有其自身的重定位塊及關聯重定位指針。沖洗作業通常實施為背景作業,以將粉紅色塊轉換成紅色塊及 白色塊。一粉紅色塊根據其特性選擇用於沖洗作業。重新參照圖7,在一個構建形式中,將選擇一具有最少有效資料量(亦即,圖7中之最少陰影叢集)之粉紅色塊,此乃因沖洗彼特定粉紅色塊時,更少具有有效資料之位址導致更少需要進行重定位之資料。因此,在圖7所示實例中,將優先於粉紅色塊A選擇粉紅色塊B,此乃因粉紅色塊B具有更少具有有效資料之位址。在其他構建形式中,選擇用於沖洗作業之粉紅色塊可係一與小於某一臨限有效資料量相關聯之粉紅色塊組群中之任何一者。該臨限值可小於含於整個一組粉紅色塊中之平均有效資料量。可在主機或記憶體系統可自其選擇粉紅色塊之一列表中,保持一等於或低於該臨限有效資料量之粉紅色塊子集。舉例而言,可保持一當前滿足臨限要求之粉紅色塊之界定數量(例如十六)或百分比(例如百分之30)之動態列表,且可自彼列表選擇任一粉紅色塊來進行沖洗而不管彼列表中之該選定粉紅色塊是否具有絕對最少有效資料量。形成記憶體系統或主機將自其選擇之列表之粉紅色塊之數量或百分比可係一固定值或一使用者可選擇值。該列表可包括按分等次序表示具有來自可用粉紅色塊之絕對最少有效資料量之粉紅色塊之粉紅色塊組群,或可僅包括屬於該臨限要求範圍內之粉紅色塊。
另一選擇係,或組合地,亦可基於一所計算出之在一特定粉紅色塊172中積累額外廢棄資料之概率來作出對粉紅色塊之選擇。在粉紅色塊172中累積更多廢棄資料之概率 可基於已在記憶體中續存最長之資料最不太可能被刪除之假定。因此,曾係重定位塊之粉紅色塊172將含有早於曾具有新主機資料之粉紅色塊172之續存資料。接著,對用於沖洗之粉紅色塊172之選擇過程將首先針對最近曾重定位塊之粉紅色塊172,此乃因其不太可能具有更多被刪除之資料,且因此可預期更少額外廢棄資料。將基於更新資料更可能被刪除之假定,選擇先前曾係寫入塊之粉紅色塊172來進行隨後的沖洗,從而形成更多的廢棄資料。
一資料流及儲存位址重映射演算法內之塊狀態變化型樣顯示於圖12中。如上文所提及,儲存位址重映射技術係根據叢集塊分配位址空間,並在分配另一個叢集塊之前填滿一叢集塊166。此可藉由下述方式實現:首先將一白色塊分配為將來自主機資料寫入至其中之當前寫入塊,其中來自主機之資料根據其接收之時間,按順序寫入至該寫入塊(於步驟188處)。在當前寫入塊中之最後一頁填滿有效資料時,當前寫入塊變為一紅色塊(於步驟190處)並自白色塊列表分配一新寫入塊。應注意,若當前寫入塊內之一些頁在完全程式化當前寫入塊之前便已淘汰,則當前寫入塊亦可進行一至一粉紅塊之直接轉換。為清晰起見,未顯示此轉換;然而,其可由一從寫入塊到粉紅色塊之箭頭表示。
重新參照圖12中之資料流之特定實例,當藉由刪除一LBA運行來使一紅色塊內之一個或多個頁變廢時,該紅色塊變為一粉紅色塊(於步驟192處)。當儲存位址重映射演算法偵測到需要更多白色塊時,該演算法啟動一沖洗作業以 移動來自一粉紅色塊之有效資料從而使該粉紅色塊變為一白色塊(於步驟194處)。為了沖洗一粉紅色塊,一粉紅色塊之有效資料依序重定位至一已被指派為重定位塊之白色塊(於步驟194'及196處)。一旦該重定位塊已滿,其即刻變為一紅色塊(於步驟198處)。如上文參照寫入塊所提及,若一重定位塊內之一些頁已變廢,則該重定位塊亦可進行至一粉紅色塊之直接轉換。為清晰起見,未顯示此轉換,但其可由圖12中之一從該重定位塊至一粉紅色塊之箭頭表示。圖13圖解闡釋一替代資料流實例,其中儲存位址重映射功能性應用至一具有二元分區200及多級單元(MLC)分區201之快閃記憶體。MLC分區200中之塊狀態變化與圖12中相同,然而二元分區200中之塊狀態變化(於步驟202-205處)不同於MLC分區201之塊狀態變化。在二元分區200中,自主機接收之資料接收於一寫入塊處,依序向該寫入塊寫入直至其已滿並變為一紅色塊為止(於202處)。若一紅色塊之頁變廢,則該塊變為一粉紅色塊(於203處)。如本文所述,可沖洗粉紅色塊以形成新白色塊(於204處),然後將該等新白色塊指配為該二元分區中之新寫入塊(於205處)。然而,來自二元分區200中之粉紅色塊之有效資料以及來自紅色塊之有效資料可發送至MLC分區201。
在一其中快閃記憶體7被劃分成一具有一充當一自主機接收資料之快取記憶體之二元分區200及一充當一自二元分區接收資料之主儲存區之MLC分區201之雙層系統之記憶體系統2(如圖13中所示)中,圖8-11所示"主機"可係該二 元分區。因此,本文所述之儲存位址重映射技術可與完全處於記憶體系統2之層內之作業相關,其中先前層(在此實例中為二元分區200)視為主機而當前層(此處為MLC分區201)視為儲存裝置。涵蓋此關係可延伸至具有多於一個雙層配置之記憶體系統,其中先前層類似於一主機而當前層視為儲存裝置。在利用一二元及MLC分區之其他實施例中,主機1可直接寫入至MLC分區201而不必首先經過二元分區200。
參見其中藉由一應用程式來對儲存裝置(圖9)或對主機(圖10)執行邏輯-邏輯、LBA至DLBA轉換之圖9及10所示之儲存位址重映射構建形式,現在參照圖14-17闡述一根據圖12所示狀態圖之位址操縱詳細實例。假定一系統一直根據由圖12所表示之儲存位址重映射演算法運作,則可表示在一既定時刻LBA位址空間208中之主機空閒叢集圖及DLBA位址空間210中之空閒叢集圖之一假設區段,如圖14中所示。在LBA位址空間208中,空閒叢集164散佈於基本上隨機之位置處。在DLBA位址空間210中,兩個白色塊170可供使用且存在三個具有不同數量之廢棄(空閒)叢集164之粉紅色塊172。
當主機接下來有資料要寫入至儲存裝置時,其將LBA位址空間208分配於任何其可用之處。圖15顯示儲存位址重映射演算法如何將可用白色塊170中之一者分配為寫入塊212,且每一個LBA位址係如何映射至一存在於寫入塊212中之DLBA空間中之順序性叢集。不管LBA位址位置如何 均按寫入LBA位址之次序向DLBA空間中之寫入塊212寫入。在此實例中,為了便於說明,假定主機使用空閒LBA叢集之時間次序與位址次序相同,然而儲存位址重映射演算法將不管LBA位址數次序如何均按使用LBA位址之時間次序指配寫入塊212中之DLBA位址。資料寫入於一寫入塊中一個或多個DLBA運行中。一DLBA運行係一組連續DLBA位址,其映射至同一LBA運行中之連續LBA位址。一DLBA運行必須終止於DLBA位址空間210中之一塊邊界處。當一寫入塊212變滿時,一白色塊170分配為下一寫入塊212。
DLBA塊與快閃記憶體之實體位址空間中之塊214對準,且因此DLBA塊大小與實體位址塊大小相同。DLBA寫入塊212中之位址配置則亦與實體位址空間中之對應更新塊之配置相同。由於此對應,因此實體更新塊中從不需要單獨的資料合併(其通常稱作廢料收集)。在共用廢料收集作業中,通常總是重新聚集一邏輯位址塊以在邏輯塊中保持一亦反射於實體塊中之特定LBA位址範圍。更特定而言,當一利用共用廢料收集作業之記憶體系統接收到一對應於特定實體塊中之一扇區之經更新資訊扇區時,記憶體系統將分配實體記憶體中之一更新塊以接收該(該等)經更新扇區並隨後將來自原始實體塊之其餘所有有效資料合併至更新塊之其餘部分中。以此方式,標準廢料收集將維持一特定LBA位址範圍之資料塊以使對應於特定位址範圍之資料始終將合併至一共用實體塊中。下文更詳細闡述之沖洗作業 不需要合併處於同一位址範圍內之資料。相反,本文所揭示之沖洗作業實施位址映射(圖8及11所示構建形式)或重映射(圖9及10所示構建形式)來形成可係一來自各個實體塊之資料集之新資料塊,其中不有意合併資料之一特定LBA位址範圍。
如先前所提及,儲存位址重映射演算法運作以確保一充足白色塊供應可供順序性寫入演算法運作。儲存位址重映射演算法藉由將資料自粉紅色塊沖洗至一稱作重定位塊216之專用寫入塊來管理對用於沖洗之白色塊之形成(圖16)。當前選擇用於沖洗之粉紅色塊稱作沖洗塊。
現在參考圖15-16,圖中顯示一塊沖洗過程之一例示。儲存位址重映射演算法將一白色塊指派為欲將資料自選定粉紅色塊沖洗至其以形成額外白色塊之重定位塊216。將沖洗塊(圖15所示粉紅色塊)中之有效資料(其稱作紅色資料)重定位至重定位塊216中之順序位址,以將沖洗塊轉換至白色塊170。亦指配實體位址空間218中之一對應更新塊214以接收經沖洗資料。如同用於自主機接收之新資料之更新塊214一樣,用於接收經沖洗資料之更新塊214將根本不需要一廢料收集作業來合併有效資料,此乃因沖洗作業已經實現對DLBA位址空間210之合併。
如圖17中所圖解闡釋,自剩餘粉紅色塊識別下一沖洗塊(圖16所示粉紅色塊B)。重新將具有最少紅色資料之粉紅色塊指派為沖洗塊並將粉紅色塊之紅色資料(有效資料)傳送至開放式重定位塊中之順序性位置。亦對更新塊214中 之實體位址進行並行指配。同樣,映射至重定位塊216之實體更新塊214中不需要資料合併。對粉紅色塊之沖洗作業實施為背景作業從而以一足以補償對指派為寫入塊之白色塊之消耗之速率形成白色塊。圖14-17所示實例圖解闡釋如何可針對來自主機之新資料及針對來自粉紅色塊之經重定位資料連同實體位址空間中之相應單獨更新塊單獨地保持一寫入塊及一重定位塊。類似於只在完全程式化一當前寫入塊時分配一用於關聯自主機接收之新資料之新寫入塊之過程,較佳只在已完全程式化先前重定位塊之後分配一新重定位塊。新重定位塊較佳在分配時僅含有未寫入容量(亦即,僅與準備擦除或已擦除之廢棄資料相關聯)而不含有有效資料。
在上文所提及之實施例中,將來自主機之新資料與將僅自主機接收其他新資料之寫入塊相關聯並將在一沖洗作業中自粉紅色塊沖洗之有效資料移至將僅含有來自一個或多個粉紅色塊之有效資料之重定位塊中。在其他實施例中,可將該新資料及經重定位資料傳送至一單個寫入塊而無需單獨的寫入及重定位塊。如上文所提及,在其他實施例中,可對一用於沖洗之粉紅色塊進行選擇,其中可選擇來自一與一低於一臨限值(例如當前粉紅色塊之一平均量)之紅色資料量相關聯之粉紅色塊列表之任一粉紅色塊或該粉紅色塊可係粉紅色塊中具有一超出可用粉紅色塊之特定分等(基於與粉紅色塊相關聯之有效資料量)之任何一者。
沖洗作業將相對"冷"資料自"熱"資料已自其變廢之塊重 定位至含有類似相對冷資料之重定位塊。此具有形成相對熱塊及相對冷塊之單獨群體之作用。始終將欲沖洗之塊選擇為含有最少資料量之熱塊。一熱塊群體之形成因減少需要重定位之資料量而減小記憶體應力因數。
在一實施例中,選擇為沖洗塊之粉紅色塊可係最稀疏填充之粉紅色塊(亦即,含有最少有效資料量之粉紅色塊),且不回應於主機所實施之具體寫入及刪除作業而選擇。以此方式將粉紅色塊選擇為沖洗塊使塊沖洗作業能夠藉助最小限度地重定位有效資料來實施,此乃因如此選擇之任一粉紅色塊均會因主機對檔案之刪除而已累積一最大未分配資料位址數。
粉紅色塊選擇過程之一實例可能係選擇屬5%具有最小有效頁或叢集數之粉紅色塊之列的任一粉紅色塊。在一後臺過程中,建立一由16個具有最低頁或叢集計數值之粉紅色塊構成之列表。粉紅色塊識別過程可在由"P"個排程塊沖洗作業所佔用之時間內完成一個循環。一沖洗塊識別過程中之一循環顯示於圖18中。如下文更詳細闡述,藉由儲存位址重映射功能保持一含有白色、粉紅色及其他類型之DLBA位址塊之塊位址列表之塊資訊表(BIT),並讀取該塊資訊表以識別接著該組在先前過程循環期間所識別之塊之下一組Q個粉紅色塊(於步驟220處)。第一組粉紅色塊應在裝置初始化之後的第一過程循環中識別。為了確保沖洗塊之可用性,Q之值應大於P之值。在一個構建形式中,Q之值可為8而P可為4。針對該組中之每一粉紅色塊將一有效 頁計數值設定至零(於步驟222處)。一次一個地掃描保持用於追蹤LBA與DLBA關係之儲存位址表(SAT)頁條目,以識別定位於該組中之任一粉紅色塊中之有效資料頁。下文將更詳細地闡述該儲存位址表。相應地遞增有效頁計數值。在掃描所有SAT頁之後,相對於該列表中之低有效頁計數值之粉紅色塊之有效頁計數值來評估該組中每一粉紅色塊之有效頁計數值(於步驟226處)。在完成一塊沖洗作業之後,應針對下一塊沖洗作業選擇一塊。此塊應係該列表中具有最低有效頁計數值之塊。
在開始一例如關於圖16-17所述這塊沖洗作業之前,必須映射選定塊以確定必須重定位之有效DLBA運行之位置。此係藉由一利用自塊讀取之選定資料頁之標頭中之LBA位址及此等LBA位址之SAT條目之搜索演算法來達成。該搜索演算法利用其逐漸建立之一對已知有效及廢棄DLBA運行之圖。當SAT條目界定其於塊中之存在時,將一有效DLBA運行添加至塊圖。當被映射之塊中之資料頁標頭中之一LBA範圍之SAT條目界定一有效DLBA於另一塊中之存在時,將一廢棄DLBA運行添加至塊圖。該搜索過程繼續直至已明確地將塊中之所有DLBA位址映射為有效可廢棄為止。
在一塊沖洗作業中,將上文所提及之塊映射過程中所識別之有效DLBA運行內之所有頁自選定塊重定位至重定位塊中之重定位指針。將經重定位DLBA之條目記錄於SAT列表中。在圖9所圖解闡釋之配置情況下,對有效及廢棄 DLBA運行之搜索可由記憶體系統2之控制器8執行,且塊DLBA圖可儲存於與該控制器相關聯之RAM中。針對圖10之配置,主機系統1處之一CPU可執行該搜索並將所得塊DLBA資訊儲存於與該主機系統CPU相關聯之RAM中。
儲存位址重映射演算法根據下述原則運作:當白色塊數降到一預定臨限值以下時,必須以一足以確保以與因在寫入塊中寫入主機資料而消耗之白色塊容量相同之速率形成可分配用於寫入資料之可用白色塊容量之速率來對粉紅色塊實施沖洗作業。必須藉由塊沖洗作業所恢復之廢棄頁數來平衡寫入塊中因寫入來自主機之資料而消耗之頁數。在完成一塊沖洗作業之後,藉由自BIT及SAT讀取特定條目來確定選擇用於下一塊沖洗作業之粉紅色塊中之廢棄資料頁數,如上文所提及。下一塊沖洗作業經排程以在將此有效資料頁數寫入至寫入塊之後即刻開始。
儲存位址表
為了實施上述儲存位址重映射,使用一儲存位址表(SAT)來追蹤儲存位址空間內之資料位置。SAT中之資訊亦作為一順序更新之一部分寫入至一完整的快閃元塊。因此,在一構建形式中,將SAT資訊寫入至一與用於自主機接收之資料之寫入塊分開並與用於快閃作業之重定位塊分開之寫入塊。在其他構建形式中,SAT資訊可儲存於不同的一組塊(例如一二元快閃分區而不是一由非SAT資訊佔用之MLC快閃分區中之塊)中。另一選擇係,SAT及非SAT資料可儲存、但由塊隔離於同一類型之快閃塊中。在再其他 實施例中,SAT及非SAT資料可混合於同一塊中。
SAT與圖8-10而不是圖11所示實施例相關,其中主機檔案系統將資料依序寫入於邏輯位址塊中而無需自一第一邏輯位址至一第二邏輯位址之轉換。而且,儘管下文說明著重於自一主機LBA至一與圖9-10所示主機及記憶體裝置組態相關之稱作DLBA(亦稱作儲存LBA)之第二LBA空間之重映射,但上述SAT技術亦可適用於其中與主機LBA相關聯之資料直接映射至實體塊而無一中介邏輯-邏輯轉換之圖8所示實施例。SAT資訊不管所述實施例如何均較佳儲存於該記憶體裝置中之快閃記憶體中。對於其中自主機LBA至DLBA之重映射在主機180上進行之圖10所示實施例而言,SAT資訊傳輸用於儲存於記憶體裝置184中之快閃記憶體中。對於其中儲存位址重映射演算法構建於該記憶體裝置內之記憶體管理程式中之圖8所示實施例而言,術語DLBA係指快閃記憶體7中之實體位址而不是指一用於圖9-10所示實施例中之第二邏輯位址空間,且DLBA位址塊表示實體記憶體中之元塊。
該儲存位址表(SAT)含有與由一主機檔案系統指配給DLBA位址之LBA位址有關的相關資訊。更特定而言,SAT用來記錄LBA位址空間中每一由該主機檔案系統分配給有效資料之位址運行與DLBA位址空間210中一個或多個由儲存位址重映射演算法形成之位址運行之間的映射。如上文所提及,系統位址空間單元係LBA且一LBA運行係一組連續LBA位址,其當前由主機檔案系統分配給有效資 料。一LBA運行常由未分配LBA位址限界,然而若SAT資料結構需要,則可將一LBA運行作為多個更小的LBA運行來管理。裝置位址空間單元係DLBA,且一DLBA運行係一組連續DLBA位址,其映射至同一LBA運行中之連續LBA位址。一DLBA運行終止於DLBA位址空間中之一塊邊界處。每一個LBA運行皆由SAT映射至一個或多個DLBA運行。一LBA運行之長度等於LBA運行映射至其之DLBA運行之累積長度。
一LBA運行之SAT條目含有一通至LBA運行映射至其之第一DLBA運行之條目之鏈路。DLBA運行亦可映射至其之後續DLBA運行係緊隨此運行之後的順序條目。一DLBA運行含有一通至DLBA運行映射至其之LBA運行內之DLBA運行偏移位址,但不通至該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運行而不是嚴格追蹤並更新一固定數量之邏輯位址。
由於SAT之運行至運行映射配置,一主機LBA位址運行可映射至兩個或更多個DLBA運行,其中該主機LBA運行係一組分配給有效資料之連續邏輯位址而一DLBA(或儲存LBA)運行係一組位於同一元塊內之連續DLBA位址且映射至同一主機LBA運行。SAT索引及映射結構之一層次顯示於圖19中。圖中顯示LBA 230及對應DLBA 232運行。LBA至DLBA映射資訊含於SAT 234頁中。LBA至SAT頁索引資訊含於SAT索引頁236中且一主頁索引238在圖10所示構建形式情況下高速緩存於與主機處理器相關聯之RAM中而在圖8-9所示構建形式情況下高速緩存於與控制8相關聯之RAM中。
SAT通常包含多個SAT塊,但SAT資訊可能只寫入至一當前指派為SAT寫入塊之單個塊。所有其他SAT塊已全部被寫入,且可含有一有效與廢棄頁組合。一SAT頁含有一可變主機LBA位址空間範圍內之所有LBA運行之條目,連 同運行映射至其之裝置位址空間中之運行之條目。一SAT索引頁含有一對一更大主機LBA位址空間範圍內之每一有效SAT頁之位置之索引。存在一小SAT索引頁數,其通常為1。SAT中之資訊藉由下述方式來加以修改:將一經更新之頁重寫於一單個SAT寫入塊中之下一可用位置處,並把頁之先前版本視為廢棄的。因此,SAT中可存在大量無效頁。SAT塊由類似於上文關於主機資料所述之用於寫入頁並沖洗塊之演算法管理。
SAT塊
每一SAT塊係一專用於儲存SAT資訊之DLBA位址塊。一SAT塊被劃分成可往其中寫入一SAT頁234或SAT索引頁236之表格頁。一SAT塊可含有有效SAT頁234、有效SAT索引頁236及廢棄頁之任一組合。參考圖20,圖中顯示一實例性SAT寫入塊240。資料寫入於SAT寫入塊240中由一遞增式SAT寫入指針242所界定之順序性位置處。資料只可寫入至指派為SAT寫入塊240之單個SAT塊。以與關於先前所述之主機資料寫入塊(例如,圖15-17中之項212)相同之方式,當SAT寫入塊240已寫滿時,將一白色塊分配為新SAT寫入塊240。一SAT頁位置在其SAT塊內由其序列號定址。
SAT頁
一SAT頁234係SAT中之最小可更新映射資訊單位。一經更新SAT頁234寫入於由SAT寫入指針242界定之位置處。一SAT頁234含有一組具有遞增LBA位址之LBA運行之映射 資訊,但該連續LBA運行位址不必為連續的。一SAT頁234中之LBA位址範圍不與任何其他SAT頁234中之LBA位址範圍重疊。SAT頁234可無限制地分散遍及整個一組SAT塊。任一LBA位址範圍之SAT頁234可位於任一SAT塊中。一SAT頁234可包括一索引緩衝區字段244、LBA字段246、DLBA字段248及一控制指針250。參數備份條目亦含有一些儲存於揮發性RAM中之參數之值。
一SAT頁234內之LBA字段含有處於一LBA位址範圍內之分配用於儲存資料之連續LBA位址運行之條目。一SAT頁234所跨越之LBA位址範圍不與任何其他SAT頁234所跨越之LBA條目範圍重疊。該LBA字段具有可變長度且含有一可變數量之LBA條目。在一LBA字段246內,存在一LBA條目252,其用於由SAT頁234索引之LBA位址範圍內之每一個LBA運行。一LBA運行映射至一個或多個DLBA運行。如圖21中所示,一LBA條目252含有以下資訊:運行中之第一LBA(254)、扇區中LBA運行之長度(256)、及LBA運行映射至其之第一DLBA運行之位於同一SAT頁234中之DLBA字段內之DLBA條目數(258)。
一SAT頁234內之DLBA字段248含有映射至同一SAT頁234中之LBA字段內之LBA運行之所有DLBA位址運行之條目。DLBA字段248具有可變長度且含有一可變數量之DLBA條目260。在一DLBA字段248內,存在一DLBA條目260,其用於映射至同一SAT頁234中之LBA字段246內之一LBA運行之每一DLBA運行。如圖22中所示,每一DLBA條 目260皆含有以下資訊:運行中之第一DLBA位址(262);及第一DLBA位址映射至其之LBA運行中之LBA偏移(264)。寫入為每一SAT頁234之一部分,但只在最近寫入之SAT頁234中繼續有效之SAT頁/索引緩衝區字段含有SAT索引條目266。
存在一SAT條目266,其用於當前在相關SAT索引頁236中不具有有效條目之SAT中之每一SAT頁234。一SAT索引條目每當寫入一SAT頁234時總是形成或更新,且在更新相關SAT索引頁236時刪除。該SAT索引條目含有:由SAT頁234索引之第一LBA(268)、由SAT頁234索引之最後LBA(270)、含有SAT頁234之SAT塊號碼(272)、及SAT塊內之SAT頁234之頁碼(274)。SAT索引字段276具有用於一固定數量之SAT索引條目278之容量。此數確定可藉以寫入SAT頁234及SAT索引頁236之相對頻率。在一構建形式中,此固定數可為32。
SAT頁字段指針250界定自LBA字段之開始至DLBA字段之開始之偏移。該SAT頁字段指針含有呈一LBA條目數形式之偏移值。一SAT頁234中之參數備份條目含有儲存於揮發性RAM中之參數之值。此等參數值係在一電力循環之後對RAM(在圖8-9所示構建形式情況下與控制器8相關聯,或在圖10所示構建形式情況下與主機CPU相關聯)中之資訊進行初始化期間使用。此等參數值只在最近寫入之SAT頁234中有效。
SAT索引頁
一組SAT索引頁236提供一對SAT中之每一有效SAT頁234之位置的索引。一個別SAT索引頁236含有界定與一LBA位址範圍相關之有效SAT頁之位置的條目278。一SAT索引頁236所跨越之LBA位址範圍不與任何其他SAT索引頁236所跨越之LBA位址範圍重疊。條目係根據與其相關之SAT頁之LBA位址範圍值來進行排序。一SAT索引頁236含有一固定數量之條目。SAT索引頁236可無限制地分散遍及整個一組SAT塊。任一LBA位址範圍之SAT索引頁236可位於任一SAT塊中。一SAT索引頁236包含一SAT索引字段及一頁索引字段。
SAT索引字段276含有SAT索引頁236所跨越之LBA位址範圍內之所有有效SAT頁之SAT索引條目。一SAT索引條目278與一單個SAT頁234相關,且含有以下資訊:由SAT頁234索引之第一LBA、含有SAT頁234之SAT塊號碼及SAT塊內之SAT頁234之頁碼。該頁索引字段含有SAT中所有有效SAT索引頁236之頁索引條目。一頁索引條目針對SAT中每一有效SAT索引頁236而存在,且含有以下資訊:由SAT索引頁索引之第一LBA、含有SAT索引頁之SAT塊號碼及SAT塊內之SAT索引頁之頁碼。一頁索引條目只在最近寫入之SAT索引頁236中有效。
臨時SAT資料結構
儘管圖19中未顯示用於長期儲存位址映射之SAT層次之部分,但亦可在一層次程序中額外資料結構來更新SAT。一種這樣的結構係一SAT列表,其包含由尚未寫入於一 SAT頁234中之由LBA運行更新作業或塊沖洗作業所引起之新位址映射之新條目之LBA條目及對應DLBA映射。SAT列表可係RAM中之一揮發性結構。SAT列表中之條目在其於一SAT頁更新期間寫入至一SAT頁234時被清除。
表格頁
一表格頁係一SAT塊內之一固定大小之DLBA位址空間單元,其用於儲存一個SAT頁234可一個SAT索引頁236。表格頁之最小大小係一個頁而最大大小係一個元頁,其中頁及元頁係對應於實體記憶體中之頁及元頁之DLBA位址空間單元。
SAT中之條目大小
SAT頁234及SAT索引頁236內之條目之大小顯示於表1中。
位址轉換
SAT適用於快速定位對應於主機檔案系統之LBA位址之DLBA位址。在一實施例中,SAT中僅包括映射至有效資 料之LBA位址。由於SAT頁234按LBA次序配置成在自一個SAT頁234至另一個SAT頁234之LBA範圍內不重疊,因此可使用一簡單的搜索演算法來快速追蹤所期望資料。此位址轉換程序之一實例顯示於圖24中。一目標LBA 280首先由控制器或處理器接收(此視儲存位址重映射構建形式是否分別如在圖9或圖10中組態而定)。在其他實施例中,涵蓋SAT可包括映射至有效資料及廢棄資料之LBA位址並追蹤資料是否為有效或廢棄。
除圖解闡釋位址轉換程序以外,圖24還顯示如何可組態來自最後寫入之SAT索引頁之頁索引字段及來自最後寫入之SAT頁之索引緩衝區字段。在圖24之構建形式中,該兩個字段臨時保持於揮發性記憶體(例如儲存裝置或主機中之RAM)中。最後寫入之SAT索引頁中之頁索引字段包括對每一SAT索引頁之指針。索引緩衝區字段可含有一組尚未寫入至索引頁中之最近寫入之SAT頁之索引條目。
關於一目標LBA位址至一對應DLBA位址之映射資訊保持於一專用SAT頁234中,該專用SAT頁含有關於一囊括目標位址之LBA位址範圍之所有映射資訊。位址轉換程序之第一階段係識別並讀取此目標SAT頁。參考圖24,對最後寫入之SAT頁中之索引緩衝區字段之一高速緩存版本實施二元搜索,以確定是否存在目標LBA之SAT索引條目(於步驟282處)。若最近已重寫目標SAT頁,但尚未寫入一納含一記錄目標SAT頁之新位置之SAT索引條目之SAT索引頁,則將存在一條目。若發現目標LBA之SAT索引條目, 則其界定目標SAT頁之位置且讀取此頁(於步驟284處)。
若在步驟282中未發現目標LBA之SAT索引條目,則對最後寫入之SAT索引頁中之頁索引字段之一高速緩存版本實施二元搜索,以定位於目標LBA之SAT索引條目(於步驟286處)。步驟286中所發現之目標LBA之SAT索引條目界定含有目標LBA之LBA位址範圍內之SAT索引頁之位置。讀取此頁(於步驟288處)。實施二元搜索以定位目標LBA之SAT索引條目(於步驟290處)。目標LBA之SAT索引條目界定目標SAT頁之位置。讀取此頁(於步驟292處)。
當尚未在步驟284或步驟292處讀取目標SAT頁時,可按下述方式實施LBA至DLBA轉換。對LBA字段實施二元搜索,以定位納含目標LBA之目標LBA運行之LBA條目。記錄目標LBA運行內之目標LBA之偏移(於步驟294處)。字段指針中之資訊界定用於二元搜索之LBA字段之長度以及相對於LBA字段之開始之DLBA字段之開始(於步驟296處)。步驟294中所發現之LBA條目界定映射至LBA運行之第一DLBA條目之DLBA字段內之位置(於步驟298處)。連同步驟298中所定位之多個DLBA條目中之一者使用步驟294中所確定之偏移,以確定目標DLBA位址(於步驟300處)。
在另一實施例中,不是針對與有效資料相關聯之每一LBA位址運行在SAT中產生一單獨的LBA條目,而是可將LBA位址塊映射於SAT中以使每一LBA位址塊皆係SAT上之一單個條目。在此實施例中,可將LBA位址空間中之完整的LBA位址塊記錄於SAT而不是僅個別LBA運行中。此 構建形式中之LBA條目將係一單個條目,其列出LBA位址塊映射至其之DLBA位址空間中之DLBA運行數及一對同一SAT頁中第一DLBA運行之指針。一LBA位址塊可映射至最少一個DLBA運行或最多LBA位址塊中之叢集數,此視記憶體裝置中所儲存之資料之碎裂程度而定。
LBA位址塊之對應DLBA條目將既列出每一DLBA運行之DLBA塊及位址偏移亦列出其對應LBA偏移。與記錄每一個LBA運行之一單獨的LBA條目之上述SAT之版本(其中僅記錄與有效資料相關聯之LBA運行)不同,記錄一LBA位址塊中之每一LBA運行。因此,記錄當前未分配給有效資料之LBA位址塊中之LBA運行以及分配給有效資料之LBA運行。在SAT頁之DLBA條目部分中,標記一組未分配LBA之開頭之LBA偏移與DLBA位址空間中之一預設值配對。此預設值表示未分配之位址。上述總體SAT結構及功能性以及參照圖19-20所述之基本SAT層次適用於LBA位址塊映射構建形式,然而SAT頁表示LBA位址塊至DLBA運行映射資訊而不是個別LBA運行至DLBA運行資訊。而且,在此構建形式中,SAT索引頁儲存LBA位址塊至SAT頁映射資訊。
SAT實例
例如,一使用圖9或10所示邏輯-邏輯儲存位址重映射技術、使用圖19-23所示個別LBA運行至DLBA運行映射之資料寫入過程顯示於圖25中。在圖25中,針對時間A-D顯示一LBA位址空間302及一DLBA位址空間304。在時間A處, 資料由主機按順序L1、L2及L3寫入於三個單獨的LBA運行中。在LBA空間302中,每一資料運行皆與另一資料運行分離開。該三個LBA運行隨後按接收其之時間次序映射至時間A中所示之DLBA位址空間中之塊。此實例假定DLBA位址空間304中第一叢集塊為當前寫入塊。因此,LBA位址運行L1被拆分成DLBA位址運行D1及在指派為寫入塊之另一白色塊中D2。同樣地,且依序在D2之後,LBA位址空間運行L2轉換成DLBA位址空間運行D3。最後DLBA位址空間運行L3隨後用於以DLBA位址空間運行D4來結束叢集塊並以DLBA位址空間運行D5來開始一新寫入塊。參考下表A,到現在為止所闡述之LBA至DLBA轉換將在時間A處產生一其中該等LBA運行中之每一者皆提供有一指針、LBA位址空間中之一叢集長度及一DLBA指針之SAT。
在SAT之DLBA條目側,列出對應於一LBA運行之每一個DLBA運行。在此實例中,存在兩個DLBA運行,此乃因單個LBA選擇L1已在DLBA位址空間中分成兩個單獨的塊。在每一DLBA運行之後,提供一LBA偏移數以提供一與第一LBA叢集及DLBA標誌之偏移。因此,由於標誌DLBA2以係5個進入LBA運行L1中之叢集之位址來繼續,因此其偏移係5個叢集。LBA2及LBA3標誌繼續按LBA順序列出於SAT之LBA條目側上。因此,儘管DLBA位址空間中之資料運行對應於L1、L2及L3(其中L1、L2及L3表示寫入此等單獨運行之次序),但該表之LBA條目側按LBA位址次序而不是LBA時間次序組織。
重新參考圖25,在時間B處,一額外LBA位址運行L4已額外至L2。運行L2及L4實際上形成一單個LBA運行,但為清晰起見在此實例中單獨識別。用於L4之資料以DLBA位址運行D6形式寫入於D5中最後條目之後經部分填充的第三個寫入塊中。如表B中所示,時間B之後的SAT只在該表之LBA條目側之端部處添加LBA4標誌且指向DLBA條目側中之DLBA7。
參考圖25中之時間C處之活動,主機已刪除其資料寫入於LBA位址運行L1及L2之該檔案或該等檔案。在DLBA位址空間304中,L1對應於D1及D2且L2對應於D3。由於此等運行此刻係指廢棄資料,因此在此實例先前係紅色塊之兩個位址塊此刻因有效(紅色)與廢棄(白色)資料之混合而變為粉紅色塊。如下表C中所示,SAT相應地得到更新。所有廢棄LBA運行均被移除從而只剩下有效LBA運行。由於只剩下LBA位址空間運行L3及L4,因此LBA條目只含有標誌LBA2及LBA4以及對應的DLBA指針。SAT之DLBA條目側亦只含有有效資料所需之DLBA指針。
在圖25中所示之最後時間瞬態(時間D)中,原始LBA位址空間L3已在LBA位址空間L5處由主機以資訊部分地更新。對應DLBA位址空間轉換係至D4及D5之廢棄部分以顯示額外白色空間並隨後在DLBA位址空間中之當前寫入塊之端部處依序添加新LBA運行L5直到完成彼塊並識別一新寫入塊以便可將LBA位址空間運行之其餘部分轉換至DLBA位址。由此產生DLBA運行D7,以結束一個寫入塊,並產生D8,以開始一新寫入塊。參考下表D,再次更 新該等表以使LBA空間302中之LBA2指針仍指向DLBA空間304中之第一DLBA指針,但DLBA條目側包括額外的三個DLBA指針以開始對應於與L3對應DLBA位址之其餘位址之DLBA運行。由於在LBA位址空間302中未對L4作任何改變,因此對應於LBA4之L4之條目保持不變。應注意,圖25之實例似乎顯示連續叢集塊。儘管可能連續叢集塊可供使用,但預期DLBA位址空間塊將由一個或多個中介塊隔開。提供連續DLBA位址空間塊,只是為了方便說明。
構建一類似於上文關於DLBA位址資料塊所述之SAT沖洗方案以刪去廢棄SAT資訊並形成白色塊以供再使用。
儲存位址重映射演算法按照以下原則運作:當白色塊數降到一預定臨限值以下時,必須以一足以確保以與因在寫入塊中寫入主機資料而消耗之白色塊容量相同之速率形成可分配用於寫入資料之可用白色塊容量之速率來對粉紅色塊實施沖洗(亦稱作重定位)作業。可分配用於寫入資料之可用白色叢集容量係白色塊中之容量,外加可在沖洗作業期間將資料寫入至其之重定位塊內之白色叢集容量。
若選擇用於沖洗作業之粉紅色塊中之白色叢集容量佔用每一粉紅色塊之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寫入之$位元圖檔案來偵測對未分配位址之指派。可以兩種方式對沖洗作業進行排程。較佳地,沖洗作業用作一背景作業,且因此只在SSD或其他可攜式快閃記憶體裝置處 於空閒狀態時才起作用以使主機資料寫入速度不受影響。另一選擇係,可在主機寫入資料時處於活動狀態之前臺作業中使用沖洗作業。若沖洗作業配置為前臺作業,則此等作業可在主機活動進行時或在一"沖洗高速緩存"命令表示SSD或可攜式快閃記憶體裝置之可能掉電時自動暫停。前臺及後臺沖洗作業選項可係一動態決策,其中前臺作業在記憶體裝置之空閒狀態期間需要一高於可達到之沖洗速率時實施。舉例而言,主機或記憶體裝置可在前臺與後臺沖洗作業之間雙態切換從而控制沖洗速率以保持恆定主機資料寫入速率直至記憶體裝置已滿為止。前臺沖洗作業可與主機資料寫入作業交錯。舉例而言,若因主機介面之持續活動而不存在足夠的空閒時間,則用於實施塊沖洗作業之資料頁重定位可回應於主機命令而以短叢發形式與裝置活動交錯。
SAT更新程序
使用表2中所示之層次程序來更新SAT資料結構內之元件。
如表2中所示,除DLBA運行更新以外,針對一特定結構之SAT更新由SAT層次中一低階結構中之活動觸發。每當與一完整DLBA運行相關聯之資料寫入至一寫入塊時總是更新SAT列表。當SAT列表中存在最大允許條目數時更新一個或多個SAT頁。當一SAT頁得到更新時,一個或多個來自SAT列表之條目添加至SAT列表,並自SAT列表移除。在SAT列表已滿時更新之SAT頁可劃分成多個不同頁組群,且只需在一單個作業中更新一單個組群。此可幫助使SAT更新作業可延遲由主機提供資料寫入作業之時間最小化。在此種情況下,僅自SAT列表移除自SAT列表複製至尚未更新之SAT頁組群之條目。一經更新SAT頁組群之大小可設定至一不影響主機1存取記憶體系統2之能力之特定程度。在一構建形式中,組群大小可為4個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範圍。然後,若可能的話,在一單個程式化作業中寫入該兩個頁。當該等頁係SAT頁時,最後寫入之SAT頁中之索引緩衝區字段中包括該兩個頁之SAT索引條目。當該等頁係SAT索引頁時,最後寫入之SAT索引頁中之頁索引字段中包括頁索引條目。
當兩個或更多個SAT頁,或兩個具有毗鄰LBA範圍之SAT索引頁係輕微填充時,可將該等頁歸併成一單個頁。歸併係在所得單個頁將填充不超過80%時啟動。該新單個頁之LBA範圍係由單獨歸併之頁所跨越之範圍界定。當所歸併頁係SAT頁時,在最後寫入之SAT頁中之索引緩衝區字段中,更新該新頁及所歸併頁之SAT索引條目。當頁係 SAT索引頁時,在最後寫入之SAT索引頁中之頁索引字段中,更新頁索引條目。
在一電力循環之後,亦即已移除及恢復電力之後,必須將RAM中之SAT列表重構至其在該電力循環之前所處之狀態完全相同的狀態。此可藉由下述方式來實現:掃描所有寫入塊及重定位塊,以根據資料標頭中之LBA位址資訊,識別自最後頁更新以後已寫入之額外資料。此等塊之位置及在最後SAT頁更新時其中之寫入及重定位指針之位置亦記錄於最後寫入之SAT頁中之一字段中。因此,掃描只需從此等指針之位置開始。
沖洗SAT塊
用於沖洗SAT塊之過程類似於上文針對自主機接收之資料所述之過程,但僅對SAT塊起作用。由儲存位址重映射寫入及沖洗演算法所引起之對SAT之更新致使SAT塊在塊狀態之間進行轉換,如圖26中所示。首先,將一來自白色塊列表之白色塊分配為SAT寫入塊(於310處)。當已分配SAT寫入塊中之最後頁時,該塊變為一紅色SAT塊(於312處)。若其中一些頁已變廢,則有可能SAT寫入塊亦可進行至粉紅色SAT塊之轉換。然而,為了清晰之目的,該轉換未顯示於圖26中。當SAT頁或SAT索引頁得到更新且紅色SAT塊變成粉紅色SAT塊時,紅色SAT塊中之一個或多個頁被變廢(於314處)。當已完成對一選定粉紅色SAT塊之沖洗作業時,該粉紅色SAT塊變為一白色塊(於316處)。
現在將闡述用於選擇哪些SAT塊將經受一沖洗程序之過 程。將一含有一小有效頁或叢集數之SAT塊選擇為下一個欲沖洗之SAT塊。該塊應屬5%具有最小有效頁數之SAT塊之列。塊之選擇可藉由一建立一由16個具有最低有效頁計數值之SAT塊構成之列表的後臺過程來實現。此過程應較佳在一由M個排程SAT塊沖洗作業所佔用之時間內完成一個循環。
發生於用於確定接下來沖洗哪些SAT塊之後臺過程之一個循環中之活動之一實例顯示於圖27中。首先,掃描塊資訊表(BIT)以識別接著該組在先前過程循環期間所識別之塊之下一組N個SAT塊(於步驟318處)。第一組SAT塊應在裝置初始化之後的第一過程循環中識別。N之值可選擇為適於特定應用且較佳大於針對M所選之值以確保SAT沖洗塊之可用性。作為一實例,M可係4且N可係8。針對該組中每一個SAT塊,將一有效頁計數值設定至零(於步驟320處)。然後,在高速緩存頁索引字段中掃描頁索引條目,以識別定位於該組中之任一SAT塊中之有效SAT索引頁(於步驟322處)。相應地遞增有效頁計數值。依次在每一SAT索引頁中掃描SAT索引條目,以識別定位於該組中任一SAT塊中之有效SAT頁(於步驟324處)。相應地遞增有效頁計數值(於步驟326處)。在掃描頁索引及SAT索引頁以確定有效頁計數值之後,相對於該列表中具有低有效頁計數值之SAT塊之有效頁計數值評估該組中每一SAT塊之有效頁計數值,並在必要時用該組中之塊來替換該列表中之塊。當應排程SAT塊沖洗作業時,選擇該列表中具有最低有效 頁計數值之塊。
在一SAT塊沖洗作業中,將所有有效SAT索引頁及SAT頁自所選定塊重定位至SAT寫入指針242。只在最後寫入之SAT索引頁中更新頁索引字段。為了使SAT塊數保持大致恆定,必須藉由由SAT塊沖洗作業所恢復之廢棄SAT頁及SAT索引頁數來平衡因對SAT頁及SAT索引頁之更新作業而消耗之SAT中之頁數。如上文參照圖27所述,確定選擇用於下一SAT沖洗作業之SAT塊中之廢棄資訊頁數。下一SAT塊沖洗作業可經排程以在自先前SAT沖洗作業以後已將相同數量之有效資訊頁寫入至SAT時進行。
塊資訊表(BIT)
塊資訊表(BIT)用於記錄白色塊、粉紅色塊及SAT塊之單獨塊位址列表。一BIT寫入塊含有關於所有其他BIT塊定位於何處之資訊。在一構建形式中,需要儲存位址重映射演算法及關聯系統保持一白色塊列表以供選擇欲分配為白色塊、重定位塊或SAT塊之塊。需要保持一粉紅色塊列表,以供選擇欲為塊沖洗作業之標的物之粉紅色塊及SAT塊。此等列表保持於一其結構嚴格鏡像SAT之結構之BIT中。
BIT資料結構
該BIT構建於稱作BIT塊之DLBA位址塊內。塊列表資訊儲存於BIT頁內,且"DLBA塊至BIT頁"索引資訊儲存於BIT索引頁內。BIT頁與BIT索引頁可按任一次序混合於同一BIT塊內。該BIT可由多個BIT塊構成,但BIT資訊只可寫入至當前指定為BIT寫入塊之單個塊。所有其他BIT塊先前 均已寫滿,且可含有有效頁與廢棄頁之一組合。構建一與上文所述之SAT塊之方案相同之BIT塊沖洗方案以刪去廢棄BIT資訊頁並形成白色塊以供再使用。
BIT塊
一如圖28中所示之BIT塊係一專用於儲存BIT資訊之DLBA位址塊。其可含有BIT頁342及BIT索引頁344。一BIT塊可含有有效BIT頁、有效BIT索引頁與廢棄頁之任一組合。BIT資訊只可寫入至指定為BIT寫入塊340之單個BIT塊。BIT資訊寫入於BIT寫入塊340中由一遞增BIT寫入指針346界定之順序性位置處。當BIT寫入塊340已寫滿時,將一白色塊分配為新BIT寫入塊。構成BIT之塊皆藉由其BIT塊位置來加以識別,其BIT塊位置係其在裝置中之塊群體內之塊位址。一BIT塊被劃分成可往其中寫入一BIT頁342或BIT索引頁344之表格頁。一BIT頁位置係由其於其BIT塊內之序列號定址。BIT資訊可與不同快閃記憶體塊中之非BIT資訊隔離,可隔離至一不同於非BIT資訊之類型之塊(例如二元與MLC),或可與塊中之非BIT資訊混合。BIT頁 一BIT頁342係BIT中之最大可更新塊列表資訊單位。一經更新之BIT頁寫入於由BIT寫入指針346界定之位置處。一BIT頁342含有具有處於一界定範圍內之DLBA塊位址之白色塊、粉紅色塊及SAT塊列表,但任何列表中之連續塊之塊位址不必為連續的。BIT頁中之DLBA塊位址範圍不與任何其他BIT頁中之DLBA塊位址範圍重疊。BIT頁可無限 制地分散遍及整個一組BIT塊。任一DLBA位址範圍之BIT頁皆可位於任一BIT塊中。一BIT頁包含:一白色塊列表(WBL)字段348、一粉紅色塊列表(PBL)字段350、一SAT塊列表(SBL)字段352及一索引緩衝區字段354,外加兩個控制指針356。參數備份條目亦含有一些儲存於揮發性RAM中之參數之值。
一BIT頁342內之WBL字段348含有處於與BIT頁342相關之DLBA塊位址範圍內之白色塊列表中之塊之條目。一BIT頁342所跨越之DLBA塊位址範圍不與任何其他BIT頁342所跨越之DLBA塊位址範圍重疊。WBL字段348具有可變長度且含有一可變數量之WBL條目。在該WBL字段內,一WBL條目針對處於由BIT頁342索引之DLBA塊位址範圍內之每一白色塊而存在。一WBL條目含有塊之DLBA位址。
一BIT頁342內之PBL字段350含有處於與BIT頁342相關之DLBA塊位址範圍內之粉紅色塊列表中之塊之條目。一BIT頁342所跨越之DLBA塊位址範圍不與任何其他BIT頁342所跨越之DLBA塊位址範圍重疊。PBL字段350具有可變長度且含有一可變數量之PBL條目。在PBL字段350內,一PBL條目針對處於由BIT頁342索引之DLBA塊位址範圍內之每一粉紅色塊而存在。一PBL條目含有塊之DLBA位址。
一BIT頁內之SBL字段352含有處於與BIT頁342相關之DLBA塊位址範圍內之SAT塊列表中之塊之條目。一BIT頁342所跨越之DLBA塊位址範圍不與任何其他BIT頁342所跨 越之DLBA塊位址範圍重疊。SBL字段352具有可變長度且含有一可變數量之SBL條目。在SBL字段352內,一SBL條目針對處於由BIT頁352索引之DLBA塊位址範圍內之塊之每一SAT塊而存在。一SBL條目含有塊之DLBA位址。
一索引緩衝區字段354寫入為每一BIT頁342之一部分,但只在最近寫入之BIT頁中繼續有效。一BIT頁342之索引緩衝區字段354含有BIT索引條目。一BIT索引條目針對當前在相關BIT索引頁344中不具有有效條目之BIT中之每一BIT頁342而存在。一BIT索引條目每當寫入一BIT頁342時總是形成或更新,且在更新相關BIT索引頁344時刪除。BIT索引條目可含有:由BIT頁342索引之範圍之第一DLBA塊位址、由BIT頁342索引之範圍之最後DLBA塊位址、含有BIT頁342之BIT塊位置及該BIT塊內之BIT頁之BIT頁位置。索引緩衝區字段354具有用於一暫時界定為32之固定BIT索引條目數之容量。此數確定可藉以寫入BIT頁342及BIT索引頁344之相對頻率。
一BIT頁342之控制指針356界定相對於PBL字段350之開始及SBL字段352之開始之WBL字段348之開始之偏移。BIT頁342含有作為一列表條目數之偏移值。
BIT索引頁
一BIT索引頁344提供一對BIT中之每一有效BIT頁342之位置之索引。一個別BIT索引頁344含有界定與一DLBA塊位址相關之有效BIT頁之位置的索引。一BIT索引頁所跨越之DLBA塊位址範圍不與任何其他BIT索引頁344所跨越之 DLBA塊位址範圍重疊。條目係根據與其相關之BIT頁342之DLBA塊位址範圍值來進行排序。一BIT索引頁344含有一固定條目數。
BIT索引頁可無限制地分散遍及整個一組BIT塊。任一DLBA塊位址範圍之BIT索引頁344皆可位於任一BIT塊中。一BIT索引頁344包含一BIT索引字段358及一頁索引字段360。BIT索引字段358含有處於BIT索引頁344所跨越之DLBA塊位址範圍內之所有有效BIT頁之BIT索引條目。一BIT索引條目與一單個BIT頁342相關,且可含有:由BIT頁索引之第一DLBA塊、含有BIT頁之BIT塊位置及BIT塊內之BIT頁之BIT頁位置。
一BIT索引頁344之頁索引字段360含有BIT中所有有效BIT索引頁之頁索引條目。一BIT頁索引條目針對BIT中每一有效BIT索引頁344而存在,且可含有:由BIT索引頁索引之第一DLBA塊、含有BIT索引頁之BIT塊位置及BIT塊內之BIT索引頁之BIT頁位置。
保持BIT
更新一BIT頁342以對WBL 348、PBL 350及SBL 352添加條目或自WBL 348、PBL 350及SBL 352移除條目。對若干條目之更新可累積於RAM中之一列表中並在一單個作業中實施於BIT中,其限制條件係該列表可在一電力循環之恢復至RAM。BIT索引緩衝區字段在最近寫入之BIT頁中有效。其每當寫入一BIT頁時總是得到更新而無需額外程式化。當一BIT索引頁得到更新時,一個或多個來自BIT索引 緩衝區之條目添加至BIT索引頁,並自BIT索引緩衝區移除。當BIT索引緩衝區中存在最大允許條目數時,更新一個或多個BIT索引頁344。
在BIT頁342或BIT索引頁344所跨越之DLBA塊範圍內需要之條目數係可變的,且可隨著時間變化。因此,BIT中之頁溢流,或頁變為極輕微填充並非不常見。此等情形係藉由用於拆分並歸併BIT中之頁之方案來加以管理。
當欲在更新BIT頁342或BIT索引頁344期間添加條目,但該頁中不存在足以可供用於適應該變化之可使用空間時,將該頁拆分成兩個頁。引入一新SAT頁或SAT索引頁,並針對先前滿的頁及新空頁確定將賦予每一者一將使其半滿之條目數之LBA範圍。然後在一單個程式化作業中寫入該兩個頁,若可能的話。當該等頁係BIT頁342時,該兩個頁之BIT索引條目包括於最後寫入之BIT頁中之索引緩衝區字段中。當該等頁係BIT索引頁344時,頁索引條目包括於最後寫入之BIT索引頁中之頁索引字段中。
相反地,當兩個或更多個BIT頁342,或兩個具有毗鄰DLBA塊範圍之BIT索引頁344係輕微填充時,可將該等頁歸併成一單個頁。歸併係在所得單個頁將填充不超過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資訊)只可寫入至一單個控制寫入塊,一控制寫入指針將識別下一個順序性位置以接收控制資料,且在一控制寫入塊寫滿時將一寫入塊分配為新控制寫入塊。此外,控制塊可分別藉由其於記憶體系統2中之二元塊群體中之塊位址來加以識別。可以與關於上文所述之被隔離之SAT及BIT塊所述相同之方式沖洗控制塊以產生新未寫入容量,而不同之處在於一控制塊之一重定位塊可接受與有效SAT或BIT資訊相關之頁。可以與上述關於SAT沖洗過程所述相同之方式來實施對一適於沖洗之粉紅色控制塊之選擇及定時。
監控LBA分配狀態
儲存位址重映射演算法記錄僅針對當前由主機分配給有效資料之主機LBA位址之位址映射資訊。因此,必須確定主機何時將叢集與資料儲存解除分配,以便準確地保持此映射資訊。
在一實施例中,一來自主機檔案系統之命令可為儲存位址重映射演算法提供關於解除分配之叢集之資訊。舉例而言,已推薦一種"資料集"命令,其用於微軟公司之Vista作業系統。微軟已向T13提出一關於"關於ATA8-ACS2之刪除資料通知建議(Notification of Deleted Data Proposal for ATA8-ACS2)"之建議。此新命令旨在提供刪除資料通知。一單個命令可把表示多達2GB廢棄資料之連續LBA位址處之資料刪除通知一裝置。
解釋NTFS元資料
若一主機檔案系統命令(例如修剪命令)不可用,則可藉由追蹤由NTFS寫入之$位元圖系統檔案中之資訊變化來監控LBA分配狀態。現在闡述一個用於追蹤個人電腦(PC)中之$位元圖變化之實例。
分區引導扇區
分區引導扇區係分區上之扇區0。位元組偏移0x30處之字段含有針對主檔案表(MFT)之開始之邏輯叢集數,如表3上之實例。
MFT中之$位元圖記錄
一名為$位元圖之系統檔案含有卷冊上之所有叢集之分配狀態之一位元圖。對該$位元圖檔案之記錄係MFT中之記錄號6。一MFT記錄具有一為1024位元組之長度。因此,該$位元圖記錄具有一相對於該MFT之開始之十進製12個扇區偏移。在上述實例中,該MFT從叢集0xC4FD2,或806866十進製(其係扇區6454928十進製)開始。因此,該$位元圖檔案記錄從扇區6454940十進製開始。
以下資訊存在於該$位元圖記錄內(在所述實例中)。位元組偏移0x141至0x142處之字段含有該$位元圖檔案之第一資料屬性之叢集中之長度,如在表4所示實例中。
位元組偏移0x143至0x145處之字段含有該$位元圖檔案之第一資料屬性之開始之叢集號,如在表5所示實例中。
位元組偏移0x147至0x148處之字段含有該$位元圖檔案之第二資料屬性之叢集中之長度,如在表6所示實例中。
位元組偏移0x149至0x14B處之字段含有該$位元圖檔案之第一資料屬性之開始與第二資料屬性之開始之間的叢集數,如在表7所示實例中。
$位元圖檔案之資料屬性
處於$位元圖檔案之資料屬性範圍內之扇區含有按照邏輯叢集號次序之卷冊中每一叢集之分配狀態之位元圖。'1'表示一叢集已由檔案系統分配給資料儲存,'0'表示一叢集處於空閒狀態。該位元圖中每一位元組皆與一由8個叢集 或64個十進製扇區構成之邏輯範圍相關。該位元圖中每一扇區皆與一由0×1000(4096十進製)個扇區或0×8000(32768十進製)個扇區構成之邏輯範圍相關。該位元圖中每一叢集皆與一由0×8000(32768十進製)個扇區或0×40000(262144十進製)扇區構成之邏輯範圍相關。
保持叢集分配狀態
每當一來自主機之寫入作業係針對一處於$位元圖檔案之資料屬性範圍內之扇區時,總是必須自儲存裝置讀取該扇區之先前版本並將其資料與剛剛由主機寫入之資料相比較。必須識別已自"1"狀態雙態切換至"0"狀態之所有位元,並確定已由主機解除分配之叢集之對應邏輯位址。每當一命令(例如所推薦之修剪命令或NTFS元資料追蹤)指示已存在由主機實施之叢集解除分配時,總是必須更新儲存址表(SAT)以記錄對所指定叢集之位址之解除分配。
邏輯至實體映射
上文說明主要著重於一其中需要一自主機LBA位址空間至DLBA位址空間(亦稱作儲存LBA空間)之邏輯至邏輯映射之儲存位址重映射之構建形式。如上文所提及,圖8所示實施例(其中將映射演算法併入記憶體裝置之記憶體管理程式中而不是記憶體裝置或主機上之一單獨的應用程式中(如分別在圖9-10中))自主機LBA映射至記憶體系統2中之實體位址。在圖8所示實施例中,上文所述之DLBA由實體記憶體位址而不是一中間邏輯位址取代。圖8所示配置中之儲存重映射演算法係記憶體系統2中之記憶體控制器8之 一部分而不是記憶體系統2或主機1上之一單獨的應用程式(分別在圖9及10中)。
參照圖29-32,可注意到圖8所示邏輯至實體映射配置與圖9-10所示邏輯至邏輯映射配置之間的區別。圖29顯示邏輯至實體儲存位址重映射演算法如何將實體記憶體中之可用白色塊之一分配為寫入塊412,且LBA位址空間408中之每一LBA位址係如何映射至一存在於寫入塊412中之實體位址空間410中之順序性位置。不管LBA位址位置如何均按接收LBA位址之次序向實體位址空間410中之寫入塊412寫入。在此實例中,如在圖15所示並行邏輯至邏輯映射實例中,為便於說明假定主機使用空閒LBA叢集之時間次序與位址次序相同,但不管LBA位址號次序如何儲存位址重映射演算法均將按使用LBA位址之時間次序指配寫入塊412中之實體位址。資料寫入於一寫入塊中一個或多個資料運行中。一資料運行係一組映射至同一LBA運行中之連續LBA位址之連續實體位址。一資料運行終止於實體位址空間410中之一塊邊界處。當一寫入塊412變滿時,將一新白色塊分配為下一寫入塊412。因此,不是指配一中間邏輯位址,而是在傳入資料直接寫入至實體記憶體時邏輯至邏輯配置記錄傳入資料。
類似於圖9-10所示邏輯至邏輯映射配置,用於圖8所示邏輯至實體配置之儲存位址重映射演算法運作以確保一充足白色塊供應可供順序性寫入演算法運作。儲存位址重映射演算法藉由沖洗資料自粉紅色塊一重定位塊416(圖30)來 管理白色塊之形成。當前選擇用於沖洗之粉紅色塊稱作沖洗塊。
如圖29-30中所示,圖中顯示一對一塊沖洗過程之例示。儲存位址重映射演算法將一白色塊指定為重定位塊416,資料將自選定粉紅色塊沖洗至重定位塊416以形成額外白色塊。將資料自沖洗塊(圖29所示粉紅色塊A)中含有有效資料(亦稱作紅色資料)之位置重定位至重定位塊416中之順序性位址,以將該沖洗塊轉換至一白色塊418。從圖31中所示之其餘粉紅色塊中識別下一沖洗塊(圖30所示粉紅色塊B)。將具有最少有效資料(最少紅色資料)之粉紅色塊或一自一當前具有少於一平均有效資料量或少於某一預定臨限量之粉紅色塊列表選擇之粉紅色塊重新指定為沖洗塊並將該粉紅色塊之紅色資料(有效資料)按該有效資料在該粉紅色塊中出現之次序傳送至開放重定位塊416中之順序性實體位置。對粉紅色塊之沖洗作業實施為背景作業以便以一足以補償指定為寫入塊之白色塊418之消耗之速率形成白色塊418。圖29-31所示實例圖解闡釋如何可針對來自主機之新資料及針對來自粉紅色塊之經重定位資料單獨地保持一寫入塊及一重定位塊。在其他構建形式中,可將該新資料及該經重定位資料傳送至一單個寫入塊而無需單獨的寫入及重定位塊。
用於邏輯至實體重映射之SAT
一SAT亦用於圖8所示邏輯至實體配置。該SAT具有在此處與在邏輯至邏輯儲存位址重映射配置中相同之基本結 構,其中DLBA(亦稱作儲存LBA)位址資訊由資料運行之實體位址取代。邏輯至實體配置之SAT索引及映射結構之一層次圖解闡釋於圖32中。圖中顯示LBA 432及對應資料運行430。LBA至實體映射資訊含於SAT頁434中。LBA至SAT頁索引資訊含於SAT索引頁436中且一主頁索引438高速緩存於與控制器8相關聯之RAM中。該SAT可包含多個SAT塊或僅寫入至一當前指定為SAT寫入塊之單個塊。所有其他SAT塊皆已寫滿,且可含有有效頁與廢棄頁之一組合。實施一類似於針對主機資料塊之SAT塊沖洗方案以刪去廢棄SAT資訊頁並形成白色塊以供再使用。
如同上文所述之邏輯至邏輯SAT映射一樣,圖中之邏輯至實體配置係一可自動擴展至最大數之可變大小表,此乃因SAT中之條目數將根據主機所指配之LBA之碎裂自動調整。因此,若主機指配高程度碎裂之LBA,則SAT將包括較在主機將較低程度碎裂之LBA組群指配給資料之情況下為多的條目。因此,若主機LBA變為較低程度碎裂,則SAT之大小將縮小。較低程度之碎裂導致映射較少單獨運行而較少單獨運行導致SAT中之較少條目,此乃因SAT將一主機LBA位址運行映射至一條目中之一個或多個資料運行(實體位址運行)而不是嚴格追蹤並更新一固定數量之邏輯位址。一主機LBA位址運行可映射至兩個或更多個資料運行,其中該主機LBA運行一組分配給有效資料之連續邏輯位址而該資料(或實體位址)運行係一組位於同一元塊內之實體位址且映射至同一主機LBA運行。
SAT塊
每一SAT塊係一專用於儲存SAT資訊之實體位址塊。一SAT塊被劃分成可往其中寫入一SAT頁434或SAT索引頁436。一SAT塊可含有有效SAT頁434、有效SAT索引頁436與廢棄頁之任一組合。參考圖33,圖中顯示SAT寫入塊440。資料寫入於SAT寫入塊440中由一遞增式SAT寫入指針442界定之順序性位置處。資料可只寫入至指定為SAT寫入塊440之單個SAT塊。資料寫入於SAT寫入塊440中由一遞增式SAT寫入指針442界定之順序性位置處。以與關於先前所述之主機資料寫入塊(例如圖15-17中之項212)相同之方式,當SAT寫入塊440已寫滿時,將一白色塊分配為新SAT寫入塊440。一SAT頁位置係由其於其SAT塊中之序列號定址。SAT塊可混合於非SAT資訊塊之中或者可進一步隔離於一專用類型之塊(例如二元快閃塊)中,而非SAT資訊儲存於MLC快閃塊中。在其他實施例中,SAT資訊可與同一塊中之非SAT資訊混在一起。
SAT頁
一SAT頁434係SAT中之最小可更新映射資訊單位。一經更新之SAT頁434寫入於由SAT寫入指針442界定之位置處。一SAT頁434含有針對一組具有遞增LBA位址之LBA運行之映射資訊,但連續LBA運行位址不必為連續的。一SAT頁434中之LBA位址範圍不與任何其他SAT頁434中之LBA位址範圍重疊。SAT頁434可無限制地分散遍及整個一組SAT塊。任一LBA位址範圍之SAT頁434皆可位於任一 SAT塊中。一SAT頁434可包括:一索引緩衝區字段444、LBA字段446、一資料運行字段448及一控制指針450。參數備份條目亦含有一些儲存於揮發性RAM中之參數之值。
一SAT頁434內之LBA字段446含有處於一LBA位址範圍內之分配用於儲存資料之連續LBA位址運行之條目。一SAT頁434所跨越之LBA位址範圍不與任何其他SAT頁434所跨越之LBA條目範圍重疊。LBA字段具有可變長度且含有一可變數量之LBA條目。在一LBA字段446內,一LBA條目452針對處於由SAT頁434索引之LBA位址範圍內之每一LBA運行而存在。一LBA運行映射至一個或多個資料運行。
如圖34-36中所示,邏輯至實體配置中之SAT之條目在幾個方面不同於邏輯至邏輯位址重映射配置。參考圖34,一LBA條目452含有以下資訊:該LBA條目映射至其之資料條目數(454)、及LBA運行映射至其之第一資料運行之位於同一SAT頁434中之資料字段448內之資料條目數(458)。
一SAT頁434內之資料字段448含有映射至處於同一SAT頁434中之LBA字段446內之LBA運行之所有資料位址運行之條目。資料字段448具有可變長度且含有一可變數量之資料條目460。在一資料字段448內,一資料條目460針對映射至一處於同一SAT頁434中之LBA字段246內之LBA運行之每一資料運行而存在。圖35中所示之每一資料條目460皆含有以下資訊:運行中之第一資料位址(462)、及第一資料位址映射至其之LBA運行中之LBA偏移(464)。寫入 為每一SAT頁434之一部分但只在最近寫入之SAT頁434中繼續有效之SAT頁/索引緩衝區字段含有SAT索引條目466。
一SAT索引條目466針對當前在相關SAT索引頁436中不具有有效條目之SAT中之每一SAT頁434而存在。參考圖36,一SAT索引條目每當寫入一SAT頁434時總是形成或更新,且在更新相關SAT索引頁436時刪除。該SAT索引條目含有:由SAT頁434索引之第一LBA(468)、由SAT頁434索引之最後LBA(470)、含有SAT頁434之SAT塊號碼(472)、及SAT塊內之SAT頁434之頁碼(474)。SAT索引字段476具有用於一固定數量之SAT索引條目466之容量。此數確定可藉由寫入SAT頁434及SAT索引頁436之相對頻率。在一構建形式中,此固定數可為32。
SAT頁字段指針450界定自LBA字段之開始至資料字段之開始之偏移。其含有作為一LBA條目數之偏移值。一SAT頁434中之參數備份條目含有儲存於揮發性RAM中之參數值。此等參數值係在一電力循環之後對RAM(在圖8-9所示構建形式情況下與控制器8相關聯)中之資訊進行初始化期間使用。此等參數只在最近寫入之SAT頁434中有效。
在另一實施例中,不是針對與有效資料相關聯之每一LBA位址運行在SAT中產生一單獨的LBA條目,而是可將LBA位址塊映射於SAT中以使每一LBA位址塊皆係SAT上之一單個條目。如圖37中所示,LBA位址空間中之一完整的LBA位址塊480可記錄於SAT中。此構建形式中之LBA條 目482將係一單個條目,其列出LBA位址塊480映射至其之實體位址空間中之資料運行484之數量及一對同一SAT頁中之第一資料運行之指針486。一LBA位址塊可映射至最少一個資料運行或最多LBA位址塊中之叢集數,此視儲存於記憶體裝置中之資料之碎裂程度而定。
在圖37所示實例中,LBA位址塊480包括8個LBA運行,其中4個運行分配給有效資料(從LBA偏移L1、L3、L4及L6開始之陰影部分)且4個運行係未分配位址運行(從LBA偏移0、L2、L5及L7開始之白色部分)。LBA位址塊480之對應資料條目488將該資料運行之實體位址490(其由實體塊及位址偏移(P1-P3)標記)與對應LBA偏移492相聯繫。與記錄每一LBA運行之一單獨LBA條目之上述SAT之版本(其中僅記錄與有效資料相關聯之LBA運行)不同,記錄LBA位址塊中之每一LBA運行。因此,記錄當前未分配給有效資料之LBA位址塊480中之LBA運行以及分配給有效資料之LBA運行。在圖37中所示之SAT頁之資料條目部分488中,標記一組未分配LBA位址之開頭之LBA偏移與實體位址空間中之一"FFFFFFFF"值配對。此表示一指示未分配位址之一保留值之預設十六進製數。先前所述之上述總體SAT結構及功能性以及參照圖32所述之基本SAT層次適用於LBA位址塊映射構建形式,但SAT頁表示LBA位址塊至資料運行映射資訊而不是個別LBA運行至資料運行資訊。此外,在此構建形式中,SAT索引頁儲存LBA位址塊至SAT頁映射資訊。
SAT索引頁
重新參考圖34-36,一組SAT索引頁436提供一對SAT中每一有效SAT頁434之位置之索引。一個別SAT索引頁436含有界定與一LBA位址範圍相關之有效SAT頁位置。一SAT索引頁436所跨越之LBA位址範圍不與任何其他SAT索引頁436所跨越之LBA位址範圍重疊。條目係根據與其相關之DAT頁之LBA位址範圍值來進行排序。一SAT索引頁436含有一固定數量之條目。SAT索引頁436可無限制地分散遍及整個一組SAT塊。任一LBA位址範圍之SAT索引頁436皆可位於任一SAT塊中。一SAT索引頁436包含一SAT索引字段及一頁索引字段。
SAT索引字段476含有處於SAT索引頁436所跨越之LBA位址範圍內之所有有效SAT頁之SAT索引條目。一SAT索引條目466與一單個SAT頁434相關,且含有以下資訊:由SAT頁434索引之第一LBA、含有SAT頁434之SAT塊號碼及SAT塊內之SAT頁434之頁碼。頁索引字段含有SAT中所有有效SAT索引頁436之頁索引條目。一頁索引條目針對SAT中之每一有效SAT索引頁436而存在,且包含以下資訊:由SAT索引頁索引之第一LBA、含有SAT索引頁之SAT塊號碼及SAT塊內之SAT索引頁之頁碼。
臨時SAT資料結構
關於邏輯至邏輯位址重映射以及表格頁與位址轉換所述之臨時SAT資料結構與關於圖8所示邏輯至實體配置之相同,只是實體位址替換先前說明中所引用之邏輯位址 (DLBA)。舉例而言,當第二邏輯位址空間(DLBA)由實體位址或位址運行替換時,圖24所示SAT轉換程序及圖25及表A-D所示SAT形成及更新實例亦適用於圖8所示邏輯至實體配置。類似地,圖8所示邏輯至實體配置利用相同之BIT結構,但其中BIT引用實體位址而不是邏輯(DLBA)位址。
經修改之主機邏輯塊位址分配
圖11所示組態將圖8-10所示特徵中之一部分直接整合於主機檔案系統內,然而圖11所示儲存位址映射配置不自一第一邏輯位址空間轉換至一第二邏輯位址空間。而是,修改用於分配主機LBA位址之初始主機檔案系統方法以減少碎裂。
圖11中之位址映射在實體記憶體中形成一類似於由圖8-10所示組態所形成之資料映射的資料映射。與一根據叢集知道主機LBA空間之典型主機檔案系統不同,此實施例中之主機檔案系統10知道對應於記憶體系統2中實體塊大小之塊大小。從對應於實體記憶體塊之選定塊內分配主機LBA位址以儲存資料。按順序性次序分配存在於一選定塊內之所有三個集體位址。映射演算法使實體記憶體中之更新塊中需要之資料合併量能夠保持在最低限制。在LBA位址空間內之塊中管理對用於儲存資料之空閒叢集之分配。主機檔案系統根據塊內所含有之空閒叢集數來對其進行分等。將具有最大空閒叢集數之塊選擇為下一分配塊。
參考圖38,圖中顯示一可以圖11所示主機檔案系統組態形式構建之位址映射實例。由圖11所示組態構建之位址映 射在主機上之主機檔案系統中進行且較佳由主機1之CPU 9執行。如在圖9及10所示組態之實例中,在大小對應於記憶體系統中之快閃記憶體之實體記憶體塊之塊中管理對用於儲存資料之空閒集體之分配。與圖9-10所示實例不同,以圖11所示組態形式構建之位址映射管理對位於主機LBA位址空間內之空閒叢集之分配且不將主機LBA位址空間重映射至一儲存LBA位址空間中。而是,如下文所述,對主機檔案系統執行之位址映射演算法進行優化以利用主機LBA位址空間中之可用位址從而在指配位址之前將一個主機LBA位址塊中之可用位址全部指配給下一主機LBA位址塊。
在圖38所示實例中,根據主機LBA位址空間494中之塊內所含有之空閒叢集數來對其進行分等。參考圖1,若主機檔案系統10係一NTFS檔案系統,則對塊之分等可基於主機檔案系統10儲存並更新於記憶體系統2上之NTFS $位元圖檔案中之分配圖。一旦自NTFS $位元圖檔案擷取分配圖,主機檔案系統10即刻將把具有最大空閒(廢棄)叢集數之塊選擇為下一分配塊。在圖38所示實例中,塊1被選擇為分配塊,此乃因其含有最大廢棄(且因此空閒)叢集數。廢棄叢集之主機LBA位址從塊1內按順序性次序分配給資料,其中圖38中之每一箭頭圖解闡釋將可用位址指配給來自主機1之新資料。只有在已分配塊1中之所有空閒叢集時,才將塊2選擇為下一分配塊。然後,按順序性次序將塊2中之空閒叢集之位址指配給新資料。
指配主機LBA位址空間494中之位址之順序性次序可在一塊中自最低可用位址值至最高可用位址值,或者可係一塊中之可用位址值之一"環繞"順序。舉例而言,假定圖38中之塊1之位址值為1至16,則彼塊中可供使用之位址係位址值(從左到右)3-5、7-8、22-13及15-16。從最低到最高之位址指配將涉及由位址值3開始依序指配每一可用位址。該環繞替代形式將涉及從某一不同於位址值3之點開始指配位址、指配該等位址以增大相對於彼第一選定位址值之值、並隨後繼續從最低可用位址起指配主機LBA塊中之可用位址直至已指配當前主機LBA塊中之所有位址為止。因此,若在此實例中首先指配塊1中之位址12,則位址13、15-16、3-5、7-8及11將係用以指配其餘位址之次序。
在記憶體系統2(其可係多種使用一標準LBA介面之已知記憶體系統中之任何一種)處,寫入至所分配叢集位址之資料儲存於一對應於塊1之實體更新塊496中。記憶體系統2亦將分配一對應於塊2之單獨實體更新塊498。在對應於所選定分配塊之原始塊中仍然有效之資料500與已寫入於更新塊中之新主機資料502合併。此合併可在新主機資料已寫入於一更新塊中之後進行,或者更常見與正寫入之新主機資料交錯,因為實體快閃記憶體塊中之頁通常按順序性次序程式化。將一主機LBA塊之資料合併至一單個快閃塊中之過程可由記憶體系統2中之控制器8管理。由於主機檔案系統將具有最大空閒叢集數之塊選擇為分配塊,因此將合併之資料量控制為一最小量。然而,與參照圖8-10所 示實施例所述之沖洗過程(其中自一個塊沖洗之有效資料依序寫入至一可具有與不同於其他塊之位址範圍相關聯之重定位塊)不同,圖11所示分配過程產生一其中藉由將一塊之剩餘有效資料與同一位址範圍之經更新資料歸併來保持位址塊之廢料收集過程。
當位址映射分配演算法構建於一例如圖11及38中所示之主機檔案系統185中時,合併於一實體記憶體塊中之資料量可與將藉由圖8-10所示實施例中所述之儲存位址映射來自一等效塊重定位之資料量相同。由於在圖11所示實施例中不對檔案系統所分配之主機LBA位址進行重映射,因此在此構建形式中不需要SAT。此外,分配用於儲存檔案資料之位址記錄於用於此目的之資料結構(例如用於NTFS檔案系統之$MFT檔案或用於FAT檔案系統之檔案分配表(FAT)結構)中。
本文所述位址映射及重映射系統及方法之優點包括記憶體管理程式層面廢料收集之減少或排除及減輕之快閃記憶體上之應力。當使用一如圖8中所示不使用中間DLBA位址而將一連續LBA位址塊映射至一單個實體塊之記憶體管理演算法時,需要在將資料寫入至一小於實體塊大小之LBA位址運行時進行廢料收集。在此廢料收集期間,將LBA塊中所有具有位址之資料合併至同一實體塊中。舉例而言,當一被寫入之檔案之平均大小為40KB而實體塊大小為4MB時,若檔案系統分配演算法及空閒集體空間碎裂導致每一檔案寫入為一單獨塊中之一隔離碎片,則針對每一由 主機寫入之資料扇區程式化之扇區之比率將為100。
在習用邏輯至實體塊映射之情況下,每當一主機資料碎片孤立地寫入至一邏輯位址塊時總是必須在廢料收集作業期間重定位一資料本體。在儲存位址重映射演算法之情況下,資料始終寫入至順序性位址直至一塊(邏輯或實體)已滿為止且因此不需要廢料收集。本文所揭示之儲存位址重映射中之沖洗作業僅回應於資料被變廢而由一寫入過程觸發。因此,在一具有本文所述之儲存位址重映射功能性之系統中,資料重定位開銷應較低。在其他實施例中,記憶體系統可經組態以單獨地保持某些LBA位址範圍,以便在每一主機LBA位址範圍內,可應用上文所述之儲存位址重映射技術。因此,每一指配之LBA位址範圍皆具有其自身的寫入塊及重定位塊且在一特定指配之主機LBA位址範圍之先前寫入塊或重定位塊寫滿時一新白色塊將作為一寫入塊或重定位塊分配給該特定指配之主機LBA位址範圍。
已闡述用於儲存位址重映射之系統及方法,其可提高隨機寫入應用中之記憶體系統效能,其特徵在於可在個人電腦中之固態磁碟應用中經歷之對將短資料叢發寫入至裝置之LBA位址空間中之不相關區域之需要。在所揭示之儲存位址重映射之某些實施例中,主機資料自一由主機指配之第一邏輯位址映射至一第二邏輯位址空間中之連續邏輯位址塊。由於使與完全程式化之位址塊相關聯之資料變廢,因此揭示一種沖洗程序,其從一粉紅色塊組群中選擇一具有最少有效資料量或具有少於一臨限有效資料量之粉紅色 塊,並重定位彼等塊中之有效資料以釋放彼等塊以用於寫入更多資料。不管主機所指配之邏輯位址如何均將經重定位之資料按其出現在需要沖洗之塊中之次序連續寫入至一重定位塊。以此方式,可藉由非故意地合併主機所指配之邏輯位址運行來減少開銷。使用一儲存位址表來追蹤主機所指配之邏輯位址與第二邏輯位址之間的映射及由沖洗而引起之映射中之後續變化。在一其中主機所指配之邏輯位址直接映射至實體位址中之實施例中,儲存位址表追蹤彼關係且保持一塊資訊表以追蹤(例如)一特定塊是否係一具有有效資料及廢棄資料兩者之粉紅色塊或一僅具有未寫入容量之白色塊。
SAT將邏輯位址空間中由主機檔案系統分配給有效資料之每一位址運行映射至裝置位址空間(在圖8所示配置之情況下係一實體位址空間;在圖9-10所示配置之情況下係邏輯儲存位址空間)中之一個或多個位址運行。主機所使用之可變連續位址空間長度單位(LBA運行)映射至一個或多個可變連續裝置位址空間長度單位。使用一運行至運行位址映射方案可提供相對於一基於固定大小單位之映射方案之優點。SAT中所需之映射條目數與由主機寫入之資料運行中之平均叢集數成反比。由此使SAT資料結構數最小化,並使用於在主機寫入並刪除檔案資料時更新此等資料結構之平均時間最小化。
因此,旨在將上文詳細說明視為例示性而非限制性,且應瞭解,隨附申請專利範圍及所有等效形式旨在界定本發 明之精神及範疇。
1‧‧‧主機系統
2‧‧‧快閃記憶體
3‧‧‧電連接器之配合部分
4‧‧‧電連接器之配合部分
5‧‧‧應用程式部分
6‧‧‧驅動器部分
7‧‧‧快閃記憶體
8‧‧‧電路
9‧‧‧處理器
10‧‧‧檔案系統
11‧‧‧積體電路晶片
13‧‧‧系統匯流排
15‧‧‧記憶體晶片
17‧‧‧導體
19‧‧‧導體
21‧‧‧導體
23‧‧‧內部匯流排
25‧‧‧介面電路
27‧‧‧處理器
29‧‧‧唯讀記憶體
31‧‧‧唯讀記憶體
33‧‧‧電路
35‧‧‧電路
37‧‧‧外部觸點
39‧‧‧時鐘
41‧‧‧平面
43‧‧‧平面
45‧‧‧行控制電路
47‧‧‧行控制電路
49‧‧‧位元線
51‧‧‧位元線
53‧‧‧字線
55‧‧‧列控制電路
57‧‧‧源極電壓控制電路
59‧‧‧源極電壓控制電路
61‧‧‧p-井電壓控制電路
63‧‧‧p-井電壓控制電路
65‧‧‧資料輸入/輸出電路
67‧‧‧資料輸入/輸出電路
69‧‧‧線
71‧‧‧線
73‧‧‧介面電路
75‧‧‧狀態機
77‧‧‧控制線
78‧‧‧控制線
79‧‧‧控制線
80‧‧‧控制線
81‧‧‧控制線
83‧‧‧線
91‧‧‧線
92‧‧‧線
93‧‧‧線
94‧‧‧線
97‧‧‧記憶體單元串
98‧‧‧記憶體單元串
99‧‧‧記憶體單元串
100‧‧‧記憶體單元串
101‧‧‧記憶體單元串
102‧‧‧記憶體單元串
103‧‧‧記憶體單元串
104‧‧‧記憶體單元串
107‧‧‧電荷儲存記憶體單元
108‧‧‧電荷儲存記憶體單元
109‧‧‧電荷儲存記憶體單元
110‧‧‧電荷儲存記憶體單元
111‧‧‧電晶體
112‧‧‧電晶體
115‧‧‧字線
116‧‧‧字線
117‧‧‧字線
118‧‧‧字線
119‧‧‧閘極
120‧‧‧閘極
123‧‧‧記憶體單元塊
125‧‧‧塊
131‧‧‧記憶體單元平面或子陣列
132‧‧‧記憶體單元平面或子陣列
133‧‧‧記憶體單元平面或子陣列
134‧‧‧記憶體單元平面或子陣列
137‧‧‧平面
138‧‧‧平面
139‧‧‧平面
140‧‧‧平面
141‧‧‧元塊
143‧‧‧元塊
145‧‧‧塊
146‧‧‧塊
147‧‧‧塊
148‧‧‧塊
151‧‧‧元頁
160‧‧‧連續邏輯位址空間
162‧‧‧經分配叢集
164‧‧‧空閒叢集
166‧‧‧叢集塊
168‧‧‧紅色塊
170‧‧‧白色塊
172‧‧‧粉紅色塊
174‧‧‧遺留主機
176‧‧‧儲存裝置
177‧‧‧記憶體管理程式
178‧‧‧儲存裝置
179‧‧‧記憶體管理程式
180‧‧‧主機
182‧‧‧儲存裝置
184‧‧‧記憶體裝置
185‧‧‧檔案系統
200‧‧‧二元分區
201‧‧‧多級單元(MLC)分區
208‧‧‧LBA位址空間
210‧‧‧DLBA位址空間
212‧‧‧寫入塊
214‧‧‧塊
216‧‧‧重定位塊
218‧‧‧實體位址空間
230‧‧‧邏輯塊位址
232‧‧‧邏輯位址
234‧‧‧儲存位址表
236‧‧‧SAT索引頁
238‧‧‧主頁索引
240‧‧‧SAT寫入塊
242‧‧‧遞增式SAT寫入指針
244‧‧‧索引緩衝區字段
246‧‧‧LBA字段
248‧‧‧DLBA字段
250‧‧‧控制指針
252‧‧‧LBA條目
254‧‧‧運行中之第一LBA
256‧‧‧扇區中LBA運行之長度
258‧‧‧LBA運行映射至其之第一DLBA運行之位於同一SAT頁234中之DLBA字段內之DLBA條目數
260‧‧‧DLBA條目
262‧‧‧運行中之第一DLBA位址
264‧‧‧第一DLBA位址映射至其之LBA運行中之LBA偏移
266‧‧‧SAT索引條目
268‧‧‧由SAT頁234索引之第一LBA
270‧‧‧由SAT頁234索引之最後LBA
272‧‧‧含有SAT頁234之SAT塊號碼
274‧‧‧頁碼
276‧‧‧SAT索引字段
278‧‧‧SAT索引條目
280‧‧‧目標邏輯塊位址
302‧‧‧LBA位址空間
304‧‧‧DLBA位址空間
340‧‧‧BIT寫入塊
342‧‧‧BIT頁
344‧‧‧BIT索引頁
346‧‧‧BIT寫入指針
348‧‧‧白色塊列表(WBL)字段
350‧‧‧粉紅色塊列表(PBL)字段
352‧‧‧SAT塊列表(SBL)字段
354‧‧‧索引緩衝區字段
356‧‧‧控制指針
358‧‧‧BIT索引字段
360‧‧‧頁索引字段
410‧‧‧實體位址空間
412‧‧‧寫入塊
416‧‧‧重定位塊
418‧‧‧白色塊
430‧‧‧資料運行
432‧‧‧邏輯塊位址
434‧‧‧SAT頁
436‧‧‧SAT索引頁
438‧‧‧主頁索引
440‧‧‧SAT寫入塊
442‧‧‧遞增式SAT寫入指針
444‧‧‧索引緩衝區字段
446‧‧‧LBA字段
448‧‧‧資料運行字段
450‧‧‧控制指針
452‧‧‧LBA條目
454‧‧‧該LBA條目映射至其之資料條目數
458‧‧‧LBA運行映射至其之第一資料運行之位於同一SAT頁434中之資料字段448內之資料條目數
460‧‧‧資料條目
462‧‧‧運行中之第一資料位址
464‧‧‧第一資料位址映射至其之LBA運行中之LBA偏移
466‧‧‧SAT索引條目
468‧‧‧由SAT頁434索引之第一LBA
470‧‧‧由SAT頁434索引之最後LBA
472‧‧‧含有SAT頁434之SAT塊號碼
474‧‧‧SAT塊內之SAT頁434之頁號碼
476‧‧‧SAT索引字段
480‧‧‧LBA位址塊
482‧‧‧LBA條目
484‧‧‧資料運行
486‧‧‧指針
488‧‧‧資料條目
490‧‧‧實體位址
492‧‧‧LBA偏移
500‧‧‧資料
502‧‧‧新主機資料
圖1圖解闡釋一與一具有非揮發性記憶體之記憶體系統連接之主機。
圖2係一用作圖1之非揮發性記憶體之實例性快閃記憶體系統之實例性方塊圖。
圖3係一可用於圖2所示系統之記憶體單元陣列之代表性電路圖。
圖4圖解闡釋圖2所示系統之一實例性實體記憶體組織形式。
圖5顯示圖4所示實體記憶體之一部分之展開圖。
圖6圖解闡釋LBA位址空間中所分配及空閒叢集之一典型型樣。
圖7圖解闡釋根據一所揭示構建形式藉助塊之叢集分配之一型樣。
圖8圖解闡釋一主機與一記憶體驅動機之間的儲存位址重映射之一構建形式,其中該裝置之記憶體管理程式納含該儲存位址重映射功能。
圖9圖解闡釋圖8所示儲存位址重映射之一替代構建形式。
圖10圖解闡釋儲存位址重映射之一構建形式,其中功能性定位於主機上。
圖11圖解闡釋圖10所示儲存位址重映射之一替代構建形式。
圖12係叢集之塊之分配之一狀態圖。
圖13係當快閃記憶體包括二元及MLC分區時圖12所示狀態圖之一替代構建形式。
圖14係一可用於圖9及10所示構建形式之LBA位址空間及關聯DLBA位址空間之實例。
圖15圖解闡釋針對自一主機接收之資料之LBA至DLBA映射之一實例。
圖16圖解闡釋DLBA位址空間及實體位址空間中之對應更新塊中之一沖洗作業。
圖17圖解闡釋在圖16所示沖洗作業之後的一第二沖洗作業。
圖18係一針對含有來自一主機之資料之塊之塊沖洗過程之流程圖。
圖19圖解闡釋一其中將主機邏輯位址重映射至一第二邏輯位址空間之配置中之一儲存位址表(SAT)層次。
圖20圖解闡釋一用於追蹤邏輯-邏輯映射之儲存位址表(SAT)寫入塊。
圖21係一用於圖20所示SAT表之一SAT頁之LBA條目。
圖22係一用於圖20所示SAT表之一SAT頁之DLBA條目。
圖23係一用於圖20所示SAT表面之一SAT頁之SAT索引條目。
圖24圖解闡釋一用於圖9及10所示儲存位址重映射功能之儲存位址表轉換程序。
圖25係一在四種時間情形下LBA及DLBA位址空間中之 實例性資料寫入作業之例示。
圖26圖解闡釋SAT塊轉換之一狀態圖。
圖27係一用於確定SAT塊沖洗次序之過程之流程圖。
圖28圖解闡釋一塊資訊表(BIT)寫入塊。
圖29圖解闡釋一針對自一主機接收之資料之LBA至實體位址映射之實例。
圖30圖解闡釋一基於圖29中所示之資料分佈之實體位址空間中之沖洗作業。
圖31圖解闡釋一在圖30所示沖洗作業之後的第二沖洗作業。
圖32圖解闡釋一其中將主機邏輯位址運行映射至資料運行之實體位址之配置中之一儲存位址表(SAT)層次。
圖33圖解闡釋一用於追蹤邏輯-邏輯映射之儲存位址表(SAT)寫入塊。
圖34係一用於圖33所示SAT表之一SAT頁之LBA條目。
圖35係一用於圖33所示SAT表之一SAT頁之資料條目。
圖36係一用於圖33所示SAT表之一SAT頁之SAT索引條目。
圖37圖解闡釋圖32-36所示SAT之一替代實施例,其中將完整的邏輯位址塊映射至資料運行。
圖38圖解闡釋一利用圖11所示組態之系統中之儲存位址重映射之構建形式。
280‧‧‧目標邏輯塊位址

Claims (23)

  1. 一種用於在一主機系統與一可重新程式化非揮發性大容量儲存系統之間傳送資料之方法,該方法包含:在該大容量儲存系統處,自該主機系統接收與主機邏輯塊位址(LBA)位址相關聯之資料;分配用於定址與該等主機LBA位址相關聯之該資料之一連續儲存LBA位址塊,該連續儲存LBA位址塊在分配時僅定址未寫入容量;及將該所接收資料之該等主機LBA位址中之每一者重映射至該連續儲存LBA位址塊,其中不管該主機LBA位址如何,每一儲存LBA位址均按一接收該所接收資料之次序,以一連續方式依序指配給該所接收資料。
  2. 如請求項1之方法,進一步包含分配一用於以一連續方式重映射額外所接收資料之第二連續儲存LBA位址塊,該第二連續儲存LBA位址塊在分配時僅與未寫入容量相關聯,其中對該第二連續儲存LBA位址塊之該分配只在完全指配該連續儲存LBA位址塊時進行。
  3. 如請求項1之方法,其中分配一連續儲存位址LBA位址塊包含為複數個主機LBA位址範圍之每一者分配一連續儲存LBA位址塊,其中每一連續儲存LBA位址塊在分配時僅與未寫入容量相關聯。
  4. 如請求項3之方法,其中重映射包含將該複數個主機LBA位址範圍中之一對應範圍中之該所接收資料之該等主機LBA位址中之每一者重映射至一對應分配之儲存LBA位 址塊,其中不管與該複數個範圍中之一對應範圍內之該主機LBA位址如何,一所分配之連續儲存LBA位址塊中之每一儲存LBA位址均按一接收該資料之次序,以一連續方式,依序指配給屬於該複數個範圍中之該對應範圍內之接收資料。
  5. 如請求項1之方法,進一步包含將與該連續儲存LBA位址塊相關聯之該資料寫入至一當前與該連續儲存LBA位址塊相關聯之實體位址塊中之連續實體位址位置。
  6. 如請求項1之方法,其中該大容量儲存系統接收與該等主機LBA位址相關聯之該資料、重映射該等主機LBA位址,並寫入與該等儲存LBA位址相關聯之該資料,而從不啟動一廢料收集作業。
  7. 如請求項1之方法,其中該重映射步驟進一步包含產生將主機LBA位址與儲存LBA位址位置相關之相關資料,並將對應之連續儲存LBA位址指配給一第二連續儲存LBA位址塊中之該相關資料。
  8. 如請求項7之方法,其中該連續儲存LBA位址塊唯獨與來自該主機系統之資料相關聯,而該第二連續儲存LBA位址塊唯獨與相關資料相關聯。
  9. 如請求項1之方法,進一步包含:識別與該連續儲存LBA位址塊相關聯之廢棄資料,其中該廢棄資料表示主機解除分配之資料;選擇一用以連續地重映射來自該連續儲存LBA位址塊之有效資料之連續儲存LBA位址重定位塊;及 將與該連續儲存LBA位址塊相關聯之有效資料重新指配給該重定位塊中之連續儲存LBA位址。
  10. 如請求項9之方法,進一步包含:識別與一額外連續儲存LBA位址塊相關聯之廢棄資料;將來自該額外連續儲存LBA位址塊之有效資料之儲存LBA位址重新指配給該重定位塊中之連續儲存LBA位址,其中當該重定位塊已滿時,選擇一僅具有未寫入容量之新重定位塊,並將來自該額外塊之剩餘有效資料重新指配給該新重定位塊中之連續儲存LBA位址。
  11. 如請求項9之方法,其中該連續儲存LBA位址重定位塊唯獨與重映射之有效主機資料相關聯。
  12. 如請求項8之方法,進一步包含:識別與該第二連續儲存LBA位址塊相關聯之廢棄相關資料;選擇一用以連續地重映射來自該第二連續儲存LBA位址塊之有效相關資料之連續儲存LBA位址重定位塊;及將來自該第二連續儲存LBA位址塊之有效相關資料重新指配給該重定位塊中之連續儲存LBA位址。
  13. 如請求項12之方法,進一步包含:識別與一額外連續儲存LBA位址塊相關聯之廢棄相關資料,該額外連續儲存LBA位址塊唯獨與相關資料相關聯;及將來自該額外連續儲存LBA位址塊之有效相關資料之 儲存LBA位址重新指配給該重定位塊中之連續儲存LBA位址,其中當該重定位塊已滿時,選擇一僅具有未寫入容量之新重定位塊,並將與該額外塊相關聯之剩餘有效相關資料重新指配給該新重定位塊中之連續儲存LBA位址。
  14. 如請求項1之方法,進一步包含追蹤複數個具有一白色或粉紅色狀態之連續儲存LBA位址塊之一狀態,其中白色狀態識別任何僅與未寫入容量相關聯之塊,且粉紅色狀態識別任何與有效資料及廢棄資料兩者相關聯之塊。
  15. 如請求項1之方法,進一步包含:在接收與先前所接收之主機LBA位址相關聯之新資料之前,識別目前定址有效資料及廢棄資料之先前完全程式化之連續儲存LBA位址塊;自目前定址有效資料及廢棄資料之該等所識別之先前完全程式化之連續儲存LBA位址塊,形成僅定址未寫入容量之新連續儲存LBA位址塊。
  16. 如請求項15之方法,其中形成新連續儲存LBA位址塊包含:藉由一定址於每一先前填充塊中之廢棄資料之量,對該等經識別之先前填充之連續儲存LBA位址塊進行分等;選擇一其中連續地重映射來自該等經分等之先前填充塊之有效資料之連續儲存LBA位址重定位塊;將來自該等經分等之先前填充塊中之一選定塊之有效 資料之儲存LBA位址重映射至該重定位塊中之連續儲存LBA位址;及一旦寫滿該重定位塊,即選擇一僅定址未寫入容量之新重定位塊。
  17. 如請求項15之方法,其中識別先前所填充之定址廢棄資料之連續儲存LBA位址塊包含在該大容量儲存裝置處掃描一叢集分配圖。
  18. 如請求項17之方法,其中該主機系統包含一新技術檔案系統(NTFS),且該叢集分配圖包含一$位元圖檔案。
  19. 如請求項15之方法,其中識別先前完全程式化之定址廢棄資料之連續儲存LBA位址塊包含在該大容量儲存系統處接收一主機系統命令,該主機系統命令識別廢棄資料位址。
  20. 一種非揮發性大容量儲存系統,其包含:可重新程式化非揮發性記憶體單元,該等記憶體單元配置於複數個可一起擦除之記憶體單元塊中;及一介面,其適於自一主機系統接收以一主機邏輯塊位址(LBA)格式定址之資料;及一控制器,其與該介面通信,該控制器經組態以:將該等所接收之主機LBA位址按一接收之次序連續地重映射至一連續儲存LBA位址塊;分配一額外連續儲存LBA位址塊,該額外連續儲存LBA位址塊在分配時僅定址未寫入容量,並在該連續儲存LBA位址塊已滿時,將額外接收之主機LBA位址連續 地重映射至該額外連續儲存LBA位址塊;及當與主機LBA位址相關聯之該資料被重映射至連續儲存LBA位址時,產生將該等主機LBA位址映射至儲存LBA位址之一儲存位址表(SAT)。
  21. 如請求項20之系統,其中為了產生該SAT,該控制器經組態以使與以一連續方式將主機LBA位址映射至儲存LBA位址相關之資訊與一指定僅用於與該SAT有關之資料之連續儲存LBA位址塊相關聯。
  22. 如請求項20之系統,其中該控制器經組態以形成不含有有效資料之新連續儲存LBA位址塊。
  23. 如請求項22之系統,其中為了形成新連續儲存LBA位址塊,該控制器進一步經組態以:識別先前完全與所重映射之主機LBA位址相關聯,且當前定址一個或多個廢棄資料頁之儲存LBA位址塊;及按有效資料存在於該第一識別塊中之一次序,以連續次序將來自一第一識別塊之該有效資料之位址重定位至一重定位塊中,直至該第一識別塊不定址有效資料為止。
TW097121253A 2007-06-08 2008-06-06 用於重映射記憶體裝置之儲存位址的方法及系統 TWI394160B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US94290007P 2007-06-08 2007-06-08
US12/036,014 US9396103B2 (en) 2007-06-08 2008-02-22 Method and system for storage address re-mapping for a memory device

Publications (2)

Publication Number Publication Date
TW200905680A TW200905680A (en) 2009-02-01
TWI394160B true TWI394160B (zh) 2013-04-21

Family

ID=40096925

Family Applications (1)

Application Number Title Priority Date Filing Date
TW097121253A TWI394160B (zh) 2007-06-08 2008-06-06 用於重映射記憶體裝置之儲存位址的方法及系統

Country Status (7)

Country Link
US (2) US9396103B2 (zh)
EP (1) EP2156299B1 (zh)
JP (2) JP5350371B2 (zh)
KR (1) KR101453264B1 (zh)
CN (3) CN101779195B (zh)
TW (1) TWI394160B (zh)
WO (1) WO2008154216A1 (zh)

Families Citing this family (191)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8108590B2 (en) * 2000-01-06 2012-01-31 Super Talent Electronics, Inc. Multi-operation write aggregator using a page buffer and a scratch flash block in each of multiple channels of a large array of flash memory to reduce block wear
US20080140724A1 (en) 2006-12-06 2008-06-12 David Flynn Apparatus, system, and method for servicing object requests within a storage controller
US8935302B2 (en) 2006-12-06 2015-01-13 Intelligent Intellectual Property Holdings 2 Llc Apparatus, system, and method for data block usage information synchronization for a non-volatile storage volume
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US8200904B2 (en) * 2007-12-12 2012-06-12 Sandisk Il Ltd. System and method for clearing data from a cache
JP4164118B1 (ja) * 2008-03-26 2008-10-08 眞澄 鈴木 フラッシュメモリを用いた記憶装置
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device
US8843691B2 (en) * 2008-06-25 2014-09-23 Stec, Inc. Prioritized erasure of data blocks in a flash storage device
KR101535226B1 (ko) * 2008-12-16 2015-07-27 삼성전자주식회사 중간 변환 장치를 통해 연결된 저장 장치 인증 방법 및 시스템
US8452940B2 (en) * 2008-12-30 2013-05-28 Sandisk Technologies Inc. Optimized memory management for random and sequential data writing
US8261009B2 (en) * 2008-12-30 2012-09-04 Sandisk Il Ltd. Method and apparatus for retroactive adaptation of data location
US20100169540A1 (en) * 2008-12-30 2010-07-01 Sinclair Alan W Method and apparatus for relocating selected data between flash partitions in a memory device
US8205063B2 (en) * 2008-12-30 2012-06-19 Sandisk Technologies Inc. Dynamic mapping of logical ranges to write blocks
US8701120B2 (en) 2009-02-27 2014-04-15 International Business Machines Corporation Virtualization of storage buffers used by asynchronous processes
TWI407441B (zh) * 2009-03-20 2013-09-01 Phison Electronics Corp 快閃記憶體寫入方法及使用此方法的儲存系統與控制器
US8364931B2 (en) * 2009-06-29 2013-01-29 Mediatek Inc. Memory system and mapping methods using a random write page mapping table
US8645438B2 (en) * 2009-06-30 2014-02-04 Sandisk Technologies Inc. File system and method of file access
CN101582089B (zh) * 2009-07-02 2011-06-29 北京讯风光通信技术开发有限责任公司 一种嵌入式设备的文件管理方法及系统
US20110002169A1 (en) 2009-07-06 2011-01-06 Yan Li Bad Column Management with Bit Information in Non-Volatile Memory Systems
US8612718B2 (en) * 2009-08-19 2013-12-17 Seagate Technology Llc Mapping alignment
TWI453747B (zh) * 2009-09-02 2014-09-21 Silicon Motion Inc 用來管理一快閃記憶體的複數個區塊之方法以及相關之記憶裝置及其控制器
US8392479B1 (en) * 2009-09-14 2013-03-05 Symantec Corporation Method and apparatus for optimizing storage space allocation for computer data
TWI426528B (zh) * 2009-09-30 2014-02-11 Phison Electronics Corp 用於快閃記憶體的區塊管理方法、控制器與儲存系統
US8364924B2 (en) 2009-10-21 2013-01-29 International Business Machines Corporation Achieving a high throughput in a storage cache application using a flash solid state disk
US7954021B2 (en) * 2009-10-23 2011-05-31 International Business Machines Corporation Solid state drive with flash sparing
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
US8255661B2 (en) * 2009-11-13 2012-08-28 Western Digital Technologies, Inc. Data storage system comprising a mapping bridge for aligning host block size with physical block size of a data storage device
US20110119462A1 (en) * 2009-11-19 2011-05-19 Ocz Technology Group, Inc. Method for restoring and maintaining solid-state drive performance
WO2011061724A1 (en) * 2009-11-23 2011-05-26 Amir Ban Memory controller and methods for enhancing write performance of a flash device
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
US8285918B2 (en) * 2009-12-11 2012-10-09 Nimble Storage, Inc. Flash memory cache for data storage device
US8443167B1 (en) 2009-12-16 2013-05-14 Western Digital Technologies, Inc. Data storage device employing a run-length mapping table and a single address mapping table
TWI425515B (zh) * 2009-12-23 2014-02-01 Silicon Motion Inc 資料儲存裝置及快閃記憶體之資料寫入方法
US20110161560A1 (en) * 2009-12-31 2011-06-30 Hutchison Neil D Erase command caching to improve erase performance on flash memory
US9134918B2 (en) * 2009-12-31 2015-09-15 Sandisk Technologies Inc. Physical compression of data with flat or systematic pattern
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
JP5404483B2 (ja) * 2010-03-17 2014-01-29 株式会社東芝 メモリシステム
US8194340B1 (en) 2010-03-18 2012-06-05 Western Digital Technologies, Inc. Disk drive framing write data with in-line mapping data during write operations
JP5066209B2 (ja) 2010-03-18 2012-11-07 株式会社東芝 コントローラ、データ記憶装置、及びプログラム
US8687306B1 (en) 2010-03-22 2014-04-01 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones
US8856438B1 (en) 2011-12-09 2014-10-07 Western Digital Technologies, Inc. Disk drive with reduced-size translation table
US8693133B1 (en) 2010-03-22 2014-04-08 Western Digital Technologies, Inc. Systems and methods for improving sequential data rate performance using sorted data zones for butterfly format
US9330715B1 (en) 2010-03-22 2016-05-03 Western Digital Technologies, Inc. Mapping of shingled magnetic recording media
US8699185B1 (en) 2012-12-10 2014-04-15 Western Digital Technologies, Inc. Disk drive defining guard bands to support zone sequentiality when butterfly writing shingled data tracks
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
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
US8417876B2 (en) * 2010-06-23 2013-04-09 Sandisk Technologies Inc. Use of guard bands and phased maintenance operations to avoid exceeding maximum latency requirements in non-volatile memory systems
US8386714B2 (en) 2010-06-29 2013-02-26 International Business Machines Corporation Reducing write amplification in a cache with flash memory used as a write cache
CN102375779B (zh) * 2010-08-16 2015-08-19 深圳市朗科科技股份有限公司 一种数据处理方法以及数据处理模块
US8966209B2 (en) * 2010-08-23 2015-02-24 Apple Inc. Efficient allocation policies for a system having non-volatile memory
US8850114B2 (en) 2010-09-07 2014-09-30 Daniel L Rosenband Storage array controller for flash-based storage devices
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
US8452911B2 (en) 2010-09-30 2013-05-28 Sandisk Technologies Inc. Synchronized maintenance operations in a multi-bank storage system
US8756361B1 (en) 2010-10-01 2014-06-17 Western Digital Technologies, Inc. Disk drive modifying metadata cached in a circular buffer when a write operation is aborted
US8954664B1 (en) 2010-10-01 2015-02-10 Western Digital Technologies, Inc. Writing metadata files on a disk
DE112010005870B4 (de) 2010-11-08 2019-10-10 Hyperstone Gmbh Verfahren zur Freigabe nicht länger benötigter Speicherbereiche auf nichtflüchtigen Speichermedien
WO2012083308A2 (en) * 2010-12-17 2012-06-21 Fusion-Io, Inc. Apparatus, system, and method for persistent data management on a non-volatile storage media
US8458435B1 (en) 2010-12-20 2013-06-04 Western Digital Technologies, Inc. Sequential write thread detection
JP2012133655A (ja) * 2010-12-22 2012-07-12 Sony Corp 管理装置、管理方法、およびプログラム
US8818966B1 (en) * 2010-12-30 2014-08-26 Emc Corporation Continuous file defragmentation during file over-writes
US8458133B2 (en) 2011-01-24 2013-06-04 Apple Inc. Coordinating sync points between a non-volatile memory and a file system
JP5917163B2 (ja) * 2011-01-27 2016-05-11 キヤノン株式会社 情報処理装置、その制御方法及びプログラム並びに記憶媒体
JP5452736B2 (ja) * 2011-01-31 2014-03-26 三菱電機株式会社 メモリコントローラ及びメモリアクセス方法
US9058212B2 (en) * 2011-03-21 2015-06-16 Microsoft Technology Licensing, Llc Combining memory pages having identical content
US8775731B2 (en) 2011-03-25 2014-07-08 Dell Products, L.P. Write spike performance enhancement in hybrid storage systems
US9342446B2 (en) * 2011-03-29 2016-05-17 SanDisk Technologies, Inc. Non-volatile memory system allowing reverse eviction of data updates to non-volatile binary cache
US8537613B2 (en) 2011-03-31 2013-09-17 Sandisk Technologies Inc. Multi-layer memory system
US8595426B2 (en) * 2011-04-11 2013-11-26 Sandisk Il Ltd. Handling commands within a write-once read-many storage device configuration
US20120303878A1 (en) * 2011-05-26 2012-11-29 International Business Machines Corporation Method and Controller for Identifying a Unit in a Solid State Memory Device for Writing Data to
US8793429B1 (en) 2011-06-03 2014-07-29 Western Digital Technologies, Inc. Solid-state drive with reduced power up time
US9727570B2 (en) * 2011-06-03 2017-08-08 Apple Inc. Mount-time unmapping of unused logical addresses in non-volatile memory systems
US8756382B1 (en) 2011-06-30 2014-06-17 Western Digital Technologies, Inc. Method for file based shingled data storage utilizing multiple media types
US8843443B1 (en) 2011-06-30 2014-09-23 Emc Corporation Efficient backup of virtual data
US8849777B1 (en) * 2011-06-30 2014-09-30 Emc Corporation File deletion detection in key value databases for virtual backups
US9158670B1 (en) 2011-06-30 2015-10-13 Western Digital Technologies, Inc. System and method for dynamically adjusting garbage collection policies in solid-state memory
US8930614B2 (en) * 2011-07-29 2015-01-06 Kabushiki Kaisha Toshiba Data storage apparatus and method for compaction processing
JP5514169B2 (ja) * 2011-08-15 2014-06-04 株式会社東芝 情報処理装置および情報処理方法
US8555020B2 (en) * 2011-09-23 2013-10-08 Hewlett-Packard Development Company, L.P. Reclaiming space occupied by an expired variable record in a non-volatile record storage
US9158706B2 (en) 2011-10-31 2015-10-13 International Business Machines Corporation Selective space reclamation of data storage memory employing heat and relocation metrics
KR101867282B1 (ko) * 2011-11-07 2018-06-18 삼성전자주식회사 비휘발성 메모리 장치의 가비지 컬렉션 방법
US8756458B2 (en) * 2011-12-12 2014-06-17 Apple Inc. Mount-time reconciliation of data availability
US9069657B2 (en) * 2011-12-12 2015-06-30 Apple Inc. LBA bitmap usage
US9213493B1 (en) 2011-12-16 2015-12-15 Western Digital Technologies, Inc. Sorted serpentine mapping for storage drives
US8819367B1 (en) 2011-12-19 2014-08-26 Western Digital Technologies, Inc. Accelerated translation power recovery
US8762627B2 (en) 2011-12-21 2014-06-24 Sandisk Technologies Inc. Memory logical defragmentation during garbage collection
US8612706B1 (en) 2011-12-21 2013-12-17 Western Digital Technologies, Inc. Metadata recovery in a disk drive
US9189172B1 (en) * 2012-01-06 2015-11-17 Seagate Technology Llc High priority read and write
US9417998B2 (en) * 2012-01-26 2016-08-16 Memory Technologies Llc Apparatus and method to provide cache move with non-volatile mass memory system
US9268692B1 (en) 2012-04-05 2016-02-23 Seagate Technology Llc User selectable caching
US9542324B1 (en) 2012-04-05 2017-01-10 Seagate Technology Llc File associated pinning
US8760922B2 (en) 2012-04-10 2014-06-24 Sandisk Technologies Inc. System and method for micro-tiering in non-volatile memory
US20130290619A1 (en) * 2012-04-30 2013-10-31 Netapp, Inc. Apparatus and Method for Sequential Operation on a Random Access Device
US9141533B2 (en) * 2012-05-31 2015-09-22 Silicon Motion, Inc. Data storage device and flash memory control method for performing garbage collection
US10282286B2 (en) * 2012-09-14 2019-05-07 Micron Technology, Inc. Address mapping using a data unit type that is variable
US9734911B2 (en) 2012-12-31 2017-08-15 Sandisk Technologies Llc Method and system for asynchronous die operations in a non-volatile memory
US9323662B2 (en) * 2012-12-31 2016-04-26 SanDisk Technologies, Inc. Flash memory using virtual physical addresses
US9465731B2 (en) 2012-12-31 2016-10-11 Sandisk Technologies Llc Multi-layer non-volatile memory system having multiple partitions in a layer
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
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
US8873284B2 (en) 2012-12-31 2014-10-28 Sandisk Technologies Inc. Method and system for program scheduling in a multi-layer memory
US9652376B2 (en) 2013-01-28 2017-05-16 Radian Memory Systems, Inc. Cooperative flash memory control
US9021187B2 (en) 2013-01-29 2015-04-28 Sandisk Technologies Inc. Logical block address remapping
US20140281306A1 (en) * 2013-03-14 2014-09-18 Hitachi, Ltd. Method and apparatus of non-disruptive storage migration
US8954657B1 (en) * 2013-09-27 2015-02-10 Avalanche Technology, Inc. Storage processor managing solid state disk array
US9448928B2 (en) * 2013-04-26 2016-09-20 Oracle International Corporation System and method for two-tier adaptive heap management in a virtual machine environment
CN103605478B (zh) * 2013-05-17 2016-12-28 华为技术有限公司 存储地址标示、配置方法和数据存取方法及系统
US9323539B2 (en) * 2013-06-27 2016-04-26 Intel Corporation Constructing persistent file system from scattered persistent regions
KR102088193B1 (ko) * 2013-08-08 2020-03-13 삼성전자주식회사 저장장치, 이를 포함하는 컴퓨터 시스템 및 이의 동작 방법
US10534683B2 (en) * 2013-08-29 2020-01-14 International Business Machines Corporation Communicating outstanding maintenance tasks to improve disk data integrity
KR101547317B1 (ko) 2013-09-30 2015-08-26 주식회사 유니테스트 스토리지 테스트 장치에서 로직 블록 어드레스와 데이터 버퍼 주소를 이용한 불량 블록 검출 시스템
US9298389B2 (en) 2013-10-28 2016-03-29 Lenovo Enterprise Solutions (Singapore) Pte. Ltd. Operating a memory management controller
US9645742B2 (en) 2014-02-05 2017-05-09 Sandisk Technologies Llc Storage module and host device for storage module defragmentation
US20150254011A1 (en) * 2014-03-10 2015-09-10 Kabushiki Kaisha Toshiba Memory system, memory controller and control method of non-volatile memory
CN104090730B (zh) * 2014-07-08 2017-02-22 飞天诚信科技股份有限公司 一种对存储设备进行数据读写的方法及装置
US8953269B1 (en) 2014-07-18 2015-02-10 Western Digital Technologies, Inc. Management of data objects in a data object zone
US9875055B1 (en) 2014-08-04 2018-01-23 Western Digital Technologies, Inc. Check-pointing of metadata
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
US9645739B2 (en) * 2014-09-26 2017-05-09 Intel Corporation Host-managed non-volatile memory
US20160098431A1 (en) * 2014-10-06 2016-04-07 Seagate Technology Llc Performing mathematical operations on changed versions of data objects via a storage compute device
US9934872B2 (en) 2014-10-30 2018-04-03 Sandisk Technologies Llc Erase stress and delta erase loop count methods for various fail modes in non-volatile memory
US9575853B2 (en) * 2014-12-12 2017-02-21 Intel Corporation Accelerated data recovery in a storage system
JP2016122227A (ja) * 2014-12-24 2016-07-07 株式会社東芝 メモリシステムおよび情報処理システム
US9224502B1 (en) 2015-01-14 2015-12-29 Sandisk Technologies Inc. Techniques for detection and treating memory hole to local interconnect marginality defects
US10032524B2 (en) 2015-02-09 2018-07-24 Sandisk Technologies Llc Techniques for determining local interconnect defects
US9564219B2 (en) 2015-04-08 2017-02-07 Sandisk Technologies Llc Current based detection and recording of memory hole-interconnect spacing defects
US9269446B1 (en) 2015-04-08 2016-02-23 Sandisk Technologies Inc. Methods to improve programming of slow cells
WO2016175028A1 (ja) * 2015-04-28 2016-11-03 日本電気株式会社 情報処理システム、記憶制御装置、記憶制御方法および記憶制御プログラム
KR102403266B1 (ko) 2015-06-22 2022-05-27 삼성전자주식회사 데이터 저장 장치와 이를 포함하는 데이터 처리 시스템
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
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
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
CN106991058B (zh) * 2016-01-21 2020-06-26 腾讯科技(深圳)有限公司 预取文件处理方法及装置
US20170220623A1 (en) * 2016-01-29 2017-08-03 Netapp, Inc. Hot-Spot Adaptive Garbage Collection
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
US10540274B2 (en) * 2016-03-29 2020-01-21 Micron Technology, Inc. Memory devices including dynamic superblocks, and related methods and electronic systems
US20170300422A1 (en) * 2016-04-14 2017-10-19 Micron Technology, Inc. Memory device with direct read access
US10366004B2 (en) * 2016-07-26 2019-07-30 Pure Storage, Inc. Storage system with elective garbage collection to reduce flash contention
WO2018022136A1 (en) 2016-07-26 2018-02-01 Pure Storage, Inc. Geometry based, space aware shelf/writegroup evacuation
US9952798B2 (en) * 2016-08-12 2018-04-24 Google Inc. Repartitioning data in a distributed computing system
JP2018041204A (ja) 2016-09-06 2018-03-15 東芝メモリ株式会社 メモリ装置及び情報処理システム
KR102611638B1 (ko) * 2016-09-27 2023-12-08 삼성전자주식회사 스토리지 장치의 동작 방법 및 스토리지 장치를 포함하는 데이터 저장 시스템
CN108009111B (zh) * 2016-11-01 2020-02-21 华为技术有限公司 数据流连接方法及装置
CN107870739B (zh) * 2017-03-15 2021-03-19 珠海市杰理科技股份有限公司 磁盘文件存储方法和系统
KR102233400B1 (ko) * 2017-05-29 2021-03-26 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
CN107329892B (zh) * 2017-06-07 2020-09-11 珠海市杰理科技股份有限公司 驱动测试方法、装置、存储介质及其计算机设备
US20180357121A1 (en) * 2017-06-09 2018-12-13 Qualcomm Incorporated Error correction calculation upon serial bus abort
US10521375B2 (en) 2017-06-22 2019-12-31 Macronix International Co., Ltd. Controller for a memory system
KR102270103B1 (ko) * 2017-07-11 2021-06-28 에스케이하이닉스 주식회사 데이터 저장 장치 및 그것의 동작 방법
US10579633B2 (en) * 2017-08-31 2020-03-03 Micron Technology, Inc. Reducing probabilistic filter query latency
US10446197B2 (en) 2017-08-31 2019-10-15 Micron Technology, Inc. Optimized scan interval
JP6785205B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
JP6785204B2 (ja) * 2017-09-21 2020-11-18 キオクシア株式会社 メモリシステムおよび制御方法
US10754580B2 (en) 2017-10-23 2020-08-25 Micron Technology, Inc. Virtual partition management in a memory device
CN109725840B (zh) * 2017-10-30 2022-04-05 伊姆西Ip控股有限责任公司 利用异步冲刷对写入进行节流
CN108021512A (zh) * 2017-11-22 2018-05-11 深圳忆联信息系统有限公司 一种固态硬盘映射管理方法及固态硬盘
WO2019113729A1 (en) 2017-12-11 2019-06-20 Micron Technology, Inc. Scheme to improve efficiency of garbage collection in cached flash translation layer
KR20190075352A (ko) * 2017-12-21 2019-07-01 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작 방법
KR20190107504A (ko) 2018-03-12 2019-09-20 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10365854B1 (en) 2018-03-19 2019-07-30 Micron Technology, Inc. Tracking data temperatures of logical block addresses
TWI670598B (zh) * 2018-05-14 2019-09-01 慧榮科技股份有限公司 管理快閃記憶體模組的方法及相關的快閃記憶體控制器及電子裝置
KR20200007595A (ko) * 2018-07-13 2020-01-22 에스케이하이닉스 주식회사 메모리 시스템 및 메모리 시스템의 동작방법
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
US11709623B2 (en) * 2018-08-03 2023-07-25 Sk Hynix Nand Product Solutions Corp. NAND-based storage device with partitioned nonvolatile write buffer
KR20200057866A (ko) 2018-11-16 2020-05-27 삼성전자주식회사 불휘발성 메모리 장치를 포함하는 스토리지 장치 및 이의 동작 방법
CN109471831B (zh) * 2018-11-16 2021-10-29 郑州云海信息技术有限公司 一种数据处理方法及装置
KR20200076531A (ko) * 2018-12-19 2020-06-29 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
CN109783019B (zh) * 2018-12-28 2022-08-19 上海威固信息技术股份有限公司 一种数据智能存储管理方法与装置
US11681797B2 (en) 2019-08-28 2023-06-20 Micron Technology, Inc. Row activation prevention using fuses
US11152054B2 (en) 2019-08-28 2021-10-19 Micron Technology, Inc. Apparatuses and methods for performing background operations in memory using sensing circuitry
US11163449B2 (en) 2019-10-17 2021-11-02 EMC IP Holding Company LLC Adaptive ingest throttling in layered storage systems
CN110879687B (zh) * 2019-10-18 2021-03-16 蚂蚁区块链科技(上海)有限公司 一种基于磁盘存储的数据读取方法、装置及设备
US11249896B2 (en) 2019-12-20 2022-02-15 Micron Technology, Inc. Logical-to-physical mapping of data groups with data locality
US11429296B2 (en) 2020-06-01 2022-08-30 Western Digital Technologies, Inc. Storage system, host, and method for extended and imaginary logical-to-physical address mapping
TWI738442B (zh) * 2020-07-29 2021-09-01 慧榮科技股份有限公司 資料儲存裝置與資料處理方法
CN112100095B (zh) * 2020-08-28 2023-07-04 深圳市宏旺微电子有限公司 闪存空间优化方法、装置和闪存存储设备
CN112069089B (zh) * 2020-09-11 2022-09-27 杭州海康威视系统技术有限公司 回收存储块的方法及装置
CN112416811B (zh) * 2020-11-18 2024-02-27 深圳市硅格半导体有限公司 基于数据关联度的垃圾回收方法、闪存及装置
CN112732174A (zh) * 2020-12-25 2021-04-30 北京金山云网络技术有限公司 数据的处理方法和装置、电子设备和存储介质
US11875036B2 (en) 2021-01-13 2024-01-16 Samsung Electronics Co., Ltd. Computing system including host and storage system and having increased write performance
KR102509987B1 (ko) * 2021-01-13 2023-03-15 삼성전자주식회사 호스트 및 스토리지 시스템을 포함하는 컴퓨팅 시스템
CN112860594B (zh) * 2021-01-21 2022-11-01 华中科技大学 一种固态盘地址重映射方法、设备及固态盘
US11687447B1 (en) * 2022-01-04 2023-06-27 Silicon Motion, Inc. Method and apparatus for performing access control of memory device with aid of additional physical address information
US11894060B2 (en) 2022-03-25 2024-02-06 Western Digital Technologies, Inc. Dual performance trim for optimization of non-volatile memory performance, endurance, and reliability
CN116578246B (zh) * 2023-07-05 2023-09-29 合肥康芯威存储技术有限公司 一种存储设备及其控制方法

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US20030229753A1 (en) * 2002-06-10 2003-12-11 Samsung Electronics Co., Ltd. Flash memory file system
US6725321B1 (en) * 1999-02-17 2004-04-20 Lexar Media, Inc. Memory system
US20050278479A1 (en) * 2004-06-09 2005-12-15 Integrated Circuit Solution Inc. Method of efficient data management with flash storage system
US20060020744A1 (en) * 2004-07-21 2006-01-26 Sandisk Corporation Method and apparatus for maintaining data on non-volatile memory systems
US20060285397A1 (en) * 2005-06-06 2006-12-21 Sony Corporation Storage device
US20070016756A1 (en) * 2005-07-15 2007-01-18 Jen-Wei Hsieh Device for identifying data characteristics for flash memory

Family Cites Families (58)

* 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 사토 후미오 불휘발성 반도체 기억장치
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
US5960169A (en) * 1997-02-27 1999-09-28 International Business Machines Corporation Transformational raid for hierarchical storage management system
US6098190A (en) * 1998-08-04 2000-08-01 Hewlett-Packard Co. Method and apparatus for use of a host address to validate accessed data
US6622199B1 (en) 1999-07-02 2003-09-16 Qualcomm Incorporated Method for minimizing data relocation overhead in flash based file systems
US7318117B2 (en) * 2004-02-26 2008-01-08 Super Talent Electronics, Inc. Managing flash memory including recycling obsolete sectors
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 株式会社東芝 不揮発性半導体メモリ
US20080320209A1 (en) * 2000-01-06 2008-12-25 Super Talent Electronics, Inc. High Performance and Endurance Non-volatile Memory Based Storage Systems
US20050204187A1 (en) * 2004-03-11 2005-09-15 Lee Charles C. System and method for managing blocks in flash memory
JP2001283594A (ja) 2000-03-29 2001-10-12 Sharp Corp 不揮発性半導体記憶装置
US6721843B1 (en) 2000-07-07 2004-04-13 Lexar Media, Inc. Flash memory architecture implementing simultaneously programmable multiple flash memory banks that are host compatible
KR100365725B1 (ko) * 2000-12-27 2002-12-26 한국전자통신연구원 플래시 메모리를 이용한 파일 시스템에서 등급별 지움정책 및 오류 복구 방법
JP3631463B2 (ja) * 2001-12-27 2005-03-23 株式会社東芝 不揮発性半導体記憶装置
DE10123285A1 (de) * 2001-05-12 2002-11-14 Conti Temic Microelectronic Zündelement für pyrotechnische Wirkmassen auf einer Schaltungsträgeranordnung mit einer Zündelektronikbaugruppe
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
US20030212859A1 (en) 2002-05-08 2003-11-13 Ellis Robert W. Arrayed data storage architecture with simultaneous command of multiple storage media
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
US6831865B2 (en) 2002-10-28 2004-12-14 Sandisk Corporation Maintaining erase counts in non-volatile storage systems
US7428644B2 (en) * 2003-06-20 2008-09-23 Micron Technology, Inc. System and method for selective memory module power management
DE10339665B3 (de) * 2003-08-28 2005-01-13 Infineon Technologies Ag Halbleiter-Speicherbauelement, mit Steuereinrichtung zum Aktivieren von Speicherzellen und Verfahren zum Betrieb eines Halbleiter-Speicherbauelements
US20050144363A1 (en) * 2003-12-30 2005-06-30 Sinclair Alan W. Data boundary management
WO2005066793A2 (en) 2003-12-30 2005-07-21 Sandisk Corporation Non-volatile memory and method with non-sequential update block management
US7173863B2 (en) * 2004-03-08 2007-02-06 Sandisk Corporation Flash controller cache architecture
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
US7680977B2 (en) * 2004-02-26 2010-03-16 Super Talent Electronics, Inc. Page and block management algorithm for NAND flash
JP4594391B2 (ja) * 2004-07-19 2010-12-08 コーニンクレッカ フィリップス エレクトロニクス エヌ ヴィ 多層ディスクにおける層ジャンプ
US8375146B2 (en) * 2004-08-09 2013-02-12 SanDisk Technologies, Inc. Ring bus structure and its use in flash memory systems
US20060047800A1 (en) * 2004-08-24 2006-03-02 Panduit Corporation Systems and methods for network management
US7315916B2 (en) * 2004-12-16 2008-01-01 Sandisk Corporation Scratch pad block
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
US7457910B2 (en) 2005-06-29 2008-11-25 Sandisk Corproation Method and system for managing partitions in a storage device
KR100652415B1 (ko) * 2005-07-02 2006-12-01 삼성전자주식회사 1 로우 액티베이션 구조 또는 2 로우 액티베이션 구조를선택할 수 있는 반도체 메모리 장치 및 2 로우 액티베이션방법
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
US7480766B2 (en) * 2005-08-03 2009-01-20 Sandisk Corporation Interfacing systems operating through a logical address space and on a direct data file basis
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
US20070260841A1 (en) * 2006-05-02 2007-11-08 Hampel Craig E Memory module with reduced access granularity
US7930468B2 (en) * 2006-05-23 2011-04-19 Dataram, Inc. System for reading and writing on flash memory device having plural microprocessors
US7552280B1 (en) * 2006-06-28 2009-06-23 Emc Corporation Asymmetrically interleaving access to redundant storage devices
US7958331B2 (en) * 2006-12-13 2011-06-07 Seagate Technology Llc Storage device with opportunistic address space
US9396103B2 (en) * 2007-06-08 2016-07-19 Sandisk Technologies Llc Method and system for storage address re-mapping for a memory device
US8095735B2 (en) * 2008-08-05 2012-01-10 Convey Computer Memory interleave for heterogeneous computing
US8775717B2 (en) * 2007-12-27 2014-07-08 Sandisk Enterprise Ip Llc Storage controller for flash memory including a crossbar switch connecting a plurality of processors with a plurality of internal memories
US8120990B2 (en) * 2008-02-04 2012-02-21 Mosaid Technologies Incorporated Flexible memory operations in NAND flash devices
US20090271562A1 (en) * 2008-04-25 2009-10-29 Sinclair Alan W Method and system for storage address re-mapping for a multi-bank memory device

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5860124A (en) * 1996-09-30 1999-01-12 Intel Corporation Method for performing a continuous over-write of a file in nonvolatile memory
US6725321B1 (en) * 1999-02-17 2004-04-20 Lexar Media, Inc. Memory system
US20030229753A1 (en) * 2002-06-10 2003-12-11 Samsung Electronics Co., Ltd. Flash memory file system
US20050278479A1 (en) * 2004-06-09 2005-12-15 Integrated Circuit Solution Inc. Method of efficient data management with flash storage system
US20060020744A1 (en) * 2004-07-21 2006-01-26 Sandisk Corporation Method and apparatus for maintaining data on non-volatile memory systems
US20060285397A1 (en) * 2005-06-06 2006-12-21 Sony Corporation Storage device
US20070016756A1 (en) * 2005-07-15 2007-01-18 Jen-Wei Hsieh Device for identifying data characteristics for flash memory

Also Published As

Publication number Publication date
TW200905680A (en) 2009-02-01
JP5530012B2 (ja) 2014-06-25
EP2156299B1 (en) 2014-07-16
US20080307192A1 (en) 2008-12-11
CN102831070A (zh) 2012-12-19
CN102831071A (zh) 2012-12-19
JP2010532023A (ja) 2010-09-30
KR20100034743A (ko) 2010-04-01
JP5350371B2 (ja) 2013-11-27
US9396103B2 (en) 2016-07-19
WO2008154216A1 (en) 2008-12-18
JP2014013585A (ja) 2014-01-23
CN101779195B (zh) 2013-09-25
EP2156299A1 (en) 2010-02-24
CN102831070B (zh) 2016-02-17
CN102831071B (zh) 2016-02-17
EP2156299A4 (en) 2012-07-04
US8429352B2 (en) 2013-04-23
US20080307164A1 (en) 2008-12-11
KR101453264B1 (ko) 2014-10-21
CN101779195A (zh) 2010-07-14

Similar Documents

Publication Publication Date Title
TWI394160B (zh) 用於重映射記憶體裝置之儲存位址的方法及系統
TWI437441B (zh) 多庫記憶體裝置之儲存位址重映射之方法及系統
US7877540B2 (en) Logically-addressed file storage methods
TWI464584B (zh) 用於實施延伸以智慧型管理一大容量儲存系統之資源的系統與方法
US8209461B2 (en) Configuration of host LBA interface with flash memory
US7409489B2 (en) Scheduling of reclaim operations in non-volatile memory
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
US7739444B2 (en) System using a direct data file system with a continuous logical address space interface
US8166267B2 (en) Managing a LBA interface in a direct data file memory system
US7917686B2 (en) Host system with direct data file interface configurability
US20080155175A1 (en) Host System That Manages a LBA Interface With Flash Memory
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
EP2097825B1 (en) Use of a direct data file system with a continuous logical address space interface
WO2007019198A2 (en) Non-volatile memory with scheduled reclaim operations
EP1960863A2 (en) Logically-addressed file storage
WO2008083001A9 (en) Managing a lba interface in a direct data file memory system
WO2008082999A2 (en) Configuration of host lba interface with flash memory

Legal Events

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