專利名稱:最佳順序性簇管理的fat分析的制作方法
技術(shù)領域:
本發(fā)明大體上涉及用于與計算系統(tǒng)一起使用的數(shù)據(jù)存儲系統(tǒng),且更確切地說,涉及用于在非易失性存儲器存儲裝置上保存數(shù)據(jù)的技術(shù)。
背景技術(shù):
如今,有許多商業(yè)上成功的非易失性存儲器產(chǎn)品正被使用,特別是具有小型卡形式的存儲器產(chǎn)品,這類產(chǎn)品使用形成在一個或一個以上集成電路小片上的閃存EEPROM(電可擦除可編程只讀存儲器)單元陣列。通常提供單獨集成電路小片上的存儲器控制器來作為對主機的接口。主機可使用控制器來對非易失性存儲器執(zhí)行多種操作(例如,讀、寫)??刂破魍ǔ0⑻幚砥鳌⒛撤N非易失性只讀存儲器(ROM)、易失性隨機存取存儲器(RAM)和一個或一個以上專用電路,例如在編程和讀取數(shù)據(jù)期間在數(shù)據(jù)穿過控制器時從數(shù)據(jù)中計算出誤差校正碼(ECC)的專用電路。一些可在市面上買到的卡是壓縮閃存TM(CF)卡、多媒體卡(MMC)、安全數(shù)字(SD)卡、智能媒體卡、人事標簽(P-Tag)和存儲器存儲卡。主機包含個人計算機、筆記本計算機、個人數(shù)字助理(PDA)、各種數(shù)據(jù)通信裝置、數(shù)碼相機、蜂窩式電話、便攜式音頻播放機、汽車音響系統(tǒng)和類似類型的設備。除了存儲卡實施方案之外,非易失性存儲器可替代性地嵌入到各種類型的主機系統(tǒng)中。
如在大多數(shù)集成電路應用中,閃存EEPROM存儲單元陣列也存在縮小實施某種集成電路功能所需的硅襯底面積的壓力。始終需要增加可存儲在給定硅襯底面積中的數(shù)字數(shù)據(jù)的數(shù)量,以便增加給定尺寸的存儲卡及其它類型的封裝的存儲容量,或者既增加容量同時又減小尺寸。增加數(shù)據(jù)存儲密度的一種方法是在每個存儲單元和/或每個存儲單位或元件中存儲一位以上的數(shù)據(jù)。通過將存儲元件電荷電平電壓范圍窗口劃分成兩種以上狀態(tài)來完成這種做法。使用四種此類狀態(tài)允許每個單元存儲兩位數(shù)據(jù),每種狀態(tài)在每個存儲元件中存儲三位數(shù)據(jù),等等。第5,043,940號和第5,172,338號美國專利中描述了使用浮柵的多狀態(tài)閃存EEPROM結(jié)構(gòu)及其操作,且前述第2003/0109093號美國專利申請公開案中描述了使用介電浮柵的結(jié)構(gòu)。出于多種原因,也可用第5,930,167號和第6,456,528號美國專利中描述的方式以兩種狀態(tài)(二進制)來操作多狀態(tài)存儲單元陣列的選定部分。
典型的閃存EEPROM陣列的存儲單元被劃分為離散的單元“區(qū)塊”,所述區(qū)塊可被一起擦除。每個擦除區(qū)塊通常存儲一個或一個以上頁面的數(shù)據(jù),頁面是編程和讀取的最小單位,雖然也可在不同子陣列或平面中并行編程或讀取一個以上頁面。每個頁面通常存儲一個或一個以上扇區(qū)的數(shù)據(jù),扇區(qū)大小是由主機系統(tǒng)定義的。實例性扇區(qū)根據(jù)由磁盤驅(qū)動器建立的標準而包含512個字節(jié)的用戶數(shù)據(jù),加上若干字節(jié)的與用戶數(shù)據(jù)和/或存儲所述用戶數(shù)據(jù)的擦除區(qū)塊有關(guān)的額外開銷信息。此類存儲器通常在每個擦除區(qū)塊內(nèi)配置有32、128或更多的頁面,且每個頁面存儲一個或僅若干個主機扇區(qū)的數(shù)據(jù)。還應注意,為了將數(shù)據(jù)重新寫入?yún)^(qū)塊,應首先擦除所述區(qū)塊。
為了在將用戶數(shù)據(jù)編程到存儲器陣列中和從存儲器陣列中讀取用戶數(shù)據(jù)期間增加并行度,通常將所述陣列劃分成子陣列(一般稱為平面),所述子陣列中含有其各自的數(shù)據(jù)寄存器和其它電路以實現(xiàn)并行操作,從而使得可同時將若干扇區(qū)的數(shù)據(jù)編程到若干平面或所有平面中的每一者中或從若干平面或所有平面中的每一者中讀取若干扇區(qū)的數(shù)據(jù)??蓪蝹€集成電路上的陣列以物理形式劃分成多個平面,或可由單獨的一個或一個以上集成電路小片形成每個平面。第5,798,968號和第5,890,192號美國專利中描述了此類存儲器實施方案的實例。
為了進一步高效地管理存儲器,可將擦除區(qū)塊以邏輯形式鏈接在一起,以形成虛擬區(qū)塊或元區(qū)塊。也就是說,可將每個元區(qū)塊定義為包含來自每個平面的一個擦除區(qū)塊。第WO 02/058074號國際專利申請公開案中描述了所述元區(qū)塊的使用。元區(qū)塊由主機邏輯區(qū)塊地址識別為用于編程和讀取數(shù)據(jù)的目的地。同樣,元區(qū)塊的所有擦除區(qū)塊被一起擦除。與此類大型區(qū)塊和/或元區(qū)塊一起操作的存儲器系統(tǒng)中的控制器執(zhí)行若干功能,包含從主機接收的邏輯區(qū)塊地址(LBA)與存儲單元陣列內(nèi)的物理區(qū)塊編號(PBN)之間的轉(zhuǎn)譯。通常由區(qū)塊地址內(nèi)的偏移量來識別區(qū)塊內(nèi)的個別頁面。地址轉(zhuǎn)譯通常涉及使用邏輯區(qū)塊編號(LBN)和邏輯頁面的中間項。因此,存儲器陣列中的區(qū)塊可由單個擦除區(qū)塊組成或可由以邏輯形式鏈接起來以形成元區(qū)塊的兩個或兩個以上擦除區(qū)塊組成。
從主機應用程序的角度看,可將閃存存儲器劃分成從邏輯地址零(0)開始且以邏輯地址N結(jié)束的邏輯地址空間。圖1說明主機的邏輯地址空間102,其被分割成多個“邏輯扇區(qū)”。主機將若干(例如,四到六十四(4-64)個)邏輯扇區(qū)分組成一簇。如圖1所示,主機可將邏輯地址空間102劃分成多個簇,包含簇A、B、C、D、E、F、G和H。由此,這些簇中的每一者可代表預定數(shù)目的扇區(qū)(例如,每個簇四到六十四(4-64)個邏輯扇區(qū))。在任何情況下,主機均以數(shù)據(jù)的邏輯單位來分配數(shù)據(jù),所述邏輯單位可稱為“簇”。舉例來說,簇A、B和C可用來分配文件1,而簇D用來分配文件2。應注意,主機以簇分配文件。然而,并非簇中的所有邏輯扇區(qū)均需要含有一文件的數(shù)據(jù)。舉例而言,簇C中只有一部分(例如,只有一個邏輯扇區(qū))可具有數(shù)據(jù)。然而,主機通常將整個簇分配給文件,即使并非需要所述簇中的所有邏輯扇區(qū)。
主機可使用文件分配表(FAT)104來跟蹤文件。文件分配表(FAT)104有效地代表邏輯文件結(jié)構(gòu),且也指示已為邏輯文件結(jié)構(gòu)中的每個文件分配了哪個簇。主機通過更新文件分配表(FAT)104來維護邏輯文件結(jié)構(gòu)。舉例而言,當分配了新文件時,對文件分配表(FAT)104進行更新,以尤其指示已為新文件分配了哪個(些)簇。同樣,當刪除文件或目錄時,主機更新文件分配表(FAT)104。應注意,由于更新的原因,主機可能會對簇解除分配。舉例而言,當主機刪除文件1時,可能會得到經(jīng)過更新的文件分配表(FAT)106,其中主機有效地對被分配用于存儲文件1的簇A、B和C解除分配。
與主機的邏輯地址空間相反,閃存存儲器控制器的邏輯地址空間被劃分成多個“邏輯區(qū)塊”。換句話說,可將同一邏輯地址空間102表示為控制器的邏輯地址空間103。在此實例中,邏輯地址空間102和邏輯地址空間103的基礎單位均為扇區(qū)。如圖1所示,可將邏輯地址空間103劃分成多個邏輯區(qū)塊,包含邏輯區(qū)塊1和邏輯區(qū)塊2,每個邏輯區(qū)塊包括多個扇區(qū)的數(shù)據(jù),所述扇區(qū)的數(shù)據(jù)被映射到存儲器陣列的單個區(qū)塊。這些邏輯區(qū)塊被映射到可作為擦除單位的存儲器區(qū)塊(例如,單個擦除區(qū)塊或元區(qū)塊)中。因此,邏輯區(qū)塊與存儲器陣列的區(qū)塊之間存在一一對應,其中邏輯區(qū)塊中的所有扇區(qū)均存儲在單個區(qū)塊中。舉例來說,邏輯區(qū)塊1可被映射到區(qū)塊2中,等等。總而言之,主機和控制器使用不同的存儲器邏輯單位。主機將邏輯地址空間劃分成多個簇,而控制器將邏輯地址空間劃分成多個邏輯區(qū)塊。還應注意,通常僅將主機簇施加到分配給應用數(shù)據(jù)和子目錄條目的邏輯地址空間。此外,主機可能不會將分配給其它系統(tǒng)數(shù)據(jù)的邏輯地址空間作為簇來管理。還應注意,第一簇一般并不位于邏輯地址空間的開始處。因此,簇和邏輯區(qū)塊可能并不彼此對準。
然而,常規(guī)控制器并不知道主機所使用的邏輯結(jié)構(gòu)。常規(guī)上,控制器僅將主機所使用的邏輯地址102映射成邏輯地址103,然后再將其映射成物理地址110。這意味著常規(guī)控制器不會考慮主機的數(shù)據(jù)邏輯結(jié)構(gòu)或主機操作可能對數(shù)據(jù)造成的結(jié)果。舉例而言,當分配了新文件時,更新邏輯文件系統(tǒng)104以尤其指示已為所述新文件分配了哪個(些)簇。同樣,當刪除了文件或目錄時,主機會更新邏輯文件系統(tǒng)104。此外,主機可能會將一個或一個以上簇解除分配。舉例而言,當主機刪除了文件1時,經(jīng)過更新的文件分配表106指示主機已對先前分配用于存儲文件1的簇A、B和C有效地解除分配(即,在更新的文件分配表106中已不再表示文件1)。雖然簇A、B和C已被主機解除分配且可被擦除,但常規(guī)控制器不會對對應于已解除分配的簇A、B和C的數(shù)據(jù)進行“垃圾收集”。這意味著數(shù)據(jù)將繼續(xù)在存儲器上。垃圾收集是將有效扇區(qū)的數(shù)據(jù)從含有廢棄扇區(qū)的數(shù)據(jù)的初始區(qū)塊拷貝到更新區(qū)塊的操作。當已經(jīng)拷貝了所有有效扇區(qū)的數(shù)據(jù)時,可對初始區(qū)塊進行標記以供擦除。通常以此方式將數(shù)據(jù)從兩個或兩個以上區(qū)塊合并到單個區(qū)塊中,因而更有效率地存儲數(shù)據(jù)且釋放存儲器陣列中的空間。垃圾收集期間不必要的數(shù)據(jù)拷貝會降低此類操作的效率。此外,在可將兩個區(qū)塊中的數(shù)據(jù)合并到一個區(qū)塊中時,在垃圾收集期間會在更新區(qū)塊時將解除分配的數(shù)據(jù)拷貝若干次。
為了進一步說明,圖1中描繪初始區(qū)塊120。為簡單起見,假設初始區(qū)塊120包含對應于主機用來分配文件1和2的邏輯簇A、B、C和D的數(shù)據(jù)。此外,進一步假設主機后來對文件1(簇A、B和C)解除分配,初始區(qū)塊120仍然含有所有邏輯簇A、B、C和D,因為控制器無法知道文件1已被主機解除分配。然而,主機已要求控制器更新初始區(qū)塊120的數(shù)據(jù)部分D。換句話說,在某一點處,主機可能想改變文件2,因此其使用其知道的對應于一個或一個以上應被更新的邏輯扇區(qū)的數(shù)據(jù)的邏輯地址來發(fā)送寫入請求??刂破鞔_定主機所定址的這些邏輯扇區(qū)對應于已由主機寫入的扇區(qū)(例如,簇D),因此更新區(qū)塊122是被部分地使用,因為初始區(qū)塊120中的數(shù)據(jù)無法被覆寫。這意味著可在一段時間內(nèi)使用兩個區(qū)塊來代表邏輯區(qū)塊,直到更新區(qū)塊122被“關(guān)閉”(即,初始區(qū)塊120中的所有數(shù)據(jù)均被拷貝到區(qū)塊122)為止。(例如)在垃圾收集循環(huán)期間,可將初始區(qū)塊120與更新區(qū)塊122組合,以使得更新區(qū)塊122成為“初始”區(qū)塊122,且先前初始區(qū)塊120被擦除并被返回到可用存儲器區(qū)塊的集區(qū)。在任何情況下,應注意,遲早會將對應于被解除分配的簇(A、B和C)的數(shù)據(jù)拷貝到更新區(qū)塊122,以使得更新區(qū)塊122可被關(guān)閉且初始區(qū)塊120可被擦除??刂破骺稍谝资源鎯ζ骰蚍且资源鎯ζ鲀?nèi)保存映射表,所述映射表定義存儲器區(qū)塊對于數(shù)據(jù)的邏輯區(qū)塊的分配??截惔鎯υ诜且资源鎯ζ髦械臄?shù)據(jù)會花費大量時間和資源。然而,拷貝已被解除分配的數(shù)據(jù)(例如,已被解除分配的簇A、B和C)并不是必須的。因此,如果不拷貝已被解除分配的數(shù)據(jù),可進一步增強系統(tǒng)性能。一般來說,需要在遵守普遍使用的定址慣例的同時盡可能地增強系統(tǒng)性能。
因此,替代性非易失性存儲器管理技術(shù)將是有用的。
發(fā)明內(nèi)容
概括地說,本發(fā)明涉及用于管理非易失性存儲器系統(tǒng)(例如,閃存存儲器)中的數(shù)據(jù)的技術(shù)。根據(jù)本發(fā)明的一個方面,控制器可使用與主機的文件系統(tǒng)有關(guān)的信息來確定一個或一個以上簇(或一個或一個以上簇內(nèi)的一個或一個以上扇區(qū))當前是否被分配,所述與主機的文件系統(tǒng)有關(guān)的信息由主機存儲在非易失性存儲器上。將了解到,控制器可(尤其)使用與主機的文件系統(tǒng)有關(guān)的信息來確保(例如)在垃圾收集循環(huán)期間沒有將一個或一個以上簇(或一個或一個以上扇區(qū))從存儲器中的一個位置拷貝到另一位置。因此,可避免某些常規(guī)上執(zhí)行的不必要操作(例如拷貝數(shù)據(jù)),且增強系統(tǒng)性能。
還將了解到,控制器可直接使用一般由主機寫入在文件分配表(FAT)中的信息來確定是否已將一個或一個以上先前分配的簇解除分配?;蛘撸刂破骺墒褂脤懭朐诟夸?、子目錄和文件分配表(FAT)中的信息來(例如)在數(shù)據(jù)分配表(DAT)中產(chǎn)生和/或維護其自身關(guān)于簇分配的信息。然而,應明了,可將本發(fā)明實施為利用一般存儲在文件分配表(FAT)中的信息。因此,控制器不必維護其自身的信息或產(chǎn)生任何額外數(shù)據(jù)結(jié)構(gòu)(例如,數(shù)據(jù)分配表)。然而,如下文將要描述的,維護數(shù)據(jù)分配表(DAT)帶來的益處可能會多于僅僅依賴于從文件分配表(FAT)獲得的信息。因此,還將進一步說明(例如)實施為數(shù)據(jù)分配表(DAT)的數(shù)據(jù)屬性存儲(DAS)。
一般來說,控制器可在非易失性存儲器中維護數(shù)據(jù)屬性存儲(DAS),所述數(shù)據(jù)屬性存儲(DAS)包含一個或一個以上數(shù)據(jù)屬性。數(shù)據(jù)屬性可提供關(guān)于數(shù)據(jù)的有用信息(例如分配或解除分配狀態(tài)、大小、優(yōu)先權(quán))。由此,可使用數(shù)據(jù)屬性存儲(DAS)來更智能地管理數(shù)據(jù)。本發(fā)明的另一方面涉及用于使用數(shù)據(jù)屬性存儲(DAS)來管理數(shù)據(jù)的技術(shù)。
在一個實施例中,將數(shù)據(jù)屬性存儲(DAS)實施為分配存儲(AS)。所述分配存儲(AS)可(例如)實施為表或提供每個數(shù)據(jù)簇(主機的邏輯單位)的分配狀態(tài)的數(shù)據(jù)分配表(DAT)。簇代表主機用來以邏輯形式組織數(shù)據(jù)的邏輯單位。為了實現(xiàn)更好的存儲器管理,非易失性存儲器系統(tǒng)的控制器可存取數(shù)據(jù)分配表(DAT)。由此,數(shù)據(jù)分配表(DAT)有效地提供主機所使用的邏輯結(jié)構(gòu)與控制器之間的橋接。這允許控制器可有效地了解主機的邏輯結(jié)構(gòu)。此外,控制器還監(jiān)視主機活動以確定(例如)主機是否已將一簇解除分配。舉例而言,可監(jiān)視DOS順應系統(tǒng)的根目錄、文件分配表(FAT)和子目錄以檢測主機對數(shù)據(jù)簇的解除分配。根目錄、文件分配表(FAT)或子目錄中的變化可能是(例如)因為主機刪除了文件或文件中的一部分而導致的。在任何情況下,當已檢測到對一個或一個以上數(shù)據(jù)簇的解除分配時,控制器更新數(shù)據(jù)分配表(DAT)。因此,數(shù)據(jù)分配表(DAT)可提供關(guān)于數(shù)據(jù)的更新的信息。此信息可用來更智能地管理數(shù)據(jù)。舉例而言,可使用解除分配狀態(tài)來確定在垃圾收集期間是否應當拷貝數(shù)據(jù)。無需拷貝已被解除分配的數(shù)據(jù)。因此,可避免常規(guī)上執(zhí)行的某些不必要的操作且可增強系統(tǒng)性能。
在另一實施例中,可使用由主機存儲在FAT中或在DAS中的信息來確定應當怎樣存儲主機發(fā)送的一部分數(shù)據(jù)。以非順序性方式接收的數(shù)據(jù)可被以非順序性方式存儲,或者,可通過從其它地方拷貝數(shù)據(jù)以填充接收到的數(shù)據(jù)中的任何間隙來以順序性方式存儲。這種順序性存儲是有利的一種情況是主機向邏輯地址空間(例如簇)的可用(空閑的或被解除分配的)部分進行寫入。此類數(shù)據(jù)寫入指示主機正在存儲新數(shù)據(jù),且并不指示任何以非順序性方式存儲數(shù)據(jù)的理由。通過將主機發(fā)送的數(shù)據(jù)扇區(qū)的邏輯地址與空閑簇的邏輯地址范圍進行比較,控制器可確定主機是否正寫入下一空閑簇。根據(jù)這一確定,控制器可選擇一種針對所述扇區(qū)的存儲方案。
在一個實施例中,確定從主機接收的扇區(qū)是否指示主機正在寫入下一空閑簇。如果是的話,將數(shù)據(jù)以順序性形式寫入在區(qū)塊中,用從存儲器陣列的其它地方拷貝的數(shù)據(jù)來填充數(shù)據(jù)中的任何間隙。如果不是的話,可考慮額外標準以確定以順序性方式還是以非順序性方式存儲數(shù)據(jù)。舉例來說,如果從主機接收到若干扇區(qū)且扇區(qū)之間存在邏輯地址的跳躍,那么跳躍的大小可確定存儲方案。如果跳躍較小,那么可用拷貝的數(shù)據(jù)來填充所得的間隙,且更新的數(shù)據(jù)可以用順序性格式來保存。在另一實例中,在更新區(qū)塊是順序性的且接近完整的情況下,更新區(qū)塊可由數(shù)據(jù)充滿以將其保持為順序性的,而并非寫入以非順序性方式接收的扇區(qū)??苫趶姆且资源鎯ζ髦械腇AT的拷貝中直接獲得的信息或可基于從FAT導出的DAS或類似結(jié)構(gòu)中的信息來選擇存儲方案。
可以多種方式來實施本發(fā)明,包含作為方法、系統(tǒng)、裝置、設備或計算機可讀媒體。將從以下詳細描述中容易了解本發(fā)明的其它方面和優(yōu)點,所述詳細描述結(jié)合附圖舉例說明了本發(fā)明的原則。
附圖各圖中以實例而并非限制的方式說明本發(fā)明,在附圖中相似的參考元件符號指代類似的元件,且其中圖1說明邏輯地址空間,其可被分割為若干邏輯扇區(qū)。
圖2A描繪根據(jù)本發(fā)明一個實施例的拷貝管理方法。
圖2B描繪根據(jù)本發(fā)明一個實施例的計算環(huán)境。
圖3A描繪根據(jù)本發(fā)明一個實施例的數(shù)據(jù)分配表(DAT)。
圖3B描繪根據(jù)本發(fā)明一個實施例的數(shù)據(jù)分配表(DAT)的條目。
圖3C描繪根據(jù)本發(fā)明一個實施例的可由控制器使用的主機的邏輯數(shù)據(jù)結(jié)構(gòu)。
圖4描繪根據(jù)本發(fā)明一個實施例的用于向閃存存儲器控制器提供關(guān)于存儲在閃存存儲器上的數(shù)據(jù)的信息的方法。
圖5說明根據(jù)本發(fā)明一個實施例的閃存存儲器維護方法。
圖6說明根據(jù)本發(fā)明一個實施例的監(jiān)視方法。
圖7描繪根據(jù)本發(fā)明一個實施例的示范性垃圾收集方法。
圖8描繪根據(jù)本發(fā)明一個實施例的數(shù)據(jù)分配表(DAT)。
圖9A展示文件分配表(FAT)的實例。
圖9B展示從圖9A的FAT導出的DAT。
圖9C展示針對一部分主機數(shù)據(jù)的簇與扇區(qū)之間的對應的實例。
圖9D展示將非順序性數(shù)據(jù)存儲在混亂區(qū)塊中且之后將其拷貝到順序性區(qū)塊。
圖9E展示將非順序性數(shù)據(jù)直接存儲在順序性區(qū)塊中。
圖10展示根據(jù)本發(fā)明一實施例的用于為一部分主機數(shù)據(jù)選擇存儲方案的流程圖。
圖11展示根據(jù)本發(fā)明另一實施例的用于為一部分主機數(shù)據(jù)選擇存儲方案的流程圖。
圖12A展示以順序性方式存儲的非順序性數(shù)據(jù)的實例。
圖12B展示以非順序性方式存儲的非順序性數(shù)據(jù)的第一實例。
圖12C展示以非順序性方式存儲的非順序性數(shù)據(jù)的第二實例。
圖12D展示以非順序性方式存儲的非順序性數(shù)據(jù)的第三實例。
具體實施例方式
本發(fā)明涉及用于管理非易失性存儲器系統(tǒng)(例如閃存存儲器)中的數(shù)據(jù)的技術(shù)。根據(jù)本發(fā)明的一個方面,控制器可使用與主機的文件系統(tǒng)有關(guān)的信息來確定一個或一個以上簇(一個或一個以上簇內(nèi)的一個或一個以上扇區(qū))當前是否被分配,所述與主機的文件系統(tǒng)有關(guān)的信息由主機存儲在非易失性存儲器上。將了解到,控制器可(尤其)使用與主機的文件系統(tǒng)有關(guān)的信息來確保(例如)在垃圾收集循環(huán)期間沒有將一個或一個以上簇(或所述簇內(nèi)的一個或一個以上扇區(qū))從存儲器中的一個位置拷貝到另一位置。因此,可避免某些常規(guī)上執(zhí)行的不必要操作(例如拷貝數(shù)據(jù)),且可增強系統(tǒng)性能。
還應了解到,控制器可直接使用一般由主機寫入在文件分配表(FAT)中的信息來確定是否已將一個或一個以上先前被分配的簇解除分配?;蛘?,控制器可使用寫入在根目錄、子目錄和文件分配表(FAT)中的信息來(例如)在數(shù)據(jù)分配表(DAT)中產(chǎn)生和/或維護其自身關(guān)于簇分配的信息。然而,應明了,本發(fā)明可被實施成利用一般存儲在文件分配表(FAT)中的信息。因此,控制器不必維護其自身的信息或產(chǎn)生任何額外數(shù)據(jù)結(jié)構(gòu)(例如,數(shù)據(jù)分配表(DAT))。然而,如以下將要描述的,維護數(shù)據(jù)分配表(DAT)帶來的益處可能會多于僅僅依賴于從文件分配表(FAT)獲得的信息。因此,也將進一步說明可(例如)實施為數(shù)據(jù)分配表(DAT)的數(shù)據(jù)屬性存儲(DAS)。
一般來說,包含一個或一個以上數(shù)據(jù)屬性的數(shù)據(jù)屬性存儲(DAS)可由控制器維持在非易失性存儲器中。數(shù)據(jù)屬性可提供關(guān)于數(shù)據(jù)的有用信息(例如分配或解除分配狀態(tài)、大小、優(yōu)先權(quán))。由此,可使用數(shù)據(jù)屬性存儲(DAS)來更智能地管理數(shù)據(jù)。本發(fā)明的另一方面涉及用于使用數(shù)據(jù)屬性存儲(DAS)來管理數(shù)據(jù)的技術(shù)。
在一個實施例中,將數(shù)據(jù)屬性存儲(DAS)構(gòu)建為分配存儲(AS)。可將分配存儲(AS)(例如)構(gòu)建為表或提供每個數(shù)據(jù)簇(主機的邏輯單位)的分配狀態(tài)的數(shù)據(jù)分配表(DAT)。簇代表主機用來以邏輯形式組織數(shù)據(jù)的邏輯單位。為了實現(xiàn)更好的存儲器管理,非易失性存儲器系統(tǒng)的控制器可存取數(shù)據(jù)分配表(DAT)。由此,數(shù)據(jù)分配表(DAT)有效地提供主機所使用的邏輯結(jié)構(gòu)與控制器之間的橋接。這允許控制器可有效地了解主機的邏輯結(jié)構(gòu)。此外,控制器還監(jiān)視主機活動以確定(例如)主機是否已將一簇解除分配。舉例而言,可監(jiān)視DOS順應系統(tǒng)的根目錄、文件分配表(FAT)和子目錄以檢測主機對數(shù)據(jù)簇的解除分配。根目錄、文件分配表(FAT)或子目錄中的變化可能是因為(例如)主機刪除了文件或文件中的一部分而導致的。在任何情況下,當檢測到對一個或一個以上數(shù)據(jù)簇的解除分配時,控制器更新數(shù)據(jù)分配表(DAT)。因此,數(shù)據(jù)分配表(DAT)可提供關(guān)于數(shù)據(jù)的更新的信息??墒褂么诵畔砀悄艿毓芾頂?shù)據(jù)。舉例而言,可使用解除分配狀態(tài)來確定在垃圾收集期間是否應當拷貝數(shù)據(jù)。無需拷貝已被解除分配的數(shù)據(jù)。因此可避免常規(guī)上執(zhí)行的某些不必要的操作且可增強系統(tǒng)性能。
以下參照圖2A到圖8來論述本發(fā)明的實施例。然而,所屬領域的技術(shù)人員將容易了解,此處關(guān)于這些附圖給出的詳細說明出于解釋性目的,因為本發(fā)明超出這些有限實施例。舉例來說,雖然描述參考了閃存存儲器,但可使用其它類型的非易失性存儲器。其它類型的非易失性存儲器包含磁阻RAM(MRAM)、鐵電RAM和相變存儲器(也稱為奧弗辛斯基電效應統(tǒng)一存儲器或OUM)。
如上所述,根據(jù)本發(fā)明的一個方面,控制器可使用與主機的文件系統(tǒng)有關(guān)的信息來確定一個或一個以上簇(或簇內(nèi)的扇區(qū))當前是否被分配,所述與主機的文件系統(tǒng)有關(guān)的信息由主機存儲在非易失性存儲器上。控制器可(尤其)使用與主機的文件系統(tǒng)有關(guān)的信息來確保在垃圾收集循環(huán)期間沒有將一個或一個以上簇(或簇內(nèi)的扇區(qū))從存儲器中的一個位置拷貝到另一位置。為了進一步說明,圖2A描繪根據(jù)本發(fā)明一個方面的拷貝管理250。首先,主機使用非易失性存儲器裝置來存儲(252)供文件系統(tǒng)使用的信息。接下來,控制器使用由主機存儲(252)的信息來確定(254)一個或一個以上簇(或一個或一個以上簇內(nèi)的一個或一個以上扇區(qū))當前是否被分配給任何有效文件。如所屬領域的技術(shù)人員將了解,控制器可直接使用一般由主機寫入在文件分配表(FAT)中的信息,以便確定(254)一個或一個以上簇(或一個或一個以上簇內(nèi)的一個或一個以上扇區(qū))當前是否被分配給任何有效文件?;蛘撸刂破骺墒褂酶夸?、子目錄和FAT中寫入的信息連同由主機寫入到裝置的邏輯扇區(qū)序列,以便產(chǎn)生和維護其自身的關(guān)于簇分配的信息。舉例來說,控制器可產(chǎn)生和/或維護其自身的數(shù)據(jù)分配表(DAT)。在任何情況下,控制器確保(256)在存儲器內(nèi)在垃圾收集操作期間沒有將被確定(254)為當前未被分配的任何簇(或簇內(nèi)的扇區(qū))從一個位置拷貝到另一位置。換句話說,只在確定(254)了簇(或簇內(nèi)的扇區(qū))當前被分配的情況下才拷貝所述簇(或簇內(nèi)的扇區(qū))。操作256之后結(jié)束拷貝管理方法250。
如上所述,維護數(shù)據(jù)分配表(DAT)帶來的益處可能會多于僅僅依賴于從文件分配表(FAT)獲得的信息。如所屬領域的技術(shù)人員將了解,F(xiàn)AT可能不會總是指示簇已被解除分配。舉例來說,F(xiàn)AT中可能存在沒有鏈接到目錄中的任何文件參考的簇條目鏈。
當文件被刪除時,其目錄條目被主機中的文件系統(tǒng)修改(文件名的首字符被改為0xE5)以表示文件已被刪除。然而,F(xiàn)AT中的簇條目可能會保持其鏈接信息,就好像其仍被分配給一文件。用于重新使用簇和用于將FAT簇條目更新為“0x0000”以表示未使用的算法通常是主機中的特定文件系統(tǒng)實施方案的功能。DAT可使用目錄或子目錄信息中的變化來允許簇屬性反映所述簇對一文件的當前分配狀態(tài),而無需依賴于主機文件系統(tǒng)。對于某些環(huán)境,DAT的實施甚至可能會比僅僅依賴于FAT更安全。當僅使用FAT來確定簇的分配狀態(tài)時,存儲器系統(tǒng)可能直到主機在文件結(jié)尾處更新FAT時才會知道簇對于文件的分配情況。因此,如果主機在寫入FAT前修改了已經(jīng)寫入的文件的一部分,那么控制器可能會丟棄某些仍然具有已解除分配狀態(tài)的有效數(shù)據(jù)。DAT的實施可有效地解決這一問題。
此外,根據(jù)本發(fā)明的原理而提供的數(shù)據(jù)分配表(DAT)也可提供FAT通常不會提供的特征。舉例來說,F(xiàn)AT為簇定義單一的分配狀態(tài)。然而,DAT可被實施成(例如)允許記錄多位狀態(tài),從而允許將分配狀態(tài)分解成在一簇內(nèi)的一扇區(qū)或扇區(qū)群組。這允許控制器避免在文件之間拷貝未被分配的扇區(qū),其中僅部分地使用第一文件的最后簇。鑒于DAT可提供的優(yōu)點和額外特征,以下描述的實施例進一步說明在數(shù)據(jù)屬性存儲(DAS)(例如,DAT)中保存其自身的信息的控制器。然而,顯而易見,控制器可在不偏離本發(fā)明范圍和精神的情況下,僅依賴于FAT來確定與主機所使用的各種文件相關(guān)聯(lián)的分配狀態(tài)。
圖2B描繪根據(jù)本發(fā)明一個實施例的計算環(huán)境200。在計算環(huán)境200中,閃存存儲器控制器202允許主機應用程序204存取非易失性存儲器(例如,閃存存儲器206)。換句話說,主機應用程序204將閃存存儲器控制器202用作到閃存存儲器206的接口。因此,主機應用程序204可要求閃存存儲器控制器202對閃存存儲器206執(zhí)行各種存取操作(例如,讀取、寫入)。主機應用程序204可使用邏輯地址空間來定址數(shù)據(jù)。閃存存儲器控制器將主機的邏輯地址空間映射成控制器邏輯地址空間,后者又被映射成閃存存儲器206上的物理地址空間。
此外,閃存存儲器可建立并維護數(shù)據(jù)屬性存儲(DAS)208。所述DAS 208包含關(guān)于與存儲在閃存存儲器206中的數(shù)據(jù)相關(guān)聯(lián)的各種屬性的信息。舉例而言,存儲在數(shù)據(jù)屬性存儲(DAS)208中的數(shù)據(jù)屬性可包含數(shù)據(jù)的分配狀態(tài)、所分配的數(shù)據(jù)的大小、優(yōu)先權(quán)。一般來說,數(shù)據(jù)屬性存儲(DAS)208可存儲任何需要的數(shù)據(jù)屬性,且用一個或一個以上位的信息來代表所述屬性。應注意到,閃存存儲器控制器204提供數(shù)據(jù)屬性監(jiān)視器208以監(jiān)視主機應用程序204的活動。數(shù)據(jù)屬性監(jiān)視器208可解譯主機應用程序204關(guān)于存儲在閃存存儲器206上的數(shù)據(jù)的活動。這意味著數(shù)據(jù)屬性監(jiān)視器208可確定應在何處改變數(shù)據(jù)屬性并相應地在DAS 208中更新數(shù)據(jù)屬性。
為了進一步說明,圖3A描繪根據(jù)本發(fā)明一個實施例的數(shù)據(jù)屬性存儲(DAS)208。在此實施例中,將數(shù)據(jù)屬性208實施為數(shù)據(jù)分配表(DAT)308。由此,DAT 308提供關(guān)于非易失性存儲器系統(tǒng)的不同數(shù)據(jù)部分的分配/解除分配狀態(tài)的信息。將了解,可根據(jù)邏輯數(shù)據(jù)結(jié)構(gòu)(即主機應用程序204使用的邏輯數(shù)據(jù)結(jié)構(gòu))來組織這些各種數(shù)據(jù)部分。如上所述,主機應用程序可將數(shù)據(jù)組織成主機邏輯單位,所述主機邏輯單位可稱為簇??蓪AT 308分割成代表這些簇的單位。
這意味著可將主機應用程序使用的每個邏輯簇表示為DAT 308中的條目。舉例來說,簇1可由第一(第1)條目來表示,簇10可由第十(第10)條目來表示,等等。此外,DAT 308的每一條目可指示簇的分配/解除分配狀態(tài)。舉例來說,可針對DAT 308的每一條目使用一個位來指示一邏輯簇當前是被分配還是被解除分配。應注意到,可使用若干位來提供關(guān)于一屬性的更多信息和/或關(guān)于若干屬性的信息。在任何情況下,DAT308實現(xiàn)對數(shù)據(jù)的更好管理。舉例而言,基于數(shù)據(jù)部分的分配/解除分配狀態(tài),閃存存儲器控制器可避免拷貝已被主機應用程序解除分配的數(shù)據(jù)。
為了進一步說明,圖3B描繪根據(jù)本發(fā)明一個實施例的DAT 208的條目302。表條目302包含4個位,其中第一位(位0)可提供分配/解除分配狀態(tài),且其它三(3)個位(位1-3)可一起指示已分配了多少數(shù)據(jù)(例如,“100”指示半滿,“111”指示滿,等)。同樣,可使用更多的位來提供關(guān)于簇的另一屬性的信息。舉例而言,每個簇可由四(4)個位來表示,其中一(1)個位代表解除分配狀態(tài),且三(3)個位指示簇的哪個部分已被解除分配。如所屬領域的技術(shù)人員將了解,可以其它若干方式來定義簇的多個位。舉例來說,可利用極性(或次序)或可使用更多的位(例如,6、8、12)。或者,可分配所有的位來指示被完全解除分配的扇區(qū)的“子簇”的數(shù)目,且可(例如)由將所有位設定為零(0)來標記被完全分配的簇。
如上所述,數(shù)據(jù)屬性監(jiān)視器210監(jiān)視主機應用程序204的活動?;谶@種監(jiān)視,數(shù)據(jù)屬性監(jiān)視器259可更新數(shù)據(jù)屬性存儲(DAS)208。如圖2所示,為了解譯主機應用程序204的活動,數(shù)據(jù)屬性監(jiān)視器210需要實現(xiàn)主機了解和使用的數(shù)據(jù)的邏輯結(jié)構(gòu)。為了進一步說明,圖3C描繪主機的邏輯數(shù)據(jù)結(jié)構(gòu),其可由根據(jù)本發(fā)明一個實施例的控制器使用。如圖3C所示,主機可將邏輯地址空間劃分成系統(tǒng)310和用戶空間312。系統(tǒng)數(shù)據(jù)310可包含文件分配表1(FAT1)、FAT2(FAT1的拷貝)和根目錄信息,其均可存儲為系統(tǒng)數(shù)據(jù)310。用戶空間可包含關(guān)于子目錄的信息。數(shù)據(jù)屬性監(jiān)視器210可監(jiān)視FAT1、FAT2、根目錄和子目錄,以確定主機應用程序202是否對任何數(shù)據(jù)解除分配(例如,移除文件、使文件變短等)。下文也將參照圖6來描述對數(shù)據(jù)的監(jiān)視。
然而,現(xiàn)在參看圖4,圖中描繪了根據(jù)本發(fā)明一個實施例的用于向閃存存儲器控制器提供關(guān)于存儲在閃存存儲器上的數(shù)據(jù)的信息的方法400。閃存存儲器控制器可使用所述關(guān)于數(shù)據(jù)的信息(例如)來在數(shù)據(jù)維護(例如垃圾收集)期間作出關(guān)于數(shù)據(jù)的可靠決定。方法400可(例如)由圖2中的閃存存儲器控制器202使用。
首先,為閃存存儲器存儲裝置的控制器產(chǎn)生(402)數(shù)據(jù)屬性存儲(DAS)。所述數(shù)據(jù)屬性存儲(DAS)提供閃存存儲器存儲裝置中的復數(shù)個數(shù)據(jù)部分中的每一者的一個或一個以上屬性。對使用控制器來存取數(shù)據(jù)的主機的活動進行監(jiān)視(404)。接下來,基于所述監(jiān)視(404),確定(406)是否應當更新與閃存存儲器存儲裝置的數(shù)據(jù)部分有關(guān)的屬性。相應地,如果確定(406)應當對閃存存儲器存儲裝置的至少一個數(shù)據(jù)部分執(zhí)行更新,那么更新(408)與至少一個數(shù)據(jù)部分有關(guān)的至少一個屬性。更新(408)之后,監(jiān)視404主機的活動。此后,可以與上述相似的方式來繼續(xù)進行方法400,直到不再想要或需要監(jiān)視數(shù)據(jù)為止。
如上所述,可提供數(shù)據(jù)屬性存儲(DAS)并由閃存存儲器控制器使用來執(zhí)行維護操作(例如垃圾收集)。圖5描繪根據(jù)本發(fā)明一個實施例的閃存存儲器維護方法500。首先,確定502閃存存儲器控制器是否需要對存儲在閃存存儲器存儲裝置上的一部分數(shù)據(jù)執(zhí)行維護操作。如果確定502控制器需要執(zhí)行維護操作,那么確定504數(shù)據(jù)屬性存儲(DAS)的哪個部分提供關(guān)于待維護的數(shù)據(jù)部分的信息。相應地,從數(shù)據(jù)屬性存儲(DAS)讀取506與數(shù)據(jù)部分有關(guān)的至少一個屬性。最后,基于至少一個數(shù)據(jù)屬性來執(zhí)行508操作。應了解,基于由所述至少一個數(shù)據(jù)屬性提供的信息可更智能地執(zhí)行維護操作。
圖6描繪根據(jù)本發(fā)明一個實施例的監(jiān)視方法600。所述監(jiān)視方法600說明可在圖4中說明的監(jiān)視和更新操作(即,圖4中的操作404、406和408)期間執(zhí)行的某些示范性操作。監(jiān)視方法600可(例如)由閃存存儲器控制器來執(zhí)行。首先,確定(602)接收到對寫入操作的請求。接下來,確定所述寫入操作是否定址指定的地址空間。舉例而言,指定的地址空間可包含由在DOS環(huán)境中操作的主機定址的邏輯地址空間的FAT1、FAT2、根目錄和子目錄??筛鶕?jù)根目錄中和其它子目錄中的信息來確定子目錄的指定地址空間。一般來說,指定的地址空間代表主機活動可能指示數(shù)據(jù)已被進行解除分配操作(例如,移除或修改文件目錄、編輯文件等)的地址空間。在任何情況下,如果在操作604處確定寫入操作是針對指定的地址空間,那么讀取(606)當前存儲在指定地址空間中的數(shù)據(jù)。接下來,執(zhí)行(608)寫入操作。在執(zhí)行(608)了寫入操作之后,將先前讀取(606)的舊數(shù)據(jù)與寫入(608)的數(shù)據(jù)進行比較(610)。相應地,確定(612)數(shù)據(jù)中是否存在變化。如果確定(612)數(shù)據(jù)中沒有變化,那么確定(602)是否接收到對寫入操作的請求。
或者,在更新的數(shù)據(jù)與舊數(shù)據(jù)寫入在不同的位置中的閃存存儲器系統(tǒng)中,可直接在舊位置與新位置處的數(shù)據(jù)之間進行比較(610)而不執(zhí)行先前的讀取(606)。
然而,如果確定(612)已檢測到數(shù)據(jù)的改變,那么對所述變化進行解譯(614)以確定(616)是否已將一個或一個以上簇解除分配。如果確定沒有將任何簇解除分配,那么確定(602)是否接收到對寫入操作的請求。然而,應注意到,如果確定(616)已將一個或一個以上簇解除分配,那么將數(shù)據(jù)分配表(DAT)中的所述一個或一個以上簇的狀態(tài)改變成指示“被解除分配”狀態(tài)。相應地,當察覺(616)指定地址空間中的數(shù)據(jù)變化已導致了對數(shù)據(jù)的解除分配時,監(jiān)視方法600有效地更新(618)數(shù)據(jù)分配表(DAT)。
另一方面,如果確定(604)寫入操作不是針對指定的地址空間,那么執(zhí)行(620)寫入操作。此外,識別(622)已被寫入的簇,以使得可將一個或一個以上所識別的簇的狀態(tài)設定為“分配”。將了解,這一操作確保當寫入操作在非指定的地址空間中執(zhí)行時,將代表所識別的簇的DAT的條目設定為“分配”。在將DAT中代表的簇的狀態(tài)設定(624)為“分配”時,可確定(602)是否接收到了對寫入操作的請求。
如上所述,數(shù)據(jù)屬性存儲(DAS)可(例如)用來執(zhí)行維護操作。為了進一步說明,圖7描繪根據(jù)本發(fā)明一個實施例的示范性垃圾收集方法700。將了解,所述垃圾收集方法700利用數(shù)據(jù)分配表(DAT),以便在更新操作期間實現(xiàn)更好的區(qū)塊更新。首先,當起初確定(702)將關(guān)閉一更新區(qū)塊時,確定是否所述更新區(qū)塊的所有扇區(qū)均已被寫入。如果所述更新區(qū)塊的所有邏輯區(qū)塊均已被寫入,那么更新區(qū)塊便可有效地替換初始區(qū)塊。相應地,將更新區(qū)塊標記(706)為初始區(qū)塊,且將先前的初始區(qū)塊擦除(708)以使得其以后可被使用。
另一方面,如果確定(702)所述更新區(qū)塊的所有扇區(qū)均未被寫入,那么識別(710)對應于未寫入扇區(qū)的邏輯扇區(qū)。隨后,將所識別(710)的邏輯扇區(qū)映射(712)到簇。在數(shù)據(jù)分配表(DAT)中查找(714)簇。相應地,確定716是否DAT指示所有識別(710)的簇均已解除分配。如果DAT指示所有簇均已被解除分配,那么將更新區(qū)塊標記(706)為初始的,且將舊區(qū)塊擦除(708)。
應注意,當DAT指示(716)所有簇均已被解除分配時,不拷貝一個或一個以上簇。只有當DAT表指示一個或一個以上簇仍被分配時,才將保持被分配的數(shù)據(jù)拷貝(718)到更新區(qū)塊。在任何情況下,應注意到,可立即關(guān)閉更新區(qū)塊,或者以后在所述區(qū)塊裝滿時關(guān)閉??蓪⒏聟^(qū)塊作標記706且擦除708先前的初始區(qū)塊(舊區(qū)塊),但避免了對未分配的數(shù)據(jù)的不必要拷貝。擦除(708)之后,垃圾收集方法700結(jié)束。
將了解,可使用閃存存儲器來實施根據(jù)本發(fā)明一個實施例的數(shù)據(jù)屬性存儲(DAS)。為了進一步說明,圖8描繪根據(jù)本發(fā)明一個實施例的數(shù)據(jù)分配表(DAT)800。使用存儲器部分801來實施數(shù)據(jù)分配表(DAT)800。存儲器部分801可以是可作為擦除單位的區(qū)塊。存儲器部分801大于表示數(shù)據(jù)分配表(DAT)800所需的存儲器。每個區(qū)段可位于一個或一個以上頁面中,其中頁面是編程存儲器的最小單位。
如圖8所示,可將數(shù)據(jù)屬性存儲(DAS)800分成復數(shù)個區(qū)段,即初始區(qū)段DAS1(802)、DAS2(804)、DAS3(806)和DAS4(808),其最初寫入在存儲器部分801的開始處。這些初始區(qū)段中的每一者可代表復數(shù)個由主機用來以邏輯形式組織數(shù)據(jù)的簇。當需要更新與一簇相關(guān)聯(lián)的數(shù)據(jù)屬性時,可通過為數(shù)據(jù)屬性存儲(DAS)800的合適初始區(qū)段寫入更新區(qū)段來更新數(shù)據(jù)屬性存儲(DAS)800的相應區(qū)段。在最后的初始區(qū)段(即DAS4(808))之后寫入此更新區(qū)段。舉例而言,通過寫入新區(qū)段816來更新初始DAS3(806)。同樣,當需要更新初始DAS1(802)時,可寫入新區(qū)段812。寫入新區(qū)段818以代表初始DAS4(818),等等。
此外,可使用索引方案來維護數(shù)據(jù)分配表(DAT)800。如圖8所示,存儲器的每個區(qū)段包含索引部分(Ii-U)。最后條目(806)的此索引部分參考數(shù)據(jù)屬性存儲(DAS)800的當前區(qū)段。這意味著,索引820、830、840和850分別指向數(shù)據(jù)屬性存儲(DAS)800的第一、第二、第三和第四當前區(qū)段(DAS1、DAS2、DAS3、DAS4)。(例如)當存儲器801基本上裝滿以使得當前區(qū)段(DAS1、DAS2、DAS3、DAS4)被重新產(chǎn)生為初始區(qū)段時,可對存儲器部分801進行垃圾收集。
還應注意到,可實施本發(fā)明以使得數(shù)據(jù)屬性存儲(DAS)的使用是任意的。數(shù)據(jù)屬性存儲(DAS)的使用可(例如)依賴于系統(tǒng)順應性,系統(tǒng)順應性由驗證過程確定以確保主機的實際數(shù)據(jù)邏輯結(jié)構(gòu)遵守特定操作環(huán)境(例如DOS)的既定數(shù)據(jù)結(jié)構(gòu)?;蛘?,可通過由主機傳輸一命令來啟用數(shù)據(jù)屬性存儲(DAS)的使用,所述命令傳輸指示其順應特定操作環(huán)境的數(shù)據(jù)結(jié)構(gòu)。應注意到,數(shù)據(jù)分配表(DAT)不必在被分配的簇剛被解除分配時就立刻改變簇(或簇內(nèi)的扇區(qū))的狀態(tài)。換句話說,當簇已解除分配時認為其仍是被分配的,這并不會造成嚴重問題。由此,可等待一段時間再將分配狀態(tài)設定為被解除分配的。將了解,同時針對一簇群組將分配狀態(tài)設定為被解除分配的,而不是在不同時間一個接一個地設定,可進一步增強系統(tǒng)性能。另一方面,所屬領域的技術(shù)人員將了解,有效的、被分配的簇的狀態(tài)信息應當一直是極為準確的且現(xiàn)時的(即,被分配的簇應當一直被標記為被分配的)。為了確保被分配的簇被正確標記,每當主機向簇寫入數(shù)據(jù)時,可自動地將簇的分配狀態(tài)設定為被分配的。此外,將了解到,數(shù)據(jù)分配表(DAT)中的信息可與映射表中的信息同時更新以記錄最近寫入的扇區(qū)或簇,所述映射表定義物理存儲器區(qū)塊對于數(shù)據(jù)邏輯區(qū)塊的分配。
此外,將了解到,數(shù)據(jù)屬性存儲(DAS)可用于其它許多維護操作。舉例而言,當數(shù)據(jù)屬性存儲(DAS)指示對應于一區(qū)塊的所有簇均已被解除分配時,可擦除所述區(qū)塊。這一擦除可(例如)作為背景來執(zhí)行以進一步增強性能。
在另一實施例中,可使用由主機存儲在非易失性存儲器中的信息來確定應當怎樣存儲從主機接收到的數(shù)據(jù)。在一個實例中,可使用由主機存儲在FAT和目錄中的信息來確定應當以順序性方式還是以非順序性(混亂)方式來存儲數(shù)據(jù)。
某些存儲器系統(tǒng)根據(jù)從主機接收到的數(shù)據(jù)是順序性的還是非順序性的而使用不同的存儲方案來存儲所述數(shù)據(jù)。舉例來說,2003年12月30日申請的標題為“Non-volatilememory and method with block management system”的且全文以引用的方式并入本文中的第10/750,155號美國專利申請案描述了某些用于處理由主機以非順序性方式發(fā)送的數(shù)據(jù)的技術(shù)。確切地說,可向順序性更新區(qū)塊指派順序性更新,而可向可能以任意次序存儲數(shù)據(jù)的混亂更新區(qū)塊指派非順序性更新。雖然將數(shù)據(jù)存儲在混亂的更新區(qū)塊中對某些類型的數(shù)據(jù)更新提供了優(yōu)勢,但其可能會對其它類型的數(shù)據(jù)更新造成無效。出于這一原因,第10/750,155號申請案描述了用于以滿足預定標準的順序性方式存儲某些以非順序性方式接收的數(shù)據(jù)的技術(shù)。在本發(fā)明一實施例中,可通過分析由主機存儲在非易失性存儲器中的信息來確定用于確定在以非順序性方式接收數(shù)據(jù)時將數(shù)據(jù)以順序性方式還是非順序性方式寫入非易失性存儲器中的標準。2003年12月30日申請的標題為“Managementof non-volatile memory systems having large erase blocks”的且全文以引用的方式并入本文中的第10/749,831號美國專利申請案描述了管理由主機發(fā)送以供存儲在非易失性存儲器陣列中的數(shù)據(jù)的額外方法。確切地說,描述了用于管理由主機以非順序性方式更新的數(shù)據(jù)的方法??筛鶕?jù)預定標準而對數(shù)據(jù)使用不同的指定區(qū)塊。
在本發(fā)明一實施例中,可將主機正寫入的數(shù)據(jù)部分(例如扇區(qū))的邏輯地址與FAT、根目錄或子目錄(或存儲在非易失性存儲器中的類似主機數(shù)據(jù))進行比較,或可將其與例如存儲在DAS中的信息的導出信息進行比較,以確定正被寫入的數(shù)據(jù)部分是否在下一空閑簇中具有邏輯地址。如果數(shù)據(jù)部分在下一空閑簇中具有地址,那么這表明主機正在下一可用位置處存儲新數(shù)據(jù)。在諸如此類的存儲形式中,以順序性方式存儲數(shù)據(jù)并通過拷貝已存儲在非易失性存儲器中的數(shù)據(jù)來填充更新區(qū)塊中的任何間隙,而不是以非順序性次序存儲數(shù)據(jù)且稍后再將其拷貝到其順序性存儲的位置,這可能是有利的。
圖9A展示FAT表900的實例。每個簇0-8均在FAT表中具有指示文件中下一簇的條目。因此,簇0的條目為“1”,這指示這一文件的下一簇在簇1中。簇1中的條目為“5”,這指示下一簇為簇5。簇5中的條目為“6”,這指示下一簇為簇6。簇6中的條目為“EOF”,這指示“文件結(jié)尾(End of File)”,或指示不再有任何簇含有這一文件的數(shù)據(jù)。另一文件以類似方式存儲在簇3和4中。簇4、7和8被指示為“空閑”或未被分配的。這可能是主機進行解除分配的結(jié)果,例如在使文件廢棄的情況下。應注意,主機解除分配并不一定意味著數(shù)據(jù)在非易失性存儲器中被擦除,而只是使得用來存儲文件的邏輯地址范圍可用于存儲新數(shù)據(jù)。廢棄數(shù)據(jù)可保持物理性存儲在非易失性存儲器中,直到稍后某一時間為止。也可將含有廢棄控制信息的簇解除分配。也由主機存儲在非易失性存儲器中的根目錄或子目錄可指示文件的第一簇。
圖9B展示從FAT 900導出的DAT 910,連同包含在根目錄和子目錄中的信息。DAT910含有針對每個簇的條目,其指示所述簇是被分配的還是空閑的。也可如先前所述那樣將額外數(shù)據(jù)存儲在DAT 910中。可維護一DAT,以使得存儲在DAT中的信息比FAT和子目錄中的信息更現(xiàn)時。一旦主機發(fā)送新的數(shù)據(jù)以供存儲便可更新DAT,然后主機才寫入更新的FAT或目錄信息。同樣,可對DAS中的其它信息進行維護以使得其是現(xiàn)時的。
圖9C展示針對FAT 900的一部分邏輯地址范圍的扇區(qū)與簇之間的對應。在此實例中,簇具有四個數(shù)據(jù)扇區(qū)。也可使用具有不同數(shù)目的扇區(qū)的簇。簇通常含有4個到64個扇區(qū)。簇4具有扇區(qū)X、扇區(qū)X+1、扇區(qū)X+2和扇區(qū)X+3。雖然主機對一系列邏輯地址的分配大體上是在逐個簇的基礎上進行的,但存儲器控制器大體上在扇區(qū)中處理數(shù)據(jù)。一般來說,將簇分配為單個單位,以使得即便簇的整個邏輯地址范圍均未用于存儲數(shù)據(jù),仍使得簇的整個邏輯地址范圍不可用于稍后存儲其它數(shù)據(jù)。圖9C將來自被分配的簇5和6的扇區(qū)展示為陰影的,以指示這些邏輯地址不可被主機用來存儲數(shù)據(jù)。
圖9D和9E展示用于存儲以非順序性方式從主機接收的數(shù)據(jù)的兩種替代方案。這兩張圖均展示正從主機接收扇區(qū)X到X+3和X+12到X+15以存儲在非易失性存儲器中。這些扇區(qū)對應于圖9C中的簇4和7。在圖9D中,所接收到的數(shù)據(jù)被寫入混亂的更新區(qū)塊920。這一區(qū)塊之所以是混亂的,是因為扇區(qū)X+12直接寫在扇區(qū)X+3后面,以使得從扇區(qū)X+3到扇區(qū)X+12的邏輯地址范圍中存在跳躍。起初,當混亂區(qū)塊920含有扇區(qū)X到X+3時,其可能是順序性更新區(qū)塊,隨后,當存儲了扇區(qū)X+12時,其轉(zhuǎn)換為混亂的更新區(qū)塊。一般來說,在主機以非順序性方式發(fā)送數(shù)據(jù)的情況下,將使用混亂(非順序性)區(qū)塊。圖9D的混亂區(qū)塊920中的有效數(shù)據(jù)最終被重新定位到順序性區(qū)塊922,在所述區(qū)塊922中其與扇區(qū)X+4到X+11一起存儲,所述扇區(qū)X+4到X+11可能是從另一位置拷貝來的。這大體上作為合并操作的一部分來進行。對于長期存儲而言順序性區(qū)塊一般是優(yōu)選的,因為扇區(qū)是以預定方式配置的,且因此可能不需要在區(qū)塊內(nèi)索引扇區(qū)。在混亂區(qū)塊920中的所有有效數(shù)據(jù)均被拷貝到另一位置之后,可將混亂區(qū)塊920標記為廢棄的,且可將其擦除。
圖9E展示在順序性區(qū)塊930中正以順序性方式更新非順序性數(shù)據(jù)——扇區(qū)X到X+3和X+12到X+15。可首先寫入扇區(qū)X到X+3,以使得區(qū)塊930在此點處為順序性區(qū)塊。當接收到扇區(qū)X+12時,可作出以順序性方式存儲數(shù)據(jù)的確定,即使所述數(shù)據(jù)是以非順序性方式接收到的??赏ㄟ^從初始區(qū)塊拷貝扇區(qū)X+4到X+11(對應于簇5和6)來填充從主機接收的扇區(qū)之間的邏輯地址范圍來實現(xiàn)順序性存儲。可將扇區(qū)X+4到X+11視為填補扇區(qū),因為其是用來填充或“填補”主機發(fā)送的扇區(qū)中的間隙的。扇區(qū)X+4到X+11是從另一位置拷貝的有效數(shù)據(jù)扇區(qū)。以此方式,所接收到的扇區(qū)被存儲在順序性區(qū)塊930中,而不經(jīng)過混亂區(qū)塊中的中間存儲階段。因此,這兩種技術(shù)之間的主要區(qū)別在于,在圖9E的實例中,不必先將扇區(qū)X到X+3和X+12到X+15寫入混亂區(qū)塊920且稍后再擦除混亂區(qū)塊920。在此實例中,寫入扇區(qū)X到X+3和X+12到X+15一次,且仍然拷貝扇區(qū)X+4到X+12。這需要的扇區(qū)寫入少了八次,且擦除操作少了一次,因而改進了數(shù)據(jù)存儲的效率。
可基于多種標準來確定是以順序性方式還是以非順序性方式來存儲以非順序性方式接收的數(shù)據(jù)。某些數(shù)據(jù)更適合非順序性存儲,特別是很可能很快要再次更新的數(shù)據(jù)。舉例來說,可在混亂區(qū)塊中更加高效地存儲控制數(shù)據(jù)或主機數(shù)據(jù)中的頻繁更新的部分。某些數(shù)據(jù)更適合順序性存儲,特別是在數(shù)據(jù)不太可能很快被再次更新的情況下。雖然以非順序性方式接收的數(shù)據(jù)可能一般會以非順序性方式來存儲,但在某些情況下將其以順序性方式寫入是有利的。因為避免了在混亂區(qū)塊中的中間存儲,所以無需對混亂區(qū)塊進行垃圾收集以使數(shù)據(jù)具有順序性格式。這避免了圖9D中所示的合并操作,且因此減少了額外開銷并改進了性能。當主機寫入下一空閑簇時,指示主機只是在下一可用位置處寫入新數(shù)據(jù),且一般并不指示將很快再次更新邏輯地址范圍。因此,選擇例如圖9E中所展示的順序性更新方案比選擇例如圖9D中所展示的混亂更新方案更有效率。因此,可根據(jù)數(shù)據(jù)是否來自下一空閑簇來確定使用的存儲方案。當數(shù)據(jù)來自下一空閑簇(如在圖9E中)時,可選擇順序性存儲。因此,在此實例中,將不會為此數(shù)據(jù)選擇圖9D的存儲方案。
圖10是展示根據(jù)本發(fā)明一實施例的存儲方案的選擇的流程圖。當從主機接收到非順序性數(shù)據(jù)時,控制器確定所述數(shù)據(jù)是否來自下一空閑簇10??赏ㄟ^直接查看由主機存儲在非易失性存儲器中的FAT和目錄信息或者通過查看從FAT和目錄信息導出的信息(例如,存儲在DAS或DAT中的信息)來進行這一確定。如果當前定址的簇并不是下一空閑簇,那么根據(jù)默認方案12以普通方式來存儲數(shù)據(jù)。這可能意味著以非順序性方式來存儲數(shù)據(jù),或在某些實例中,可能存在其它使得數(shù)據(jù)被以順序性方式寫入的標準。如果當前定址的簇是下一空閑簇,那么選擇順序性寫入。在此實例中,將有效的數(shù)據(jù)簇從初始元區(qū)塊拷貝到當前順序性元區(qū)塊14以填補最后寫入的簇與當前定址的簇之間的邏輯地址間隙。接著,將來自當前定址的簇的接收到的數(shù)據(jù)寫入當前順序性元區(qū)塊。因此,當前元區(qū)塊16保持順序性。
圖11是展示在一個實施例中為從主機接收到的扇區(qū)選擇存儲方案的流程圖。第10/750,155號申請案中展示了類似的存儲方案選擇流程圖。如果存在開放的更新區(qū)塊20,更新區(qū)塊是順序性的22,且扇區(qū)與更新區(qū)塊中的最后扇區(qū)成順序性的24,那么將所述扇區(qū)寫入26所述更新區(qū)塊。如果扇區(qū)不是與更新區(qū)塊中的最后扇區(qū)成順序性的,那么確定是否應當執(zhí)行強制性順序性寫入27。如果從更新區(qū)塊中的最后扇區(qū)到所接收到的扇區(qū)的地址跳躍不大于預定量(CB)28,那么可用拷貝的扇區(qū)來填補最后扇區(qū)與接收到的扇區(qū)之間的間隙30,以將更新區(qū)塊維持為順序性區(qū)塊(如先前所述)。如果更新區(qū)塊中的未填充的物理區(qū)塊的數(shù)目不大于預定量(CC)32,那么可將所述更新區(qū)塊關(guān)閉34,以將其維持為順序性區(qū)塊且可分配新的更新區(qū)塊36(如先前描述)。導致強制性順序性寫入的第三種情形是在主機正寫入到下一可用簇時40。當發(fā)生此類寫入時,用從非易失性存儲器中的其它地方拷貝來的扇區(qū)填補接收到的扇區(qū)與更新區(qū)塊中最后扇區(qū)之間的間隙30,以使得更新區(qū)塊可被維持為順序性區(qū)塊。如果沒有滿足這些用于以順序性形式寫入數(shù)據(jù)的標準中的任何一者,那么可將更新區(qū)塊轉(zhuǎn)換成混亂更新區(qū)塊42。因此,用于選擇存儲方案的選擇標準可包含從由主機存儲在非易失性存儲器中的數(shù)據(jù)導出的屬性。
圖12A展示存儲器系統(tǒng)以非順序性方式從主機接收數(shù)據(jù)的實例,所述存儲器系統(tǒng)將所述數(shù)據(jù)以順序性方式存儲在更新區(qū)塊50中。接收到簇2的扇區(qū)A,且隨后接收到簇7的扇區(qū)B。當接收到扇區(qū)A時,其可能是更新區(qū)塊50的最初幾個扇區(qū),且如果更新區(qū)塊50只含有扇區(qū)A的話,其被認為是順序性的。或者,如圖12A所示,更新區(qū)塊50可能是順序性的,因為扇區(qū)A是與先前存儲在更新區(qū)塊50中的扇區(qū)成順序性地存儲的。假設更新區(qū)塊50在接收扇區(qū)B之前是順序性的,那么在接收到扇區(qū)B時確定是將更新區(qū)塊50維持為順序性更新區(qū)塊還是將扇區(qū)B直接存儲在寫入到更新區(qū)塊50的最后扇區(qū)(扇區(qū)A)后面且從而將更新區(qū)塊50轉(zhuǎn)換成混亂區(qū)塊。在此實例中,簇7是扇區(qū)A之后的下一空閑簇。因此,當接收到來自簇7的扇區(qū)B時,發(fā)生強制性順序性寫入,且若干扇區(qū)被拷貝到更新區(qū)塊50以填充扇區(qū)A與扇區(qū)B之間的間隙。因此,在圖12A的更新區(qū)塊50中,數(shù)據(jù)是以順序性方式存儲的。
圖12B展示存儲器系統(tǒng)以非順序性方式從主機接收數(shù)據(jù)的實例,所述存儲器系統(tǒng)將所述數(shù)據(jù)以非順序性方式存儲在更新區(qū)塊52中。首先如圖12A一樣接收到扇區(qū)A。扇區(qū)A是以順序性方式存儲的,以使得當編程扇區(qū)A時,更新區(qū)塊52是順序性的。接著,接收到扇區(qū)X。扇區(qū)X并未被寫入下一空閑簇。扇區(qū)X被寫入被分配的簇,且因此不導致執(zhí)行強制性的順序性寫入??梢苑琼樞蛐苑绞綄懭肷葏^(qū)X,或如果存在其它某一順序性寫入的原因(例如扇區(qū)X與扇區(qū)S之間的邏輯間隙小于閾值),那么可以順序性方式寫入扇區(qū)X。此處,扇區(qū)X被展示為寫入到更新區(qū)塊52中的下一可用空間。因此,更新區(qū)塊52變成混亂的。在圖12C中的第二實例中,扇區(qū)Y是在扇區(qū)A之后接收到的。在接收到扇區(qū)Y之前,更新區(qū)塊54是順序性的。扇區(qū)Y不是來自下一空閑簇,因為在更新區(qū)塊中最后寫入的扇區(qū)(扇區(qū)A)與扇區(qū)Y之間存在空閑簇(簇7)。因此,扇區(qū)Y并不導致強制性的順序性寫入,且其可被寫入到更新區(qū)塊54而不進行填補,從而導致更新區(qū)塊54變成混亂的。在圖12D所示的第三實例中,扇區(qū)Z是在扇區(qū)A之后接收到的。更新區(qū)塊56在接收到扇區(qū)Z之前是順序性的。扇區(qū)Z來自簇0且因此其并非來自下一空閑簇,因為簇0在簇2前面,且因而,按照圖中所示的次序,簇0不是下一空閑簇。因此,扇區(qū)Z可直接寫入在簇A后面,從而導致更新區(qū)塊56變成混亂的。
本發(fā)明有多種優(yōu)點。不同的實施例或?qū)嵤┓桨缚赡軙a(chǎn)生以下優(yōu)點中的一種或一種以上。應注意到,這并不是詳盡的列舉,而可能會存在本文中未描述的其它優(yōu)點。本發(fā)明的一個優(yōu)點在于可改進非易失性存儲器系統(tǒng)的性能。本發(fā)明的另一優(yōu)點在于可使用廣泛使用的常規(guī)做法來實施本發(fā)明。本發(fā)明的又一優(yōu)點在于其可在閃存存儲器中實施為相對較小的屬性表。在其它實施方案中,沒有一個表是必需的。再一優(yōu)點在于本發(fā)明可實施成適于任意用途和/或適于在后臺維護操作期間使用。
可單獨使用或以各種組合形式使用本發(fā)明的上述各方面或特征。本發(fā)明還可通過硬件或硬件與軟件的組合來實施。本發(fā)明還可作為計算機可讀代碼而在計算機可讀媒體上實施。所述計算機可讀媒體是任何可存儲數(shù)據(jù)的數(shù)據(jù)存儲裝置,所述數(shù)據(jù)之后可被計算機系統(tǒng)讀取。計算機可讀媒體的實例包含只讀存儲器、隨機存取存儲器、CD-ROM、DVD、磁帶、光學數(shù)據(jù)存儲裝置和載波。計算機可讀媒體也可分布在網(wǎng)絡耦合的計算機系統(tǒng)上,以使得以分布方式來存儲和執(zhí)行計算機可讀代碼。
從所述書面描述中容易了解本發(fā)明的許多特征和優(yōu)點,且因此希望所附權(quán)利要求書覆蓋本發(fā)明的所有這些特征和優(yōu)點。此外,由于所屬領域的技術(shù)人員容易了解多種修改和變化,因而不希望將本發(fā)明限制于所說明和描述的確切構(gòu)造和操作。因此,所有適合的修改和均等物均可歸入本發(fā)明的范圍內(nèi)。
權(quán)利要求
1.一種以一適應性方式將若干部分的數(shù)據(jù)存儲在一存儲器系統(tǒng)中的方法,所述存儲器系統(tǒng)包含一控制器和一非易失性存儲器陣列,所述方法包括所述控制器從一主機存儲在所述非易失性存儲器陣列中的一文件分配表或目錄中的信息中獲得一邏輯地址范圍的一屬性;所述控制器根據(jù)所述邏輯地址范圍的所述屬性從復數(shù)個存儲方案中為具有所述邏輯地址范圍內(nèi)的一邏輯地址的一部分數(shù)據(jù)選擇一存儲方案;和所述控制器根據(jù)所述選擇的存儲方案來存儲所述部分的數(shù)據(jù)。
2.根據(jù)權(quán)利要求1所述的方法,其中所述邏輯地址范圍的所述屬性在于所述邏輯地址范圍是用于存儲主機數(shù)據(jù)的下一空閑邏輯地址范圍。
3.根據(jù)權(quán)利要求2所述的方法,其中所述選擇的存儲方案包含將所述部分的數(shù)據(jù)存儲在一順序性更新區(qū)塊中。
4.根據(jù)權(quán)利要求1所述的方法,其中所述邏輯地址范圍的所述屬性在于所述邏輯地址范圍不是用于存儲主機數(shù)據(jù)的下一空閑邏輯地址范圍。
5.根據(jù)權(quán)利要求4所述的方法,其中所述選擇的存儲方案包含將所述部分的數(shù)據(jù)存儲在一混亂更新區(qū)塊中。
6.根據(jù)權(quán)利要求1所述的方法,其中所述部分的數(shù)據(jù)先前存儲在所述非易失性存儲器陣列中的一第一位置處,所述邏輯地址范圍的所述屬性在于所述邏輯地址范圍由所述主機分配,且所述選擇的存儲方案包含將所述部分的數(shù)據(jù)從所述非易失性存儲器陣列中的所述第一位置拷貝到一第二位置。
7.根據(jù)權(quán)利要求6所述的方法,其中所述部分的數(shù)據(jù)先前存儲在所述非易失性存儲器陣列中的一第一位置處,所述邏輯地址范圍的所述屬性在于所述邏輯地址范圍由所述主機解除分配,且所述選擇的存儲方案將所述部分的數(shù)據(jù)維持在所述第一位置處,而不將所述部分的數(shù)據(jù)從所述第一位置拷貝到一第二位置。
8.根據(jù)權(quán)利要求1所述的方法,其中從一數(shù)據(jù)屬性存儲中獲得所述屬性,而所述數(shù)據(jù)屬性存儲是從所述文件分配表或目錄中導出的。
9.一種將從一主機接收的數(shù)據(jù)存儲在一非易失性存儲器陣列中的方法,其包括從所述主機接收一個或一個以上可定址的數(shù)據(jù)單位,分析由所述主機存儲在所述非易失性存儲器陣列中的信息,以識別復數(shù)個可由所述主機用來存儲數(shù)據(jù)的邏輯地址范圍;將所述復數(shù)個所述主機可使用的邏輯地址范圍與所述一個或一個以上可定址的數(shù)據(jù)單位的邏輯地址進行比較,以確定所述一個或一個以上可定址的數(shù)據(jù)單位是否被分配給所述主機可使用的下一邏輯地址范圍;和以一依賴于所述確定的方式來存儲所述一個或一個以上可定址的數(shù)據(jù)單位。
10.根據(jù)權(quán)利要求9所述的方法,其中如果所述一個或一個以上可定址的單位被指派給接下來的可用順序性位置,那么所述存儲所述一個或一個以上可定址單位的方式為一順序性方式,且如果所述一個或一個以上可定址的單位不被指派給接下來的可用順序性位置,那么所述存儲方式是一非順序性方式。
11.根據(jù)權(quán)利要求9所述的方法,其中存儲所述一個或一個以上可定址的數(shù)據(jù)單位是以一依賴于額外因素的方式進行,所述額外因素包含所述一個或一個以上可定址的數(shù)據(jù)單位的所述邏輯地址與所述最后寫入的可定址數(shù)據(jù)單位的所述邏輯地址之間的一邏輯地址間隙是否超出一預定量。
12.根據(jù)權(quán)利要求11所述的方法,其中一額外因素是用于存儲所述一個或一個以上可定址數(shù)據(jù)單位的一更新區(qū)塊是否含有超過一預定量的一順序性形式的數(shù)據(jù)。
13.一種用于在非易失性存儲器中存儲數(shù)據(jù)的存儲器裝置,所述數(shù)據(jù)是以可定址的數(shù)據(jù)單位從一主機接收的,所述存儲器裝置包括一非易失性存儲器陣列,其含有一主機文件分配表的一拷貝;和一存儲器控制器,其與所述非易失性存儲器陣列通信,所述存儲器控制器監(jiān)視所述主機文件分配表的所述拷貝的內(nèi)容,所述存儲器控制器根據(jù)所述主機文件分配表的所述拷貝確定一部分邏輯地址空間的一分配狀態(tài),且所述存儲器控制器響應于所述分配狀態(tài)為具有所述部分的邏輯地址空間內(nèi)的一邏輯地址的一可定址數(shù)據(jù)單位選擇一數(shù)據(jù)管理方案。
14.根據(jù)權(quán)利要求13所述的存儲器裝置,其中所述存儲器裝置形成一可移除地連接到一控制器的可移除存儲卡的一部分。
15.根據(jù)權(quán)利要求13所述的存儲器裝置,其中所述存儲器控制器在一數(shù)據(jù)屬性存儲中記錄所述部分的邏輯地址空間的所述分配狀態(tài)。
16.根據(jù)權(quán)利要求13所述的存儲器裝置,其中從一主機處接收所述可定址的數(shù)據(jù)單位以供存儲在所述非易失性存儲器陣列中,所述數(shù)據(jù)管理方案包括在所述部分的邏輯地址空間是下一空閑部分時在一順序性區(qū)塊中存儲,且所述數(shù)據(jù)管理方案包括在所述部分的邏輯地址空間不是下一空閑部分時在一混亂區(qū)塊中存儲。
17.根據(jù)權(quán)利要求13所述的存儲器裝置,其中當所述存儲器裝置進行一垃圾收集操作時,所述可定址的數(shù)據(jù)單位被存儲在所述非易失性存儲器陣列中的一第一位置中,所述數(shù)據(jù)管理方案是在所述部分的邏輯地址空間被分配時將所述可定址的數(shù)據(jù)單位拷貝到所述非易失性存儲器陣列中的一第二位置,且所述數(shù)據(jù)管理方案是在所述部分的邏輯地址空間未被分配時將所述可定址的數(shù)據(jù)單位維持在所述第一位置中而不進行拷貝。
18.一種包含程序代碼的計算機可讀媒體,所述程序代碼用于在一存儲器控制器可用來在一非易失性存儲器中存儲主機數(shù)據(jù)的多個替代性存儲方案之間進行選擇,所述計算機可讀媒體包括用于識別的計算機程序代碼,其根據(jù)一主機存儲在所述非易失性存儲器中的信息來識別復數(shù)個部分的邏輯地址空間的一分配狀態(tài),并將所述分配狀態(tài)提供給所述存儲器控制器;和用于選擇的計算機程序代碼,其根據(jù)包含所述部分的數(shù)據(jù)的邏輯地址的一部分邏輯地址空間的一分配狀態(tài)為一部分主機數(shù)據(jù)選擇一數(shù)據(jù)管理方案。
19.根據(jù)權(quán)利要求18所述的計算機可讀媒體,其進一步包括計算機程序代碼,所述計算機程序代碼根據(jù)所述選擇的管理方案對所述部分的主機數(shù)據(jù)進行操作,以在所述部分的邏輯地址空間是未被分配的下一部分的邏輯地址空間時將所述部分的數(shù)據(jù)存儲在一順序性區(qū)塊中,且否則將所述部分的數(shù)據(jù)存儲在一混亂區(qū)塊中。
20.根據(jù)權(quán)利要求18所述的計算機可讀媒體,其進一步包括計算機程序代碼,所述計算機程序代碼根據(jù)所述選擇的管理方案對所述部分的主機數(shù)據(jù)進行操作,以在所述部分的邏輯地址空間被分配時將所述部分的數(shù)據(jù)從一舊位置拷貝到一新位置,且在所述部分的邏輯地址空間未被分配時將所述部分的數(shù)據(jù)保留在所述舊位置中而不拷貝到一新位置。
21.根據(jù)權(quán)利要求18所述的計算機可讀媒體,其進一步包括計算機程序代碼,所述計算機程序代碼提供一含有所述復數(shù)個部分的邏輯地址空間的所述分配狀態(tài)的數(shù)據(jù)屬性存儲。
全文摘要
本發(fā)明揭示用于管理一非易失性存儲器系統(tǒng)(例如,閃存存儲器)中的數(shù)據(jù)的技術(shù)。一控制器可使用由一主機存儲在非易失性存儲器上的與所述主機有關(guān)的文件系統(tǒng)的信息來確定一個或一個以上簇(或具有簇的扇區(qū))當前是否被分配。所述控制器可使用所述與所述主機的文件系統(tǒng)有關(guān)的信息來識別所述主機何時向下一空閑簇發(fā)送數(shù)據(jù)并通過從所述非易失性存儲器中的其它位置拷貝數(shù)據(jù)來以一順序格式存儲所述數(shù)據(jù)。
文檔編號G06F12/02GK101027651SQ200580030163
公開日2007年8月29日 申請日期2005年6月17日 優(yōu)先權(quán)日2004年7月21日
發(fā)明者凱文·M·康利, 艾倫·韋爾什·辛克萊, 彼得·約翰·史密斯 申請人:桑迪士克股份有限公司