專利名稱:帶多流更新跟蹤的非易失性存儲器和方法
技術領域:
本發(fā)明一般涉及非易失性快閃存儲器系統(tǒng)的操作,且更明確地說,涉及在非易失性 快閃存儲器中編程數(shù)據(jù)的更有效的方法。
技術背景如今有許多正在使用的商業(yè)上成功的非易失性存儲器產(chǎn)品,特別是以小形態(tài)因數(shù)卡 形式的存儲器產(chǎn)品,其采用形成在一個或一個以上集成電路芯片上的快閃EEPROM(電 可擦除可編程只讀存儲器)單元陣列。通常但并無必要位于單獨集成電路芯片上的存儲 器控制器與主機(所述卡可移除地連接到所述主機)介接,并且控制卡內(nèi)的存儲器陣列 的操作。所述控制器通常包含微處理器、 一些非易失性只讀存儲器(ROM)、易失性隨 機存取存儲器(RAM)以及一個或一個以上特殊電路,例如在數(shù)據(jù)編程和讀取期間在數(shù) 據(jù)經(jīng)過控制器時從數(shù)據(jù)中計算出誤差校正碼(ECC)的電路。市售卡中的一些卡為 CompactFlash (CF)卡、多媒體卡(MMC)、安全數(shù)字(SD)卡、個人標簽(P-Tag) 和記憶棒卡。主機包含個人計算機、筆記本計算機、個人數(shù)字助理(PDA)、各種數(shù)據(jù) 通信裝置、數(shù)碼相機、蜂窩電話、便攜式音頻播放器、車載音響系統(tǒng)以及類似類型的設 備。在有些系統(tǒng)中,可移除卡并不包含控制器,且主機控制卡中的存儲器陣列的操作。 這種類型的存儲器系統(tǒng)的實例包含智能媒體卡和xD卡。因此,可通過卡中的控制器上 的軟件或通過主機中的控制軟件來實現(xiàn)對存儲器陣列的控制。除了存儲器卡實施方案之 外,這種類型的存儲器還可替代性地嵌入在各種類型的主機系統(tǒng)中。在可移除式和嵌入 式應用中,均可根據(jù)由存儲器控制軟件實施的存儲方案將主機數(shù)據(jù)存儲在存儲器陣列 中。有兩種通用的存儲器單元陣列架構已獲得了商業(yè)應用NOR和NAND。在典型的 NOR陣列中,存儲器單元連接在以列的方向延伸的相鄰位線源極和漏極擴散區(qū)之間,且 控制柵極連接到沿著單元的行延伸的字線。存儲器單元包含至少一個位于源極與漏極之 間的至少一部分單元溝道區(qū)域上的存儲元件。因此,所述存儲元件上的經(jīng)編程的電荷電 平控制所述單元的操作特性,接著便可通過向經(jīng)定址的存儲器單元施加適當電壓來讀取 所述單元。第5,070,032號、第5,095,344號、第5,313,421號、第5,315,541號、第5,343,063 號、第5,661,053號和第6,222,762號美國專利中提供了這些單元的實例、其在存儲器系 統(tǒng)中的使用及其制造方法。這些專利連同本申請案中參考的所有其它專利和專利申請案 均以全文引用的形式并入本文中。NAND陣列利用和個別位線與參考電位之間的一個或一個以上選擇晶體管連接在 一起的兩個以上(例如16個或32個)存儲器單元的串聯(lián)串來形成單元的列。字線延伸 穿過大量這些列內(nèi)的單元。在編程期間通過一種方式讀取和檢驗列內(nèi)的個別單元,使得 串中的剩余單元硬開啟,以使得流過串的電流取決于經(jīng)定址單元中所存儲的電荷電平。 NAND架構陣列的實例及其作為存儲器系統(tǒng)的一部分的操作參看第5,570,315號、第 5,774,397號、第6,046,935號和第6,522,580號美國專利。以上參考專利中所論述的當前的快閃EEPROM陣列的電荷存儲元件是最普通的導 電浮動柵極,其通常由導電性摻雜的多晶硅材料形成。快閃EEPROM系統(tǒng)中有用的替 代類型的存儲器單元利用不導電的介電材料代替導電性浮動柵極來以非易失性方式存 儲電荷。由氧化硅、氮化硅和氧化硅(ONO)形成的三層電介質(zhì)夾在導電性控制柵極與 存儲器單元溝道上方的半導體襯底的表面之間。通過以下方式對單元編程將來自單元 溝道的電子注入氮化物中,將電子捕集在所述氮化物中并存儲在有限的區(qū)域內(nèi),并通過 將熱孔注入到氮化物中來擦除單元。在Harari等人的第2003/010卯93號美國專利申請案 公開案中論述了若干采用介電存儲元件的特定單元結構和陣列。與大多集成電路應用中一樣,快閃EEPROM存儲器單元陣列中也存在實施某種集 成電路功能所需的用以收縮硅襯底區(qū)域的壓力。 一直需要增加可存儲在的硅襯底的給定 區(qū)域中的數(shù)字數(shù)據(jù)的量,以便增加給定大小的存儲器卡和其它類型封裝的存儲容量,或 者既增加容量又減小大小。提高數(shù)據(jù)存儲密度的一種方式是每個存儲器單元和/或每個存 儲單位或元件中存儲一個以上個數(shù)據(jù)位。這通過將存儲元件電荷電平范圍的窗劃分成兩 種以上狀態(tài)來實現(xiàn)。使用四個此種狀態(tài)使得每一單元存儲兩個數(shù)據(jù)位,八個狀態(tài)使得每 一存儲元件中可存儲三個數(shù)據(jù)位,等等。第5,043,940號和號5,172,338號美國專利中描 述了使用浮動柵極的多狀態(tài)快閃EEPROM結構及其操作,且前述第2003/0109093號美 國專利申請公開案中描述了使用介電浮動柵極的結構。出于多種原因,也可用第 5,930,167號和第6,456,528號美國專利中描述的方式以兩種狀態(tài)操作多狀態(tài)存儲器單元 陣列的選定部分,上述兩個專利連同本申請案中引用的所有專利和專利申請案以全文引 用的方式并入本文中。典型的快閃EEPROM陣列的存儲器單元被劃分成一起擦除的離散的單元區(qū)塊(擦除區(qū)塊)。也就是說,擦除區(qū)塊是擦除單位_一可同時擦除的最小數(shù)目的單元。每一擦 子陣列或平面中并行地編程或讀取一個以上頁。每一頁通常存儲一個或一個以上數(shù)據(jù)扇 區(qū),扇區(qū)的大小由主機系統(tǒng)界定。實例扇區(qū)包含512個字節(jié)的用戶數(shù)據(jù),然后是用磁盤 驅(qū)動器建立的標準,加上與用戶數(shù)據(jù)和/或存儲用戶數(shù)據(jù)的擦除區(qū)塊相關的一定數(shù)目字節(jié) 的額外開銷信息。此種存儲器通常配置成每一擦除區(qū)塊內(nèi)有16個、32個或更多的頁,且每一頁存儲一個或僅若干主機數(shù)據(jù)扇區(qū)。
為了提高在將用戶數(shù)據(jù)編程到存儲器陣列中和從中讀取用戶數(shù)據(jù)期間的并行程度, 通常將陣列劃分成多個子陣列(通稱為平面),其中含有其各自的數(shù)據(jù)寄存器和其它電 路以允許并行操作,使得可同時將數(shù)據(jù)扇區(qū)編程到若干或所有平面中的每一平面中或從 中讀取數(shù)據(jù)。單個集成電路上的陣列可在物理上劃分成多個平面,或者每一平面可由單獨的一個或一個以上集成電路芯片形成。第5,798,968號和第5,890,192號美國專利中描 述了此種存儲器實施方案的實例。
為了更加有效地管理存儲器,可將擦除區(qū)塊鏈接在一起以形成虛擬的區(qū)塊或元區(qū) 塊。也就是說,將每一元區(qū)塊界定為包含來自每一平面的一個擦除區(qū)塊。第6,763,424 號美國專利中描述了元區(qū)塊的使用。由主機邏輯區(qū)塊地址將元區(qū)塊識別為用于編程和讀 取數(shù)據(jù)的目的地。類似地,將元區(qū)塊的所有擦除區(qū)塊一起擦除??梢栽摓閱挝痪幊淘?區(qū)塊,其中元頁包括來自元區(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ū)塊的存儲器系統(tǒng)中,元區(qū)塊可為存儲器陣列的有效的最小 擦除單位。因此,最小擦除單位(區(qū)塊)可為擦除區(qū)塊或者元區(qū)塊,這取決于存儲器架 構。術語"區(qū)塊"視架構而定可指代擦除區(qū)塊或元區(qū)塊。類似地,術語"頁"可指代存 儲器系統(tǒng)的最小編程單位。依據(jù)存儲器系統(tǒng)的架構,其可為單個擦除區(qū)塊內(nèi)的頁,或者 可為延伸越過若干擦除區(qū)塊的元頁。
存儲在元區(qū)塊中的數(shù)據(jù)經(jīng)常會被更新,更新的可能性隨著元區(qū)塊的數(shù)據(jù)容量的增加 而增加。 一個元區(qū)塊的經(jīng)更新的扇區(qū)一般被寫入另一元區(qū)塊。未經(jīng)改變的扇區(qū)通常也作 為同一編程操作的一部分被從原始元區(qū)塊拷貝到新元區(qū)塊以合并數(shù)據(jù)?;蛘撸唇?jīng)改變 的數(shù)據(jù)可保持在原始元區(qū)塊中,直到稍后與更新的數(shù)據(jù)一起再次合并到單個元區(qū)塊中為 止。將當前數(shù)據(jù)合并到新區(qū)塊和擦除僅含有過時數(shù)據(jù)的區(qū)塊的操作一般稱為"垃圾收集" 操作。
經(jīng)常用將有些額外區(qū)塊保留在擦除區(qū)塊集區(qū)中的方式來操作較大的區(qū)塊或元區(qū)塊 系統(tǒng)。當更新小于區(qū)塊容量的一個或一個以上頁的數(shù)據(jù)時,通常將更新的頁寫入來自所 述集區(qū)的擦除區(qū)塊,并接著將未經(jīng)改變的頁的數(shù)據(jù)從原始區(qū)塊拷貝到擦除集區(qū)區(qū)塊。前 述第6,763,424號美國專利中描述了這種技術的變化形式。隨著時間的逝去,由于主機 數(shù)據(jù)文件正被重寫和更新,所以許多區(qū)塊最終可使得相對較少的頁含有有效數(shù)據(jù)且剩余 頁含有不再是當前的數(shù)據(jù)。為了能夠有效地使用陣列的數(shù)據(jù)存儲容量,不時地將多個區(qū) 塊中的邏輯上相關的有效數(shù)據(jù)的數(shù)據(jù)頁從碎片搜集在一起,并一起合并為較少數(shù)目的區(qū) 塊。這一過程一般被稱為"垃圾收集"。在一些存儲器系統(tǒng)中,還將物理的存儲器單元分組成兩個或兩個以上的區(qū)。區(qū)可為 物理存儲器或存儲器系統(tǒng)的任何經(jīng)分割的子集,指定范圍的邏輯區(qū)塊地址被映射到所述 子集中。舉例來說,可將能夠存儲64兆字節(jié)的數(shù)據(jù)的存儲器系統(tǒng)分割成四個區(qū),每個 區(qū)存儲16兆字節(jié)的數(shù)據(jù)。接著,還將所述范圍的邏輯區(qū)塊地址劃分成四個群組,每一 群組被分配給四個區(qū)中的每一區(qū)的物理區(qū)塊。在典型的實施方案中,邏輯區(qū)塊地址受到 約束,使得每一者的數(shù)據(jù)永遠不會被寫入在其中映射邏輯區(qū)塊地址的單個物理區(qū)的外 部。在劃分成平面(子陣列)(其每一者具有其各自的定址、編程和讀取電路)的存儲 器單元陣列中,每一區(qū)優(yōu)選包含來自多個平面的區(qū)塊,通常來自每一平面的區(qū)塊的數(shù)目 相同。主要使用區(qū)來簡化地址管理(例如邏輯到物理轉(zhuǎn)換),從而導致較小的轉(zhuǎn)換表、 較少的保存這些表所需的RAM存儲器和對存儲器的當前有效區(qū)域定址的較快的存取時 間,但由于其限制性質(zhì),可能導致達不到最佳的磨損水平。個別快閃EEPROM單元在代表一個或一個以上數(shù)據(jù)位的電荷存儲元件或單位中存 儲一定數(shù)量的電荷。存儲元件的電荷電平控制其存儲器單元的閾值電壓(通常參考為 VT),其用作讀取單元的存儲狀態(tài)的基礎。閾值電壓窗通常被劃分為若干范圍,每個范 圍用于存儲器單元的兩個或兩個以上存儲狀態(tài)中的每一狀態(tài)。這些范圍由保護帶分離, 所述保護帶包含可允許確定個別單元的存儲狀態(tài)的標稱感測電平。這些存儲電平因在鄰 近的或其它相關存儲器單元、頁或區(qū)塊中執(zhí)行的擾亂電荷的編程、讀取或擦除操作而發(fā) 生轉(zhuǎn)變。因此,在讀取期間通常通過控制器來計算誤差校正碼(ECC),并將其連同被 編程和使用的主機數(shù)據(jù)一起存儲,以便在必要時執(zhí)行一定程度的誤差校正。而且,在擾 亂性操作使轉(zhuǎn)變的電荷電平完全轉(zhuǎn)變離開其界定范圍且因此導致讀取錯誤數(shù)據(jù)之前,可 將轉(zhuǎn)變的電荷電平不時地重新恢復回到其狀態(tài)范圍的中心。第5,532,962號和第 5,卯9,449號美國專利中描述了這個被稱作數(shù)據(jù)刷新或擦洗的過程。在有些存儲器陣列中,頁可由可保持多個數(shù)據(jù)扇區(qū)的擦除區(qū)塊的一部分組成。 一旦已寫入頁,便不可能在不破壞已寫入的數(shù)據(jù)的情況下進行進一步的寫入。對于使用此種
系統(tǒng)的存儲器陣列而言,可由連接到同一字線的一組存儲器單元界定頁。可能會對此種 存儲器陣列進行低效的編程,其中以小于頁的大小的量接收數(shù)據(jù)。舉例來說,在一次接 收一個數(shù)據(jù)扇區(qū)的情況下,僅可將一個扇區(qū)編程到頁中。不會在沒有破壞已保存在此處 的數(shù)據(jù)扇區(qū)的風險下將任何額外的數(shù)據(jù)編程到頁中。有時候,可在相互之間具有某種延 遲的情況下接收一系列單個扇區(qū)。在此情況下,將每一扇區(qū)寫入存儲器陣列的單獨頁中。 因此,扇區(qū)是以在其低效使用存儲器陣列中的空間的方式存儲的。在使用多電平邏輯的 情況下,存儲器單元對附近單元的稍后編程的影響特別敏感。此外, 一般通過用第一數(shù) 據(jù)頁編程一組單元且然后用第二數(shù)據(jù)頁編程所述單元來對多電平單元進行編程。對第二 數(shù)據(jù)頁的編程在某些情況下可能會破壞第一數(shù)據(jù)頁。因此,需要一種更加有效的方式在 存儲器陣列接收小于一頁的量的數(shù)據(jù)時在具有多扇區(qū)頁的存儲器陣列中存儲數(shù)據(jù)。還需 要一種在對多電平單元群組編程時在后續(xù)頁的編程期間防止破壞第一數(shù)據(jù)頁的方式。發(fā)明內(nèi)容在以區(qū)塊作為擦除單位的存儲器陣列中,可將一個或一個以上區(qū)塊指定為高速暫存 區(qū)塊,且可用其來改進存儲器系統(tǒng)的性能。高速暫存區(qū)塊可作為緩沖器來操作,使得數(shù) 據(jù)以較低并行程度寫入高速暫存區(qū)塊,并接著以較高平行程度拷貝到存儲器陣列內(nèi)的另 一位置??稍诟咚贂捍鎱^(qū)塊內(nèi)累積數(shù)據(jù),直到其可更有效地被寫入到另一位置為止。在 具有多扇區(qū)頁的存儲器中,可累積扇區(qū),直到可使用系統(tǒng)的最大并行度寫入整個頁為止。 在多電平單元存儲器中,可在高速暫存區(qū)塊中存儲下部頁,直到上部頁可用為止,使得可一起存儲上部和下部頁。特定程序操作的并行程度與可一起編程的數(shù)據(jù)位的數(shù)目成比例。因此,將對大量數(shù) 據(jù)一起編程視為具有高并行度的寫入,而將對少量數(shù)據(jù)一起編程視為低并行度。在使用 少于一頁的平行度時,存儲器陣列中的空間可能會被浪費,且這種被浪費的空間意味著 必須更加經(jīng)常地執(zhí)行垃圾收集,因此會對存儲器系統(tǒng)的效率造成負面影響。有時候,必 須在存儲器系統(tǒng)中存儲少量數(shù)據(jù)。通過在一個位置(高速暫存區(qū)塊)中寫入這些小寫入, 并稍后將其以較高并行度一起寫入另一位置,可改進存儲器系統(tǒng)的效率。揭示一種在以由多個數(shù)據(jù)扇區(qū)組成的頁作為最小編程單位的存儲器系統(tǒng)中,存儲以 少于一頁的量接收的數(shù)據(jù)的方法。使用指定為高速暫存區(qū)塊的區(qū)塊來存儲接收到的扇 區(qū),直到可將整個頁寫入快閃存儲器陣列為止。將第一扇區(qū)存儲在高速暫存區(qū)塊的第一 頁中??蓪㈦S后接收到的扇區(qū)存儲在高速暫存區(qū)塊的額外頁中。當接收到個別接收到的 扇區(qū)或扇區(qū)群組時,將所述個別接收到的扇區(qū)或扇區(qū)群組保存在高速暫存區(qū)塊的新頁
中。可將來自高速暫存區(qū)塊中的其它頁的先前存儲的扇區(qū)連同新數(shù)據(jù)一起拷貝到最后的 頁中。因此,只要高速暫存區(qū)塊的頁中存在少于一整頁的新數(shù)據(jù),便在高速暫存區(qū)塊中 累積數(shù)據(jù)扇區(qū)。以低于高速暫存區(qū)塊最大可用的并行度的并行程度將扇區(qū)寫入高速暫存 區(qū)塊。當扇區(qū)存儲在高速暫存區(qū)塊中時可對扇區(qū)進行更新。當接收到導致整頁數(shù)據(jù)可用 于編程的新數(shù)據(jù)扇區(qū)時,可將新扇區(qū)和先前存儲在高速暫存區(qū)塊中的扇區(qū)一起編程到存 儲器陣列的另一區(qū)塊中的同一頁中。這一頁中完全填滿了數(shù)據(jù),且以最大可用的并行度 寫入。接著,可將存儲在高速暫存區(qū)塊中的數(shù)據(jù)標記為過時的,且可在便利的時間將其 擦除。因此,更有效地使用快閃存儲器中的空間,且降低垃圾收集操作的頻率。在具有多電平單元的存儲器中,高速暫存區(qū)塊可存儲一個數(shù)據(jù)頁,所述數(shù)據(jù)頁還寫 入到活動區(qū)塊中。所存儲的頁可保留在高速暫存區(qū)塊中,直到接收到另一數(shù)據(jù)頁以使得 可將兩個數(shù)據(jù)頁一起寫入其在活動區(qū)塊中的目的地為止。可使用高并行程度,并以與將 其單獨寫入相比較低的破壞數(shù)據(jù)的風險將所述兩個數(shù)據(jù)頁一起寫入為上部和下部頁。還可在對與下部頁相關聯(lián)的上部頁編程期間使用高速暫存區(qū)塊來保持先前編程的下部頁 的拷貝,使得如果存在失去電力的話可從高速暫存區(qū)塊中移除下部頁中的數(shù)據(jù)。高速暫存區(qū)塊可允許臨時存儲將臨時被寫入另一位置的數(shù)據(jù)。可在更新區(qū)塊的數(shù)據(jù) 扇區(qū)期間將數(shù)據(jù)存儲在高速暫存區(qū)塊中。在區(qū)塊內(nèi)的頁含有來自不同文件的數(shù)據(jù)扇區(qū)的 情況下,在更新任一區(qū)塊時更新頁。使用常規(guī)方法可能需要一個以上區(qū)塊來存儲來自兩 個文件的更新的數(shù)據(jù),因為可能需要多文件頁的兩份拷貝。使用高速暫存區(qū)塊允許存儲 來自一個文件的頁的一部分,直到頁的剩余部分(來自另一文件)可用為止。接著,使 用最大并行度將充滿的更新頁編程到其目的地。高速暫存區(qū)塊可能含有無關的數(shù)據(jù)的扇區(qū)。主機數(shù)據(jù)扇區(qū)和控制數(shù)據(jù)扇區(qū)均可存儲 在高速暫存區(qū)塊中。主機數(shù)據(jù)扇區(qū)和控制數(shù)據(jù)扇區(qū)均可存儲在高速暫存區(qū)塊內(nèi)的同一頁 中。可將來自兩個不同文件或來自同一文件中邏輯上遙遠的部分的扇區(qū)存儲在高速暫存 區(qū)塊中的同一頁中。這可允許以最大并行度對高速暫存區(qū)塊進行編程,以便在接收數(shù)據(jù) 時保持高速度。在以低速度接收數(shù)據(jù)時,可用含有控制數(shù)據(jù)的扇區(qū)占用頁中的額外空間。 這可允許較不頻繁地更新控制數(shù)據(jù)結構,從而降低垃圾收集的頻率。一般來說,存儲在高速暫存區(qū)塊的同一頁中的扇區(qū)不需要屬于不同文件。作為獨立 的數(shù)據(jù)對象,其僅需要為(例如)同一頁的兩個邏輯扇區(qū),但通過不同的寫入命令寫入??赏ㄟ^標記扇區(qū)來識別高速暫存區(qū)塊,使得控制器可容易地識別所述高速暫存區(qū)塊??蓪⒋鎯υ诟咚贂捍鎱^(qū)塊中的數(shù)據(jù)索引保持在本身存儲在高速暫存區(qū)塊中的索引扇區(qū)中。當在高速暫存區(qū)塊中存儲新扇區(qū)時,通過用新索引扇區(qū)代替舊索引扇區(qū)來更新索
引扇區(qū)。類似地,在將高速暫存區(qū)塊中的扇區(qū)拷貝到其它位置時,可將索引扇區(qū)更新以 指示高速暫存區(qū)塊中的這些扇區(qū)是過時的。
用于高速暫存和更新區(qū)塊的改進的索引一一在高速暫存區(qū)塊中保持的SPBI/CBI索
根據(jù)本發(fā)明的另一方面,當除了更新區(qū)塊之外還使用高速暫存區(qū)塊時,使用相關聯(lián) 的高速暫存區(qū)塊索引(SPBI)來保持對高速暫存區(qū)塊中記錄的更新扇區(qū)的跟蹤。這是作 為用于保持對更新區(qū)塊中記錄的邏輯扇區(qū)的跟蹤的索引(例如,CBI)的補充。只要在 高速暫存區(qū)塊的部分頁中存儲用戶數(shù)據(jù),便意味著至少頁的最后的槽未被充滿。在一個 實施例中,可將SPBI存儲在高速暫存區(qū)塊的部分頁的最后的槽中。在優(yōu)選實施例中, 可在SPBI/CBI扇區(qū)內(nèi)封裝SPBI和CBI,并將其存儲在高速暫存區(qū)塊中的部分頁的未以 任何方式使用的最后的槽中。每當寫入新的部分頁時,便在末尾槽處寫入更新的 SPBI/CBI扇區(qū),表示所有先前版本過時。
同時,索引方案利用高速暫存區(qū)塊中未使用的存儲裝置來存儲非易失性存儲器中的 索引。根據(jù)本發(fā)明的又一方面,存儲在存儲器區(qū)塊中的數(shù)據(jù)的索引存儲在未被數(shù)據(jù)占用的 部分頁的一部分中。因此,在組織為存儲器單位的存儲器中(其中儲存器單位的頁可一 起編程且存儲器頁的區(qū)塊可一起擦除),當存儲在存儲器單位中的數(shù)據(jù)單位根據(jù)預定次 序在頁中對準,且特別是在頁在每次擦除之后可一次編程的情況下,將存在部分填充的 頁。接著將區(qū)塊的索引存儲在未充滿更新數(shù)據(jù)的部分頁中。部分頁可在當前區(qū)塊中或在 另一區(qū)塊中。
多流更新跟蹤——兩個或兩個以上流之間的同步根據(jù)本發(fā)明的另一方面,提供一種用以將更新數(shù)據(jù)與同步信息一起寫入非易失性存 儲器的方法,所述同步信息允許識別可能存在于多個存儲器區(qū)塊上的最近寫入的數(shù)據(jù)版 本??蓪碜灾鳈C的更新數(shù)據(jù)經(jīng)由多個流引導到多個區(qū)塊。通過存儲與流/區(qū)塊在至少一 個流每次更新時的充滿程度相關的信息,來實現(xiàn)對同步信息的維護。
在優(yōu)選實施例中,指向區(qū)塊中第一個空位置的寫入指針將指示區(qū)塊的充滿程度。舉 例來說,在兩個流之間,針對第二區(qū)塊的寫入指針的值指示在向第一區(qū)塊寫入寫入指針 時第二區(qū)塊的充滿程度。此外,寫入指針在第一區(qū)塊中的保存位置也指示了此時第一區(qū) 塊的充滿程度。本發(fā)明特別適用于組織為存儲器單位的可擦除區(qū)塊的非易失性存儲器,每一存儲器單位用于存儲邏輯數(shù)據(jù)單位,且每一區(qū)塊也組織為一個或一個以上頁。此外,每一頁在
多個邏輯單位的擦除之后可一次編程,每一邏輯單位以給定的頁偏移處于預定次序。所 述方法本質(zhì)上提供兩個用于存儲或緩沖邏輯單位群組的數(shù)據(jù)的區(qū)塊(例如,更新區(qū)塊和 高速暫存區(qū)塊),且保存同步信息以幫助識別最近寫入的邏輯單位版本是位于第一區(qū)塊 中還是第二區(qū)塊中。根據(jù)優(yōu)選實施例,每當在高速暫存區(qū)塊中緩沖主機數(shù)據(jù)時,以寫入指針形式的同步 信息與主機數(shù)據(jù)一起保存。寫入指針是當在高速暫存區(qū)塊中保存寫入指針時提供在更新 區(qū)塊中下一寫入的位置的地址的更新區(qū)塊寫入指針。確切地說,其保存在高速暫存區(qū)塊 中不用于以任何方式存儲主機數(shù)據(jù)的部分中。更新區(qū)塊寫入指針優(yōu)選包含在存儲于高速 暫存區(qū)塊的部分頁中的索引SPBI/CBI中。更新區(qū)塊寫入指針將允許確定高速暫存區(qū)塊 中緩沖的給定邏輯扇區(qū)是否已在對更新塊的后續(xù)寫入后而成為過時的。根據(jù)本發(fā)明的另一實施例,保持同步信息,其將允許確定在高速暫存區(qū)塊中緩沖的 給定邏輯扇區(qū)是否已在對更新區(qū)塊的后續(xù)寫入后而成為過時的。這通過包含高速暫存寫 入指針來實現(xiàn),所述高速暫存寫入指針在同步信息被存儲在更新區(qū)塊的頁中時提供高速 暫存區(qū)塊中的下一寫入的位置的地址。在又一實施例中,可將同步信息編碼為用于寫入到多個流的數(shù)據(jù)扇區(qū)的時戳,以便 可正確地找出最新版本。在優(yōu)選實施例中,將時戳信息存儲在正寫入的頁中的至少一個扇區(qū)的額外開銷部分中。用管線操作進行的多流更新根據(jù)本發(fā)明的另一方面, 一種更新非易失性存儲器的方法包含使用第一區(qū)塊(更新 區(qū)塊)來記錄更新數(shù)據(jù)并使用第二區(qū)塊(高速暫存區(qū)塊)在將一些更新數(shù)據(jù)記錄到更新 區(qū)塊之前臨時保存所述更新數(shù)據(jù)。將非易失性存儲器組織成存儲器單位的可擦除區(qū)塊, 每一存儲器單位用于存儲邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織成一個或一個以上頁,每一 頁能夠存儲多個具有限定的頁偏移的邏輯單位,且能夠在擦除之后一起一次編程。所述 方法進一步包含從主機接收邏輯單位,并將接收到的邏輯單位逐頁對準,以便當滿足預 定條件時(其中接收到的邏輯單位具有頁末尾偏移),將接收到的邏輯單位和任何先前 邏輯單位以適當?shù)捻搶蚀鎯Φ礁聟^(qū)塊中的頁,否則,便將任何剩余的接收到的邏輯 單位臨時存儲到高速暫存區(qū)塊中的部分頁。高速暫存區(qū)塊中的邏輯單位最終在滿足預定 條件時轉(zhuǎn)移到更新區(qū)塊。在優(yōu)選實施例中,接收更新數(shù)據(jù)并將其逐頁解析以便轉(zhuǎn)移到第一區(qū)塊(例如,更新區(qū)塊)。將任何接收到的數(shù)據(jù)的剩余的部分頁轉(zhuǎn)移到第二區(qū)塊(例如,高速暫存區(qū)塊)
且其將保持在該處,直到有整頁數(shù)據(jù)變?yōu)榭捎糜谟涗浀降谝粎^(qū)塊為止。當將接收到的數(shù) 據(jù)轉(zhuǎn)移到第二區(qū)塊時,其被逐頁記錄,盡管記錄的頁僅部分地由接收到的數(shù)據(jù)填充。部 分頁中的多余(通常未使用的)空間用以存儲用于將數(shù)據(jù)定位在第二和第一區(qū)塊中的索 引。根據(jù)另一優(yōu)選實施例,實施預測性管線操作,其中不再一直等到確認用于記錄到更 新區(qū)塊的預定條件,而是將更新區(qū)塊設置成在主機寫入命令指示用于寫入的數(shù)據(jù)單位潛 在地滿足預定條件時便對更新區(qū)域進行寫入。以此方式,所述設置可在等待來自主機的 數(shù)據(jù)單位時具有跳躍開始。當接收到的實際數(shù)據(jù)單位最終確實滿足預定條件時,可立刻 進行對更新區(qū)塊中的頁的編程,而無需必須等待設置,借此改進寫入性能。在主機寫入 被中斷且接收到的實際數(shù)據(jù)單位不再滿足預定條件的情況下,將放棄用于記錄到更新區(qū) 塊的設置,且作為替代,數(shù)據(jù)單位將被記錄到高速暫存區(qū)塊。在另一優(yōu)選實施例中,當接收數(shù)據(jù)時且當在將接收到的數(shù)據(jù)記錄到第一還是第二存 儲裝置方面起初存在不確定時,將接收到的數(shù)據(jù)加載到第一和第二存儲裝置二者的編程 電路的數(shù)據(jù)鎖存器。以此方式,數(shù)據(jù)將始終可立即用于對第一或第二存儲裝置編程。在 特殊情況下,第一和第二存儲裝置共享同一組數(shù)據(jù)鎖存器。舉例來說,當?shù)谝缓偷诙?儲裝置位于同一存儲器平面中時,可通過同一組編程電路用同一組讀出放大器和數(shù)據(jù)鎖 存器為其服務。在這種情況下,不論是要對第一還是第二存儲裝置編程,數(shù)據(jù)均被加載 到一組默認數(shù)據(jù)鎖存器中。通過以下對本發(fā)明的優(yōu)選實施例的描述將了解本發(fā)明的其它特征和優(yōu)點,所述描述 應當結合附圖來理解。
圖1A和1B分別是一起操作的非易失性存儲器和主機系統(tǒng)的方框圖。 圖2說明圖1A的存儲器陣列的第一實例組織。圖3展示存儲在圖1A的存儲器陣列中的具有額外開銷數(shù)據(jù)的實例主機數(shù)據(jù)扇區(qū)。圖4說明圖1A的存儲器陣列的第二實例組織。圖5說明圖1A的存儲器陣列的第三實例組織。圖6展示圖1A的存儲器陣列的第三實例組織的擴展部分。圖7是一種特定配置中的圖1A的陣列的存儲器單元群組的電路圖。圖8展示數(shù)據(jù)扇區(qū)在如圖1A的存儲器陣列的存儲器陣列的區(qū)塊中的存儲。圖9展示數(shù)據(jù)扇區(qū)在如圖1A的存儲器陣列的存儲器陣列的區(qū)塊中的替代存儲。
圖10A展示在垃圾收集操作期間在拷貝到另一區(qū)塊之后的圖8或9的數(shù)據(jù)扇區(qū)。
圖10B展示在第二次垃圾收集操作期間在拷貝到另一區(qū)塊之后的圖10A的數(shù)據(jù)扇區(qū)。
圖IOC展示在接收到更多數(shù)據(jù)扇區(qū)之后的圖10B的區(qū)塊。
圖IIA展示使用兩個擦除區(qū)塊(一活動區(qū)塊和一高速暫存區(qū)塊)的用以存儲圖10A 和10B的數(shù)據(jù)扇區(qū)的替代存儲布置。
圖IIB展示使用兩個元區(qū)塊(一活動區(qū)塊和一高速暫存區(qū)塊)的用以存儲圖IOA和 10B的數(shù)據(jù)扇區(qū)的替代存儲布置。
圖12A展示兩個用以存儲數(shù)據(jù)扇區(qū)的區(qū)塊(一活動區(qū)塊和一高速暫存區(qū)塊),使得 可在存儲的同時更新數(shù)據(jù)扇區(qū)而不會觸發(fā)垃圾收集操作。
圖12B展示圖12A的存儲系統(tǒng)的替代存儲系統(tǒng),其允許在存儲的同時更新頁的所有 扇區(qū)而不會觸發(fā)垃圾收集。
圖13展示用以在多電平單元中存儲兩個數(shù)據(jù)位的四個閾值電壓范圍。
圖14展示多電平單元的兩個區(qū)塊(一活動區(qū)塊和一高速暫存區(qū)塊),其中高速暫存 區(qū)塊保存活動區(qū)塊的下部頁的拷貝。
圖15展示來自存儲在區(qū)塊中的兩個文件的數(shù)據(jù)扇區(qū),以及隨后當這兩個文件被更 新時對數(shù)據(jù)扇區(qū)的后續(xù)存儲,從而需要存儲器陣列中的一個以上區(qū)塊空間。
圖16展示更新圖15的數(shù)據(jù)扇區(qū)的替代系統(tǒng),其中在將一些扇區(qū)拷貝到活動區(qū)塊之 前高速暫存區(qū)塊存儲所述扇區(qū)。
圖17展示在同一頁中存儲無關數(shù)據(jù)的扇區(qū)且隨后將此數(shù)據(jù)拷貝到不同位置的高速 暫存區(qū)塊。
圖18展示存儲經(jīng)受多次更新的無關數(shù)據(jù)的扇區(qū)的高速暫存區(qū)塊。
圖19展示通過標記扇區(qū)而識別的高速暫存區(qū)塊。
圖20展示圖19的高速暫存區(qū)塊,其存儲扇區(qū)和索引扇區(qū)的群組。
圖21展示圖20的高速暫存區(qū)塊,其存儲扇區(qū)和第二索引扇區(qū)的第二群組,所述第二索引扇區(qū)取代第一索引扇區(qū)。
圖22展示圖21的高速暫存區(qū)塊,其存儲扇區(qū)和第三索引扇區(qū)的第三群組,所述第三索引扇區(qū)取代第二索引扇區(qū)。
圖23展示圖22的高速暫存區(qū)塊,其具有第四索引扇區(qū),所述第四索引扇區(qū)在將群組拷貝到另一區(qū)塊時取代第三索引扇區(qū)。
圖24說明以常規(guī)方式在具有單扇區(qū)的頁的更新區(qū)塊中更新和存儲邏輯群組中的扇
區(qū)的實例。圖25說明圖24所示的同一序列的寫入,其應用于頁為多扇區(qū)且可能是可一次寫入的存儲器。圖26是說明根據(jù)本發(fā)明的一般實施例,通過結合第二存儲器區(qū)塊使用第一存儲器 區(qū)塊并將存儲的數(shù)據(jù)的索引保存在第二區(qū)塊中,來更新數(shù)據(jù)的方法的流程圖。圖27A說明根據(jù)本發(fā)明優(yōu)選實施例,通過結合高速暫存區(qū)塊使用更新區(qū)塊來更新數(shù) 據(jù)和保持索引的特定實例。圖27B說明根據(jù)本發(fā)明優(yōu)選實施例,通過結合高速暫存區(qū)塊使用更新區(qū)塊來維持更 新數(shù)據(jù)的循序排序的另一實例。圖28說明在區(qū)塊的部分頁中保存用于存儲更新數(shù)據(jù)的存儲器區(qū)塊的索引的優(yōu)選方案。圖29示意性說明在多流更新中使用的高速暫存區(qū)塊,其中有若干邏輯群組正在同 步地經(jīng)受更新。圖30說明將一輸入數(shù)據(jù)序列寫入?yún)^(qū)塊的常規(guī)情況。圖31A說明根據(jù)本發(fā)明的優(yōu)選實施例,即使在不同寫入在兩個區(qū)塊上交錯時也保持對記錄次序或優(yōu)先級的跟蹤的方案。圖31B說明當在兩個區(qū)塊上記錄寫入時保持對記錄次序的跟蹤的另一實施例。圖32A是說明根據(jù)本發(fā)明一般實施例,使兩個數(shù)據(jù)流之間的記錄序列同步的方法的流程圖。圖32B是說明根據(jù)使用寫入指針的實施例,使兩個數(shù)據(jù)流之間的記錄序列同步的方 法的流程圖。圖33A展示在根據(jù)第一序列的兩個主機寫入# 1和#2后高速暫存區(qū)塊和更新區(qū)塊 的狀態(tài)。圖33B展示在根據(jù)與圖33A所示的第一序列相反的第二序列的兩個主機寫入弁1和#2后高速暫存區(qū)塊和更新區(qū)塊的狀態(tài)。圖34A說明高速暫存區(qū)塊索引(SPBI)的優(yōu)選數(shù)據(jù)結構。圖34B說明圖33A中所示的主機寫入弁l的高速暫存區(qū)塊索引中的實例值。圖35A和圖35B展示高速暫存區(qū)塊和更新區(qū)塊分別在圖33A和圖33B的連續(xù)的主機寫入之后相對于高速暫存寫入指針的中間狀態(tài)。圖36說明記錄到更新區(qū)塊的扇區(qū)的額外開銷部分中存儲的高速暫存寫入指針。圖37說明使用時戳來保持對兩個更新流之間的記錄序列的跟蹤。
圖38是說明根據(jù)本發(fā)明的一般實施例,同時將更新數(shù)據(jù)記錄和索引到兩個存儲器 區(qū)塊的方法的流程圖,其中每一存儲器區(qū)塊具有多扇區(qū)頁。圖39是說明圖37的使用高速暫存區(qū)塊和更新區(qū)塊的方法的更具體的實施方案的流 程圖。圖40A示意性說明具有一排讀取/寫入電路的存儲器裝置,其提供實施本發(fā)明的環(huán)境o圖40B說明圖40A所示的存儲器裝置的優(yōu)選布置。 圖41更詳細地說明圖40A所示的感測模塊。圖42是說明根據(jù)優(yōu)選實施例使用預測性管線方案的多流更新的流程圖。圖43是說明根據(jù)另一實施例的多流更新的流程圖,其中在發(fā)送正確的目的地地址之前加載程序數(shù)據(jù)。
具體實施方式
存儲器架構及其操作首先參看圖1A,快閃存儲器包含存儲器單元陣列和控制器。在所示的實例中,兩 個集成電路裝置(芯片)11和13包含存儲器單元的陣列15和各種邏輯電路17。邏輯 電路17通過數(shù)據(jù)、命令和狀態(tài)電路與單獨芯片上的控制器19介接,且還向陣列13提 供定址、數(shù)據(jù)轉(zhuǎn)移和感測及其它支持。存儲器陣列芯片的數(shù)目可為一個到多個,這取決 于所提供的存儲容量。控制器和整個陣列的一部分可替代地組合成單個集成電路芯片, 但這在目前不是經(jīng)濟的替代方案。典型的控制器19包含微處理器21、主要用以存儲固件的只讀存儲器(ROM) 23和 主要用于臨時存儲寫入到存儲器芯片11和13或者從中讀取的用戶數(shù)據(jù)的緩沖存儲器 (RAM) 25。電路27與存儲器陣列芯片介接,且電路29通過連接部分31與主機介接。 在此實例中,通過使用專用于計算代碼的電路33計算ECC來確定數(shù)據(jù)的完整性。當將 用戶數(shù)據(jù)從主機轉(zhuǎn)移到快閃存儲器陣列以供存儲時,電路從數(shù)據(jù)中計算出ECC,且所述 代碼存儲在存儲器中。當稍后從存儲器中讀取所述用戶數(shù)據(jù)時,其再次通過電路33,所 述電路33通過相同的算法計算ECC,并將所述代碼與已經(jīng)計算并與數(shù)據(jù)一起存儲的代 碼進行比較。如果其相當,則確認數(shù)據(jù)的完整性。如果其不同,則可依據(jù)所利用的特定 ECC算法來識別和校正那些錯誤的位,所識別和校正的錯誤位的數(shù)目可達到算法所支持 的數(shù)目。圖1A的存儲器的連接部分31與主機系統(tǒng)的連接部分31'相配,圖1B中給出連接部
分的實例。圖1A的主機與存儲器之間的數(shù)據(jù)傳遞是通過接口電路35來進行。典型的主 機還包含微處理器37、用于存儲固件代碼的ROM39、以及RAM41。其它電路和子系 統(tǒng)43通常包含高容量磁性數(shù)據(jù)存儲磁盤驅(qū)動器、用于鍵盤的接口電路、監(jiān)視器等,這 取決于特定的主機系統(tǒng)。此種主機的一些實例包含臺式計算機、膝上型計算機、手持計 算機、掌上計算機、個人數(shù)字助理(PDA)、 MP3及其它音頻播放器、數(shù)碼相機、攝像 機、電子游戲機、無線和有線電話裝置、答錄機、錄音機、網(wǎng)絡路由器等。圖1A的存儲器可構建為可與圖1B的主機以可移除連接的形式的含有控制器及其所 有存儲器陣列電路裝置的小型封閉卡。也就是說,相配的連接部分31和31'允許卡可解 除連接并移動到另一主機,或者通過將另一卡連接到主機而被替代。或者,可將存儲器 陣列裝置封閉在單獨的卡中,所述卡可以電和機械方式與含有控制器和連接部分31的 卡連接。作為進一步的替代方案,可將圖1A的存儲器嵌入在圖1B的主機內(nèi),其中連接 部分31和31'是永久制造的。在此情況下,存儲器通常連同其它組件一起包含在主機的 封圍物中。圖2說明存儲器陣列的一部分,其中將存儲器單元分組成擦除區(qū)塊,每一擦除區(qū)塊 中的單元可通常同時一起被擦除,作為單一存儲操作的一部分。擦除區(qū)塊是此種類型存 儲器中的最小擦除單位。圖2的個別存儲器單元擦除區(qū)塊的大小可發(fā)生變化,但一種商業(yè)上實踐的形式在個 別擦除區(qū)塊中包含單個數(shù)據(jù)扇區(qū)。圖3中說明此種數(shù)據(jù)扇區(qū)的內(nèi)容。用戶數(shù)據(jù)51通常 為512個字節(jié)。除了用戶數(shù)據(jù)51之外還有額外開銷數(shù)據(jù),其包含從用戶數(shù)據(jù)中計算出 的ECC 53、與扇區(qū)數(shù)據(jù)和/或其中編程扇區(qū)的擦除區(qū)塊相關的參數(shù)55以及從參數(shù)55計 算出的ECC57,以及任何其它可包含的額外開銷數(shù)據(jù)。參數(shù)55中還可包含一個或一個以上指示狀況或狀態(tài)的旗標。還可在參數(shù)55內(nèi)存儲 用于編程和/或擦除擦除區(qū)塊的電壓電平的指示,這些電壓隨著擦除區(qū)塊經(jīng)歷的循環(huán)數(shù)目 和其它因素的變化而更新。在原始擦除區(qū)塊有缺陷的情況下,參數(shù)55的其它實例包含 擦除區(qū)塊內(nèi)的任何有缺陷的單元的識別、映射到此物理擦除區(qū)塊中的擦除區(qū)塊的邏輯地 址以及任何替代的擦除區(qū)塊的地址。在任何存儲器系統(tǒng)中使用的參數(shù)55的特定組合將 根據(jù)設計而變化。此外,可將一些或全部額外開銷數(shù)據(jù)存儲在專用于此種功能的擦除區(qū) 塊中,而不是存儲在含有用戶數(shù)據(jù)或與額外開銷數(shù)據(jù)相關的擦除區(qū)塊中。與圖2的單個數(shù)據(jù)扇區(qū)擦除區(qū)塊不同的是圖4的多扇區(qū)擦除區(qū)塊。實例擦除區(qū)塊59仍然是最小擦除單位,其含有四個頁0-3,其中每一頁是最小編程單位。 一個或一個以上主機數(shù)據(jù)扇區(qū)通常連同額外開銷數(shù)據(jù)一起存儲在每一頁中,所述額外開銷數(shù)據(jù)至少包
含可從扇區(qū)的數(shù)據(jù)中計算的ECC且可采用圖3的數(shù)據(jù)扇區(qū)的形式。重寫整個區(qū)塊的數(shù)據(jù)通常涉及將新數(shù)據(jù)編程到擦除區(qū)塊集區(qū)的區(qū)塊中,接著擦除原 始區(qū)塊且將其放置在擦除集區(qū)中。當少于區(qū)塊的所有頁的數(shù)據(jù)經(jīng)更新時,通常將更新的 數(shù)據(jù)存儲在來自擦除區(qū)塊集區(qū)的區(qū)塊的頁中,且將剩余的未改變的頁中的數(shù)據(jù)從原始區(qū) 塊拷貝到新區(qū)塊中。接著擦除原始區(qū)塊。這種大區(qū)塊管理技術的變化形式包含將更新的 數(shù)據(jù)寫入另一區(qū)塊的頁中,而無需從原始區(qū)塊中移走數(shù)據(jù)或者擦除原始區(qū)塊。這導致多 個頁具有同一邏輯地址。通過某種便利的技術來識別最近的數(shù)據(jù)頁,例如記錄為扇區(qū)或 頁額外開銷數(shù)據(jù)中的字段的編程時間。圖5中說明另一多扇區(qū)區(qū)塊布置。此處,總存儲器單元陣列在物理上被劃分成兩個 或兩個以上平面,圖中說明四個平面0-3。每一平面是存儲器單元的子陣列,其具有其 自身的數(shù)據(jù)寄存器、讀出放大器、定址解碼器和類似物,以便能夠在較大程度上獨立于 其它平面而操作。可將所有平面提供在單個集成電路裝置或多個裝置上, 一個實例為從 一個或一個以上不同的集成電路裝置中形成每一平面。圖5的實例系統(tǒng)中的每一區(qū)塊含 有16個頁P0-P15,每一頁具有一個、兩個或兩個以上主機數(shù)據(jù)扇區(qū)以及一些額外開銷 數(shù)據(jù)的容量。圖6中說明又一存儲器單元布置。每一平面含有大量的單元擦除區(qū)塊。為了提高操 作的并行程度,將不同平面內(nèi)的擦除區(qū)塊在邏輯上鏈接起來以形成元區(qū)塊。圖6中將一 個這種元區(qū)塊說明為由平面0的擦除區(qū)塊3、平面1的擦除區(qū)塊1、平面2的擦除區(qū)塊1 以及平面3的擦除區(qū)塊2形成。每一元區(qū)塊可在邏輯上定址,且存儲器控制器分配并保 持對形成個別元區(qū)塊的擦除區(qū)塊的跟蹤。主機系統(tǒng)優(yōu)選以等于個別元區(qū)塊的容量的數(shù)據(jù) 為單位與存儲器系統(tǒng)介接。舉例來說,通過由控制器映射為組成元區(qū)塊的區(qū)塊的物理區(qū) 塊編號(PBN)的邏輯區(qū)塊地址(LBA)來識別圖6的此種邏輯數(shù)據(jù)區(qū)塊61。元區(qū)塊的 所有擦除區(qū)塊被一起擦除,且來自每一擦除區(qū)塊的頁優(yōu)選同時編程和讀取??蓪⒃獏^(qū)塊 視為擦除區(qū)塊以此方式鏈接的系統(tǒng)中的擦除單位。在有些具有元區(qū)塊架構的存儲器陣列 中,頁可能僅與元區(qū)塊的其它頁并行編程。在這些存儲器陣列中,元頁是元區(qū)塊的最小 編程單位,其由來自元區(qū)塊的每一平面的頁組成。有許多不同的存儲器陣列架構、配置和特定單元結構可用來構建以上關于圖2-6描述的存儲器。圖7中展示NAND類型的存儲器陣列的一個擦除區(qū)塊。串聯(lián)連接的存儲器單元的大量以列定向的串連接在電壓Vss的共同源極65與位線BI0-BLN中的一者之間,所述位線BL0-BLN又與含有地址解碼器、驅(qū)動器、讀出放大器等類似物的電路67連接。具體來說, 一個此種串含有電荷存儲晶體管70、 71……72和74,所述電荷存儲晶體管
在串的相對末端處的選擇晶體管77與79之間串聯(lián)連接。在此實例中,每一串含有16 個存儲晶體管,但其它數(shù)目也是可能的。字線WL0-WL15延伸越過每一串的一個存儲 晶體管,且連接到含有地址解碼器和字線的電壓源驅(qū)動器的電路81。線83和84上的電 壓一起控制擦除區(qū)塊中的所有串通過其選擇晶體管與電壓源65和/或位線BL0-BLN的連 接。數(shù)據(jù)和地址來自存儲器控制器。擦除區(qū)塊的每一行電荷存儲晶體管(存儲器單元)可形成一起編程和讀取的頁。將 適當?shù)碾妷菏┘拥酱朔N頁的字線(WL)以便對其數(shù)據(jù)進行編程或讀取,同時對施加到 剩余字線的電壓進行選擇以使得其各自的存儲晶體管導通。在編程或讀取一行(頁)存 儲晶體管的過程中,由于越過所有串并施加到其字線的電壓的緣故,可擾亂未選中的行上的先前存儲的電荷電平。這可能會阻止在已對特定行中的單元編程之后對所述行的其 它單元進行編程。多狀態(tài)快閃存儲器對擾亂特別敏感。邏輯狀態(tài)數(shù)目的增加會導致個別 狀態(tài)的閾值電壓范圍較窄,使得電荷電平的較小變化可能會導致邏輯狀態(tài)產(chǎn)生變化。由 于通過使用單元中增加數(shù)目的邏輯狀態(tài)來提高數(shù)據(jù)存儲密度,所以對于擾亂的敏感度也 會增加。因此,或許不可能在一行中的一些單元被編程之后在不破壞已編程的單元中的 數(shù)據(jù)的情況下將數(shù)據(jù)編程到所述行的其它單元中。因此,來自后續(xù)的對相鄰單元的編程 的擾亂可界定頁的大小。如果行中的單元可能不在同一行中的其它單元被編程之后編 程,那么行便界定最小編程單位。因此, 一行單元可能含有一個數(shù)據(jù)頁。在此種存儲器 陣列中,如果行中的單元群組經(jīng)編程,那么即使行中有些單元不含有數(shù)據(jù)也將所述行視 為經(jīng)過編程。如果在存儲器陣列中存在隨后不能編程的空單元,那么將是低效的。經(jīng)過編程的頁中的空單元可能源于存儲器系統(tǒng)一次接收的扇區(qū)數(shù)目較小。舉例來 說,主機可能會向存儲器系統(tǒng)發(fā)送單個扇區(qū)。所述扇區(qū)被存儲在快閃存儲器陣列的頁中。 扇區(qū)阻止對該頁的后續(xù)寫入。在頁保存多個扇區(qū)的存儲器系統(tǒng)中,這可能是低效的。舉 例來說,在一頁包括四個數(shù)據(jù)扇區(qū)的情況下,在向頁寫入單個扇區(qū)時使存儲器陣列的可 保存三個數(shù)據(jù)扇區(qū)的部分保持為空。當頁的大小增加時,來自此部分被填充的頁的浪費 空間增加。元頁可能含有大量扇區(qū),因此在使用元區(qū)塊的存儲器陣列中存儲可能特別低 效。在接收到兩個或兩個以上扇區(qū)但接收到的扇區(qū)數(shù)目小于頁中的扇區(qū)數(shù)目的情況下, 問題是相似的??蓪⒋瞬糠猪摯鎯υ诟咚贂捍鎱^(qū)塊中,直到接收到整個數(shù)據(jù)頁為止。在寫入部分被填充的數(shù)據(jù)頁之后,可對存儲的數(shù)據(jù)執(zhí)行合并,以將來自部分被填充的頁的數(shù)據(jù)組合成充滿的頁。這可作為周期性執(zhí)行的垃圾收集的一部分來進行。此種數(shù)據(jù)合并將數(shù)據(jù)從部分被填充的頁拷貝到不同擦除區(qū)塊中的充滿頁。接著,將保存部分被填充的頁的擦除區(qū)塊標記為過時,使其可被擦除并再使用。此種操作可能會占用可用于
其它功能的系統(tǒng)資源。對存儲器的單個扇區(qū)寫入的實例圖8展示在一頁由四個數(shù)據(jù)扇區(qū)組成的存儲器系統(tǒng)中的存儲器陣列的擦除區(qū)塊(指 定的活動區(qū)塊800)。頁0-5展示為每一頁在水平方向上延伸。每一頁可含有四個數(shù)據(jù)扇 區(qū),其指定為扇區(qū)0、扇區(qū)1、扇區(qū)2和扇區(qū)3。主機將單個數(shù)據(jù)扇區(qū)發(fā)送到存儲器系統(tǒng), 所述數(shù)據(jù)扇區(qū)存儲在活動區(qū)塊800中。接收扇區(qū)X并將其存儲為頁0的扇區(qū)0。這阻止 對頁O進行后續(xù)編程。因此,頁0的扇區(qū)1、 2和3未被編程且保持為空(擦除的)。在 頁O被編程之后,接收扇區(qū)X+1。將扇區(qū)X+1存儲為頁1的扇區(qū)O。頁1的扇區(qū)1、 2 和3保持為空。在扇區(qū)X+1被編程之后,接收扇區(qū)X+2。將扇區(qū)X+2存儲為頁2的 扇區(qū)O。頁2的扇區(qū)1、 2和3保持為空。在扇區(qū)X+2被編程之后,接收扇區(qū)X+3。 將扇區(qū)X+3存儲為頁3的扇區(qū)0。頁3的扇區(qū)1、 2和3保持為空。圖9展示在擦除區(qū)塊(指定的活動區(qū)塊900)中存儲扇區(qū)的替代方式。此處,代替 一頁僅存儲一個扇區(qū),而是將先前存儲的扇區(qū)拷貝到其與更近時候接收到的扇區(qū)一起被 存儲的同一擦除區(qū)塊中的新的頁中。將扇區(qū)X與之前一樣存儲為頁O的扇區(qū)O。接著, 接收X+1并將其與從頁O拷貝到頁1的扇區(qū)0的扇區(qū)X—起存儲為頁1的扇區(qū)1。因 此,扇區(qū)X和扇區(qū)X+l均存儲在頁1中。隨后,接收扇區(qū)X+2,并將其存儲為頁2 的扇區(qū)2。將扇區(qū)X存儲為頁2的扇區(qū)0,且將扇區(qū)X+l存儲為頁2的扇區(qū)1。因此, 將扇區(qū)X、 X+l和X+2—起存儲在頁2中。隨后,接收扇區(qū)X+3,并將其存儲為頁3 的扇區(qū)3。將扇區(qū)X存儲為扇區(qū)O,將扇區(qū)X+l存儲為扇區(qū)1,并將扇區(qū)X+2存儲為 頁3的扇區(qū)2。因此,將四個數(shù)據(jù)扇區(qū)存儲在頁3中,使得頁3中充滿了數(shù)據(jù)。在圖8或圖9中展示的對扇區(qū)的存儲之后,可合并數(shù)據(jù)??蓪D8或圖9的扇區(qū)X、 X+l、 X + 2或X+3拷貝到新擦除區(qū)塊的單個頁。這可在便于進行垃圾收集時作為垃圾 收集的一部分來進行。圖10A展示存儲在指定的活動區(qū)塊1000的頁0中的扇區(qū)X、 X + 1、 X+2禾QX+3中。擦除區(qū)塊1000的頁0中充滿了數(shù)據(jù)。當活動區(qū)塊1100的頁0 用扇區(qū)X、 X+l、 X + 2和X + 3來編程時,可從作為其拷貝來源的擦除區(qū)塊中擦除扇區(qū) X、 X+l、 X+2和X+3。當在垃圾收集期間合并活動區(qū)塊800、 900的內(nèi)容時,可擦除 活動區(qū)塊800、 900并使其可用于存儲新數(shù)據(jù)。在對頁O進行編程之后,接收扇區(qū)X+4并將其存儲為活動區(qū)塊1000的頁1的扇區(qū)0。接著,各自接收扇區(qū)X+5、 X+6和X+7并將其分別存儲在頁2、 3和4中??赡茉俅涡枰喜⑸葏^(qū)以將扇區(qū)X + 4、 X+5、 X+6和X+7合并到單個頁。對扇區(qū)的此種合并會花費時間,在其期間可能不會寫入主機數(shù)據(jù)。在第二次將數(shù)據(jù)合并到另一擦除區(qū)
塊之后,將作為其拷貝來源的擦除區(qū)塊1000標記為過時的且隨后可將其擦除。圖10B展示在第二次垃圾收集操作將來自前一活動區(qū)塊1000的數(shù)據(jù)重新定位之后 的活動區(qū)塊1010。將扇區(qū)X+4到X+7合并到活動區(qū)塊1010的單個頁(頁l)中。隨 后,可接收到更多的扇區(qū),且可將其存儲在活動區(qū)塊1010中。如果所述扇區(qū)是以單個 扇區(qū)的形式接收的,則可如同之前一般將單個扇區(qū)存儲在頁中。圖10C展示將額外扇區(qū)X+8到X+11存儲在頁2-5中的活動區(qū)塊1010。可能在此 點需要另一垃圾收集操作以合并扇區(qū)X+8到X+U。因此,為了有效地將從主機接收 的扇區(qū)存儲作為單個扇區(qū),此方法使用多次垃圾收集操作,其需要將數(shù)據(jù)從一個擦除區(qū) 塊轉(zhuǎn)移到另一擦除區(qū)塊,并擦除第一擦除區(qū)塊。在較大的擦除區(qū)塊中,垃圾收集操作的 數(shù)目較大。在使用元區(qū)塊的存儲器系統(tǒng)中,可將擦除區(qū)塊群組鏈接在一起,使得其可一 起擦除和編程。數(shù)據(jù)可被編程在含有許多扇區(qū)的元頁中。因此,由于必需量的垃圾收集 的緣故,存儲單個扇區(qū)變得非常低效。圖IIA展示存儲數(shù)據(jù)的替代方法。圖IIA展示存儲器陣列的兩個擦除區(qū)塊。活動區(qū) 塊1110是其中數(shù)據(jù)可經(jīng)編程用于長期存儲的擦除區(qū)塊。高速暫存區(qū)塊1120是其中數(shù)據(jù) 可經(jīng)編程用于短期存儲的擦除區(qū)塊。當接收到少量扇區(qū)時,首先將其存儲在高速暫存區(qū) 塊1120中。扇區(qū)繼續(xù)被存儲在高速暫存區(qū)塊1120中,直到接收到足夠充滿一頁數(shù)據(jù)的 扇區(qū)為止。接著將這些扇區(qū)拷貝到活動區(qū)塊1110的一頁。接收扇區(qū)X,并將其如同之前一般編程為高速暫存區(qū)塊1120中的頁0的扇區(qū)0。隨后,接收扇區(qū)X+1,并將其與拷貝到頁1的扇區(qū)0的扇區(qū)X—起存儲為高速暫存區(qū)塊1120的頁1的扇區(qū)1。隨后,接收扇區(qū)X+2,并將其存儲為高速暫存區(qū)塊1120的頁2的扇區(qū)2,其中扇區(qū)X和X+l分別存儲為頁2的扇區(qū)0和扇區(qū)1。在將扇區(qū)X+2存儲在高速暫存區(qū)塊1120之后,接收扇區(qū)X+3。在此點處,將扇區(qū)X、 X+l、 X+2和X+ 3寫入到活動區(qū)塊1110的頁0。這四個扇區(qū)形成一整個數(shù)據(jù)頁。因此,扇區(qū)X、 X+l、X+2禾H X+3有效地存儲在活動區(qū)塊1110的頁0中。隨后,各自接收扇區(qū)X+4、 X+5、X + 6和X+7。將扇區(qū)X+4、 X+5和X+6存儲在高速暫存區(qū)塊1120的頁3、 4和5中,并在接收到扇區(qū)X+7時將以上三個扇區(qū)拷貝到活動區(qū)塊1110的頁1的扇區(qū)0、 1和2中。將扇區(qū)X+7直接編程到活動區(qū)塊1110的頁1的扇區(qū)3。在此點處,高速暫存區(qū)塊1120沒有可供存儲數(shù)據(jù)用的頁,且可指定為準備擦除(過時)。可將新的擦除區(qū)塊指定為用于將接收的下一扇區(qū)或下一扇區(qū)群組的高速暫存區(qū)塊。雖然此實例展示正接收單個扇區(qū),但此方法也可用于扇區(qū)群組,其中所述扇區(qū)群組具有的扇區(qū)少于一頁中的扇區(qū)的數(shù)目。此外,雖然以上實例展示以最大并行度將數(shù)據(jù)從高速暫存區(qū)塊寫入活動區(qū)塊,
但可以小于最大并行度的并行度來進行此寫入且仍然提供效率益處。因此,以一種并行 程度將扇區(qū)寫入高速暫存區(qū)塊,且以較高的并行程度將其寫入另一區(qū)塊,以使得數(shù)據(jù)可 更密集地填塞且需要較低頻率的垃圾收集。也可在使用元區(qū)塊的存儲器陣列中使用高速暫存區(qū)塊。舉例來說,圖IIB展示兩個 元區(qū)塊活動區(qū)塊1130和高速暫存區(qū)塊1140?;顒訁^(qū)塊1130和高速暫存區(qū)塊1140均 具有四個平面,表示為平面0-3。每一平面的寬度為一個扇區(qū),因而區(qū)塊1130或1140 的元頁中存儲四個扇區(qū)。這兩個區(qū)塊均具有6個元頁,表示為元頁0-5。用于有效地存 儲數(shù)據(jù)的技術與以上關于擦除區(qū)塊所描述的相同。在高速暫存區(qū)塊1140中累積扇區(qū), 直到有整個數(shù)據(jù)元頁可用為止,此時將整個元頁編程到活動區(qū)塊1130。舉例來說,當接 收到扇區(qū)X+3時,將整個元頁(扇區(qū)X、 X+l、 X+2和X+3)編程到活動區(qū)塊1130 的元頁0。元頁可具有較大數(shù)目的扇區(qū),因為元區(qū)塊可具有許多平面且平面的寬度可為 若干頁。上述技術對于此種較大元頁特別有價值,因為不這樣的話存儲器陣列中的大量 空間將被浪費。如關于圖IIA和IIB所示,本發(fā)明的關于使用擦除區(qū)塊架構的實例所描 述的方面也可應用于元區(qū)塊架構且反之亦然。依據(jù)存儲器陣列的配置,術語"區(qū)塊"可 指示擦除區(qū)塊或元區(qū)塊。在任一情況下,區(qū)塊是在該配置中使用的擦除單位。類似地, 術語"頁"可指代單個擦除區(qū)塊內(nèi)的頁或元區(qū)塊的元頁。在任一情況下,頁均是所述配 置的編程單位。在接收到多于一頁中的扇區(qū)數(shù)目的扇區(qū)群組的情況下,可將扇區(qū)直接編程到存儲器 陣列的活動區(qū)塊,而無需首先將其存儲在高速暫存區(qū)塊中。因此,將整頁數(shù)據(jù)以較高的 并行程度直接編程到活動區(qū)塊,同時將部分數(shù)據(jù)頁以較低的并行程度編程到高速暫存區(qū) 塊,直到其可作為整頁程序的一部分寫入活動區(qū)塊。控制器可確定特定扇區(qū)或扇區(qū)群組 的目的地。在將扇區(qū)群組寫入活動區(qū)塊既包含部分頁寫入又包含整頁寫入的情況下,可 將整個頁寫入活動區(qū)塊,且可將部分頁寫入高速暫存區(qū)塊。圖12A展示其中來自主機的扇區(qū)在存儲于高速暫存區(qū)塊中時經(jīng)受更新的另一實例。接收到第一扇區(qū)XO,并將其存儲在高速暫存區(qū)塊1250的頁0中。此實例中的頁存儲四個數(shù)據(jù)扇區(qū)。接著接收XO的替代,其展示為X1。此實例中的扇區(qū)根據(jù)其邏輯地址進行編號,并用下標指示所述扇區(qū)是否為更新,且如果是的話,則指示是哪個版本。因此,扇區(qū)XI是具有邏輯地址X的扇區(qū)且為此扇區(qū)的第一更新版本。其是與X0具有相同邏輯地址但可能含有反映某一更新信息的不同數(shù)據(jù)的數(shù)據(jù)扇區(qū)。將扇區(qū)XI寫入高速暫存區(qū)塊1250的頁1。控制器保持對當前扇區(qū)和過時扇區(qū)的跟蹤。在高速暫存區(qū)塊1250中,扇區(qū)的具有特定邏輯地址的最近寫入拷貝是當前版本。任何其它版本均是過時的。因此, 當對X1進行編程時,X0變成過時。在接收到扇區(qū)X1之后,接收扇區(qū)(X+l) 0。這 是邏輯上接續(xù)扇區(qū)XI之后的扇區(qū)。扇區(qū)XI和(X+l) O均寫入頁2。隨后,由(X+l) l來代替扇區(qū)(X+l) 0。這是代替扇區(qū)(X+l) O的扇區(qū)(X+l) o的更新版本。將扇 區(qū)(X+l) 1與扇區(qū)X1—起寫入頁3。隨后,接收(X+2) 0,且將其寫入頁4。隨后 由(X+2) l來代替扇區(qū)(X+2) 0,且與扇區(qū)X1和扇區(qū)(X+l) l—起寫入頁5。隨 后,接收扇區(qū)(X+3) 0。因此,數(shù)據(jù)頁(扇區(qū)X1、 (X+l) 1、 (X + 2) l禾卩(X + 3) 0)可用。將X1、 (X+l) 1、 (X+2) l和(X+3) 0寫入被指定為活動區(qū)塊1252的區(qū) 塊。將扇區(qū)X1、 (X+l) 1、 (X+2) l和(X+3) 0以整頁寫入的并行度寫入活動區(qū)塊 1252。這在此種情況下是最大可能的并行度。因此,即使以較低的并行程度將扇區(qū)X1、(X+l) 1、 (X+2) 1和(X+3) 0寫入高速暫存區(qū)塊1250,隨后仍以較高的并行程度 將其寫入活動區(qū)塊1252。這意味著扇區(qū)X1、 (X+l) 1、 (X + 2) l和(X + 3)0更有效 地存儲在活動區(qū)塊中。更有效的存儲可導致必需的垃圾收集較不頻繁,因此改進性能。在圖12B中提供替代實例。此實例與圖12A中展示的相似,但此處扇區(qū)(X + 3) o 在拷貝到活動區(qū)塊1252之前存儲在高速暫存區(qū)塊1250中。這允許在將扇區(qū)(X + 3) 0 寫入活動區(qū)塊1252之前對其進行更新。圖中展示通過由扇區(qū)(X+3) i替代來更新扇區(qū)(X+3) o??蓪⒊錆M的數(shù)據(jù)頁(扇區(qū)Xt、 (X+l) h (X+2) i和(X+3),)保存在 高速暫存區(qū)塊1250中,使其準備更新,直到發(fā)生某一觸發(fā)事件為止。在此情況下,接 收扇區(qū)(X+4) o,從而提供觸發(fā)事件。在此點處,以最大并行度向活動區(qū)塊1252寫入 扇區(qū)X卜(X+l)卜(X+2) !和(X+3)"將扇區(qū)(X+4) o寫入高速暫存區(qū)塊1250 中的下一可用頁(頁8)。圖12C展示使用高速暫存區(qū)塊1250更新數(shù)據(jù)的另一實例。將數(shù)據(jù)扇區(qū)Xo到(X+ 15) o存儲在原始區(qū)塊1254中。主機發(fā)送扇區(qū)(X+6) n其為與扇區(qū)(X+6)o具有相 同邏輯地址的更新的扇區(qū)。因此,扇區(qū)(X+6),將代替(X + 6) o。為了代替扇區(qū)(X + 6) G,將原始區(qū)塊1254的頁1 (含有扇區(qū)((X+4) o)到(X+7) Q)與扇區(qū)(X+6) j組合,并將所述組合寫入高速暫存區(qū)塊1250的頁0。組合這些扇區(qū)可能發(fā)生在隨機存 取存儲器(例如控制器RAM25)或可在連接到存儲器陣列的存儲器寄存器中進行。更 新的頁數(shù)據(jù)可保持在高速暫存區(qū)塊1250中,而無需將其寫入到活動區(qū)塊并持續(xù)一段時 間。在從主機接收后續(xù)的更新的扇區(qū)(X+5) !的情況下,可通過將扇區(qū)(X+5) i連 同拷貝的扇區(qū)(X+4) o、 (X+6) !和(X+7) o—起寫入高速暫存區(qū)塊1250的另一頁(在此情況下為頁1)來在高速暫存區(qū)塊1250中更新數(shù)據(jù)??梢源朔绞綀?zhí)行對高速暫存區(qū)塊1250中的數(shù)據(jù)頁的多次更新。通過代替更新的數(shù)據(jù)扇區(qū)并將未改變的數(shù)據(jù)扇區(qū)拷
貝在高速暫存區(qū)塊1250的新的頁中來執(zhí)行更新??截惖纳葏^(qū)在同一平面內(nèi)拷貝,以便 可有效地執(zhí)行拷貝。隨后,可將更新的數(shù)據(jù)頁拷貝到存儲器陣列中的活動區(qū)塊1252???以此方式執(zhí)行非循序的更新,而無需混亂的更新區(qū)塊。舉例來說,在以上實例中以非循 序的方式接收更新的扇區(qū)(X + 6) !和(X+5)。但活動區(qū)塊1252是循序的。可以此 方式在高速暫存區(qū)塊中同時保存和更新多個數(shù)據(jù)頁。當不再預期更新頁時,可將該頁拷 貝到活動區(qū)塊。多電平單元編程的實例特定類型的存儲器可通過將浮動柵極存儲器單元的閾值電壓范圍劃分成兩個以上 電平,而在存儲器陣列的每一單元中存儲一個以上數(shù)據(jù)位。圖13展示可如何對此種多 電平單元(MLC)存儲器編程以提供表示不同邏輯狀態(tài)的多個閾值電壓的實例。圖中展 示四個不同的閾值電壓,標記為A、 B、 C和D。將多個單元編程為每一電壓。圖13代 表單元狀態(tài)的分布,其中在垂直軸上表示單元數(shù)目。每一閾值電壓A、 B、 C和D代表 不同的邏輯狀態(tài)。所述四種狀態(tài)代表兩個數(shù)據(jù)位,如所示的, 一個位來自下部數(shù)據(jù)頁, 且一個位來自上部數(shù)據(jù)頁。在有些實例中,可首先對下部頁編程。在對下部頁編程之后, 單元處于狀態(tài)A或B。隨后,可對上部頁編程,使得單元保持為狀態(tài)A或B (對于上部 位=1)或修改成狀態(tài)C或D (對于下部位=0)。因為這四種狀態(tài)每一者均具有相對窄 的電壓窗,所以MLC存儲器特別容易因閾值電壓的相對小的變化而遭受數(shù)據(jù)損壞。在 有些實例中,將上部和下部頁同時編程可能是有利的。這可能會有助于減小因?qū)ο噜弳?元的編程而導致一單元中的數(shù)據(jù)損壞,例如可能在對上部頁數(shù)據(jù)編程期間會出現(xiàn)的數(shù)據(jù) 損壞。圖14展示可如何使用高速暫存區(qū)塊1460來在MLC存儲器中減少數(shù)據(jù)損壞的實例。圖14將活動區(qū)塊1462和高速暫存區(qū)塊1460兩者均展示為MLC存儲器的區(qū)塊。所述兩個區(qū)塊的頁均經(jīng)過編號并展示為"上部"或"下部",這取決于使用哪些閾值電壓狀態(tài)來存儲頁的數(shù)據(jù)位。在此實例中,存儲器首先接收扇區(qū)X到X+3,并將這些扇區(qū)存儲在高速暫存區(qū)塊1460的下部頁0中。隨后,存儲器接收扇區(qū)X+4到X+7。此時,下部頁(扇區(qū)X到X+3)和上部頁(X+4到X+7)被同時寫入活動區(qū)塊1462。這可避免活動區(qū)塊1462的下部頁O在活動區(qū)塊1462的上部頁O的編程期間損壞。通常,對上部和下部頁一起編程所必需的時間與僅單獨對上部頁編程所必需的時間相同,因而此系統(tǒng)不帶有時間損失。在用扇區(qū)X到X+7對活動區(qū)塊1462的下部頁O和上部頁O編程之后,接收扇區(qū)X+8到X+11并將其編程到高速暫存區(qū)塊1460的上部頁0。當接收到扇區(qū)X+12到X+15時,將扇區(qū)X+8到X+11和扇區(qū)X+12到X+15并行編程到活
動區(qū)塊的上部頁1和下部頁1。如圖所示,對后續(xù)的數(shù)據(jù)扇區(qū)繼續(xù)這一系統(tǒng)。因此,將 數(shù)據(jù)頁寫入高速暫存區(qū)塊1460,并隨后將此頁與額外頁一起寫入活動區(qū)塊1462,作為 存儲器單元的同一群組的上部和下部頁。以頁的平行度對高速暫存區(qū)塊1460進行編程, 同時以兩倍于頁的平行度對活動區(qū)塊1462進行編程。在替代實施例中,可在不同時間將上部和下部頁寫入活動區(qū)塊,但將在高速暫存區(qū) 塊中保留下部頁的拷貝,以防活動區(qū)塊中的下部頁在上部頁的編程期間變?yōu)閾p壞。在圖 14中,可接收扇區(qū)X到X+3并將其同時編程到活動區(qū)塊1462的下部頁O和高速暫存 區(qū)塊1460的下部頁0。隨后,接收扇區(qū)X + 4到X + 7,并將其編程到活動區(qū)塊1462的 上部頁O。不在高速暫存區(qū)塊1460中保存扇區(qū)X+4到X+7。如果在向活動區(qū)塊1462 的上部頁O編程X+4到X+7期間存在任何問題(例如失去電力),那么活動區(qū)塊1462 的下部頁0中的數(shù)據(jù)可能會受到損壞。也就是說,正被編程的單元的阛值電壓可經(jīng)修改, 使其不再處于代表下部頁的數(shù)據(jù)的狀態(tài),但尚未被完全編程而成為代表上部頁的數(shù)據(jù)的 狀態(tài)。舉例來說,正從圖13中的狀態(tài)A編程為狀態(tài)D的單元在編程停止時可能處于狀 態(tài)B或C。如果數(shù)據(jù)以此方式受到損壞,那么正被寫入的上部數(shù)據(jù)頁可從其拷貝來源的 位置進行恢復。然而,在許多情況下,不存在下部頁的其它拷貝。然而,在高速暫存區(qū) 塊1460中保留下部頁的拷貝,直到完成對上部頁的編程為止。因此,存在下部頁的未 受損壞的拷貝,且可使用所述拷貝來恢復下部頁的數(shù)據(jù)。多個文件的實例 、可將來自一個以上主機數(shù)據(jù)文件的數(shù)據(jù)存儲在單個區(qū)塊中??赡茉陧搩?nèi)發(fā)生文件之 間的中斷,使得頁的一部分含有來自一個文件的數(shù)據(jù),且頁的一部分含有來自另一文件 的數(shù)據(jù)。圖15展示原始區(qū)塊1570的頁0到頁i-l含有來自第一文件(文件l)的數(shù)據(jù)且 頁i+l到頁n-l含有來自第二文件(文件2)的數(shù)據(jù)的實例。頁i含有來自文件l的扇 區(qū)(i*4)禾卩(i*4) +1以及來自文件2的扇區(qū)(i*4) +2和(i*4) +3。將文件2的扇區(qū) 加上陰影,以說明存在來自兩個文件的扇區(qū)。圖15展示更新到新區(qū)塊1572的文件2。新區(qū)塊1572的第一頁(頁0)與原始區(qū)塊1570的頁i的內(nèi)容一起寫入。因此,新區(qū)塊1572的頁0含有來自文件2和文件1兩者的扇區(qū)。來自文件1的扇區(qū)(i*4)和(i*4) +1在此點處未被更新,但可被拷貝,以便編程充滿的數(shù)據(jù)頁。更新的文件2的其余部分被編程到新區(qū)塊1572的頁1到i-l。隨后,更新文件1。扇區(qū)O到扇區(qū)(i*4) -l存儲在頁i到頁n-l中。然而,扇區(qū)(i*4)和(i*4)+1也是文件1的一部分且必須被更新。因為新區(qū)塊1572在此點處是滿的,所以將更新的扇區(qū)(i*4)和(i*4) +1編程到另一區(qū)塊。隨后,可將扇區(qū)(i*4)和(i*4) +1以及新 區(qū)塊1572中的扇區(qū)作為垃圾收集操作的一部分合并到單個區(qū)塊。然而,這會花費時間 和系統(tǒng)資源,且一般而言是不合需要的。圖16展示用于更新圖15的含有來自兩個不同文件的扇區(qū)的原始區(qū)塊1570的扇區(qū) 的替代技術。這種技術使用高速暫存區(qū)塊1674來存儲更新的扇區(qū),直到可以系統(tǒng)的最 大并行度將其作為充滿的更新的頁的一部分寫入時為止。當更新文件2時,將更新的扇 區(qū)(i*4) +2和(i*4) +3寫入高速暫存區(qū)塊1674。此處,將其寫入高速暫存區(qū)塊1674 的頁0,且不將任何數(shù)據(jù)寫入頁的其余部分,使得使用較低的并行程度。文件2的剩余 扇區(qū)(扇區(qū)(i*4)十4到N-1)拷貝到新區(qū)塊1676的頁0到n-i。使用最大并行度將所有 這些扇區(qū)以整頁寫入而寫入。隨后,更新文件l。用最大并行度將扇區(qū)O到(i*4) -l編 程到頁n-i+l到n-2中。接著,與拷貝扇區(qū)(i*4) +2和(i*4) +3并行地將文件1的扇 區(qū)(i*4)和(i*4) +1寫入新區(qū)塊1676的頁n-l。因此,原先保存在原始區(qū)塊1570中的 所有扇區(qū)的更新拷貝現(xiàn)在保存在新區(qū)塊1676中,且在新區(qū)塊1676中不保存任何過時數(shù) 據(jù)。 一般而言無需對區(qū)塊(例如新區(qū)塊1676)進行垃圾收集。用最大的并行度編程新區(qū) 塊1676的每一頁,以在區(qū)塊中實現(xiàn)最大的數(shù)據(jù)密度。高速暫存區(qū)塊1674中的扇區(qū)(P4) +2和(i*4) +3可在此點處標記為過時的。然而,高速暫存區(qū)塊1674無需垃圾收集操 作即可用于進一步的操作,因為高速暫存區(qū)塊在常規(guī)上既含有當前數(shù)據(jù)又含有過時數(shù) 據(jù)。存儲非循序數(shù)據(jù)扇區(qū)的實例在先前的一些實例中,用低于寫入整頁的并行程度的并行程度將數(shù)據(jù)扇區(qū)寫入高速 暫存區(qū)塊。在此種實例中,高速暫存區(qū)塊的正被寫入的頁中的剩余空間可能會保持為空 的,因為稍后不可能在不擾亂已經(jīng)存儲的數(shù)據(jù)的情況下對其編程。在有些情況下,可使 用這個原本為空的空間和原本未被使用的編程帶寬來將無關數(shù)據(jù)存儲在同一頁中。舉例 來說,在存儲器系統(tǒng)接收少于一頁的單個扇區(qū)或扇區(qū)群組中的主機數(shù)據(jù)的情況下,這些 主機數(shù)據(jù)扇區(qū)可能會存儲在高速暫存區(qū)塊中,處于還保存無關數(shù)據(jù)(例如無關的主機數(shù) 據(jù)或控制數(shù)據(jù)扇區(qū))的頁中。類似地,來自文件開頭的正被存儲在高速暫存區(qū)塊中以供 稍后作為整頁的一部分而存儲的扇區(qū)可能有額外的扇區(qū)存儲在同一高速暫存區(qū)塊頁中, 所述額外扇區(qū)在邏輯上是不相關的。圖17展示扇區(qū)X、 X+l和X+2與先前實例中一樣存儲在高速暫存區(qū)塊1780中的實例。然而,此處保存扇區(qū)X、 X+l和X+2的高速暫存區(qū)塊的頁中的剩余空間用來存儲其它數(shù)據(jù)。扇區(qū)Y、 Y+l和Y+2與扇區(qū)X—起存儲在頁0中。扇區(qū)Y、 Y+1禾口Y 能在邏輯上與扇區(qū)X、 X+l和X + 2無關。其可能來自另一主機數(shù)據(jù)文件或來自 同一文件內(nèi)的另一扇區(qū)群集。扇區(qū)Y、 Y+l和Y + 2可能與扇區(qū)X、 X+l和X + 2是非 循序關系,且可能在邏輯地址空間中分離。類似地,扇區(qū)Z和Z+1與扇區(qū)X和X+1 一起存儲在頁1中。扇區(qū)Z和Z+l可能在邏輯上與扇區(qū)X、 X+l和X+2以及扇區(qū)Y、 Y+l和Y+2均無關。隨后,當接收到扇區(qū)X+3時,將扇區(qū)X、 X+l、 X+2和X+3 隨后寫入另一區(qū)塊的頁。當接收到扇區(qū)Y + 3時,將扇區(qū)Y、 Y+l、 Y+2和Y+3寫入 另一區(qū)塊的頁。因此,可將無關的數(shù)據(jù)存儲在高速暫存區(qū)塊的同一頁中以更加有效地使 用可用資源。圖18展示存儲在高速暫存區(qū)塊1890中的無關數(shù)據(jù)的另一實例。此處,扇區(qū)X、 X + 1和X + 2如同之前一般存儲和更新。然而,此處扇區(qū)Y也是并行存儲和更新的。更 新的扇區(qū)由指示存儲哪個版本的下標表示。舉例來說,扇區(qū)Xo是扇區(qū)X的原始版本, 而X,是扇區(qū)X的第一更新版本。扇區(qū)Y可能是頻繁更新的主機數(shù)據(jù)扇區(qū)或控制數(shù)據(jù)扇 區(qū)。在有些系統(tǒng)中,在存儲主機數(shù)據(jù)時對例如FAT信息的控制數(shù)據(jù)進行更新。在接收到 少量主機數(shù)據(jù)的情況下,更新高速暫存區(qū)塊1890中的控制數(shù)據(jù)可能是有利的。在僅更 新單個控制數(shù)據(jù)扇區(qū)的情況下,這可能會避免更新控制結構。在稍后某一時間,可使用 來自高速暫存區(qū)塊的控制數(shù)據(jù)來更新控制數(shù)據(jù)結構。高速暫存區(qū)塊管理高速暫存區(qū)塊可為存儲器陣列中的指定區(qū)塊??蓪⒐潭ǖ奈锢砦恢眠x作高速暫存區(qū) 塊。然而,這可能會導致存儲器陣列不均勻地磨損。或者,指定區(qū)塊可不時地變化,從 而當高速暫存區(qū)塊變成充滿了過時數(shù)據(jù)時,將另一擦除區(qū)塊選作高速暫存區(qū)塊。在此情 況下,存儲器控制器所使用的數(shù)據(jù)結構可識別高速暫存區(qū)塊的位置或者可對指定的高速 暫存區(qū)塊進行標記,從而如果控制器掃描到存儲器陣列的擦除區(qū)塊,其可確定哪個擦除 區(qū)塊是高速暫存區(qū)塊。可使用扇區(qū)來標記高速暫存區(qū)塊,以將其識別為高速暫存區(qū)塊。 舉例來說,圖19展示將扇區(qū)2110標記為高速暫存區(qū)塊2100的第一扇區(qū)。當為卡加電 時,可掃描存儲器陣列(或存儲器陣列的一部分)的擦除區(qū)塊,以確定高速暫存區(qū)塊的 位置。在圖19的實例中,讀取每一擦除區(qū)塊的第一扇區(qū)以確定其是否為指示高速暫存 區(qū)塊的標記扇區(qū)??蓪?shù)據(jù)作為數(shù)據(jù)群組寫入高速暫存區(qū)塊。數(shù)據(jù)群組是從主機接收的邏輯上循序的扇區(qū)群組。當在高速暫存區(qū)塊中存儲數(shù)據(jù)群組時也寫入索引扇區(qū),其提供與存儲的數(shù)據(jù)群組相關的信息。數(shù)據(jù)群組的扇區(qū)的位置可存儲在索引扇區(qū)中??墒褂美鐖D19的高速暫存區(qū)塊2100的高速暫存區(qū)塊來存儲多個數(shù)據(jù)群組。圖20展示存儲一個數(shù)據(jù)群組的高速暫存2100。數(shù)據(jù)群組l由兩個扇區(qū)2220、 2221組成。這些扇區(qū)(標記扇區(qū)2110和 索引扇區(qū)2230)存儲在高速暫存2100中。索引扇區(qū)2230存儲與群組1相關的信息。 圖21展示圖20的在由兩個扇區(qū)2340、 2341組成的數(shù)據(jù)群組2經(jīng)過編程之后的高速暫存區(qū)塊2100。索引扇區(qū)2350是存儲與群組1和群組2相關的信息的新索引扇區(qū)。因此,索引扇區(qū)2230是過時的,因為索引扇區(qū)2350含有包含群組1的高速暫存區(qū)塊2100的數(shù)據(jù)群組的完整記錄。圖22展示圖21的在由扇區(qū)2460、 2461和2462組成的數(shù)據(jù)群組3經(jīng)過編程之后的高速暫存區(qū)塊2100。索引扇區(qū)2470是存儲與數(shù)據(jù)群組1、 2和3相關的信息的新索引扇區(qū)。索引扇區(qū)2470含有高速暫存區(qū)塊2100的數(shù)據(jù)的完整記錄,且因此使得索引扇區(qū)2350過時。圖23展示圖22的在從高速暫存區(qū)塊2100中讀取數(shù)據(jù)群組1和數(shù)據(jù)群組2并將其 作為單個頁寫入存儲器陣列的另一區(qū)塊中之后的高速暫存區(qū)塊2100。索引扇區(qū)2560存 儲與數(shù)據(jù)群組3相關的信息。高速暫存區(qū)塊2100中的數(shù)據(jù)群組1和數(shù)據(jù)群組2是過時 的且并不需要索引,因為其存儲在其它地方。因此,索引扇區(qū)2560含有高速暫存區(qū)塊 2100中的所有當前數(shù)據(jù)的完整記錄。當主機請求來自存儲器陣列的數(shù)據(jù)扇區(qū)時,控制器可能首先檢査所請求的扇區(qū)是否 位于高速暫存區(qū)塊中。如果扇區(qū)不在高速暫存區(qū)塊中,則可以常規(guī)方式搜尋扇區(qū)。因此, 高速暫存并不需要用以保持對存儲器陣列中的數(shù)據(jù)扇區(qū)位置的跟蹤的常規(guī)媒體管理有 任何變化。多流更新和索引圖24說明通過以常規(guī)方式在具有單扇區(qū)頁的更新區(qū)塊中存儲更新來更新邏輯群組 中的扇區(qū)的實例。將數(shù)據(jù)封裝到邏輯扇區(qū)中,并將其存儲在元區(qū)塊(也簡稱為"區(qū)塊") 中,其中元區(qū)塊的所有邏輯扇區(qū)可一起擦除。將數(shù)據(jù)逐頁記錄到區(qū)塊中,其中每一頁內(nèi) 的所有邏輯扇區(qū)可一起編程。所述實例展示單扇區(qū)頁,其中每一扇區(qū)的大小通常為約512 字節(jié)。在某一例子中,"原始"區(qū)塊10由扇區(qū)的整個邏輯群組組成,所述扇區(qū)的邏輯群 組根據(jù)預定次序存儲在所述區(qū)塊中,例如以上升的邏輯扇區(qū)編號排序。將此種區(qū)塊視為 完整區(qū)塊,其具有優(yōu)選成循序次序的邏輯群組的完整的所有扇區(qū)。此后,當主機將發(fā)送作為邏輯群組的這些邏輯扇區(qū)中的一些邏輯扇區(qū)的最新版本的更新時,將更新的扇區(qū)寫入專用于所述邏輯群組的更新區(qū)塊20。如果更新數(shù)據(jù)最終成預定次序,那么可將其循序記錄在更新區(qū)塊中。將更新區(qū)塊視為有可能成為完整區(qū)塊的循序的更新區(qū)塊。另一方面,當更新扇區(qū)不成循序次序時,將更新區(qū)塊視為非循序的,或"混亂"的。在此情況下,最終將從其它地方拷貝扇區(qū)的任何最新版本以形成新的完整 區(qū)塊。在主機寫入#1中,將更新的邏輯扇區(qū)LS10'發(fā)送到存儲器,并將其記錄在更新區(qū)塊 20的頁0中。在主機寫入弁2中,將更新的邏輯扇區(qū)LS11'發(fā)送到存儲器,并將其記錄 在更新區(qū)塊20中的下一可用位置頁1中。在主機寫入弁3中,將更新的邏輯扇區(qū)LS6' 和LS7'分別記錄在頁2和3中。最終,在主機寫入井4中,將更新的邏輯扇區(qū)L10"發(fā)送 到存儲器并將其記錄在更新區(qū)塊的頁4中。據(jù)說邏輯群組的更新將形成流(例如流l), 其中更新數(shù)據(jù)從主機流到更新區(qū)塊。 一般而言,如果有多個邏輯扇區(qū)版本分布在原始區(qū) 塊和更新區(qū)塊之間,那么只有最近寫入的版本將是有效版本,其使得所有先前版本成為 過時。舉例來說,圖24展示記錄在更新區(qū)塊的頁4中的LS10",其為最近寫入的版本, 且因此是用于邏輯扇區(qū)號IO的數(shù)據(jù)的當前有效扇區(qū)。先前版本(原始區(qū)塊IO中的LSIO 和更新區(qū)塊20中的LS10')是過時的。最終,更新區(qū)塊將關閉且更新區(qū)塊與原始區(qū)塊之間的有效扇區(qū)(邏輯扇區(qū)的最新版 本)將以預定次序合并以形成新的原始區(qū)塊。過時的原始區(qū)塊和更新區(qū)塊將被循環(huán)利用。圖25說明圖24中所示的應用于其中頁是多扇區(qū)的且可能是一次寫入的存儲器的相 同寫入序列。所述實例頁結構與圖24所示的頁結構的不同之處在于,現(xiàn)在每一頁含有 四個扇區(qū)而不是一個扇區(qū),且在特定實例中在擦除之后僅可一次寫入。為了與現(xiàn)有術語 體系保持一致,將存儲器裝置利用的最小編程單位稱為"物理頁",而將系統(tǒng)利用的最 小編程單位稱為"元頁",元頁可能是由多個物理頁組成的。為了方便起見,除非另有 規(guī)定,否則"元頁"與"頁"將可互換使用。如同之前一般,每一邏輯扇區(qū)起初按照上升邏輯編號次序循序存儲在原始區(qū)塊10 中。如果區(qū)塊具有四扇區(qū)頁結構,那么區(qū)塊將被進一步劃分成多頁,且每一邏輯扇區(qū)優(yōu) 選在每一頁中具有限定的頁偏移。舉例來說,頁P0中存儲有邏輯扇區(qū)LS0-LS3。因此, 將LSO存儲在頁的四個槽中的第一槽中,且將LS1存儲在第二槽中,等等。在四扇區(qū)頁 的實例中,如果區(qū)塊的第一邏輯扇區(qū)的編號為LS0,則將由MOD[(n+l),4]給出給定扇 區(qū)LSn的頁偏移。每當主機寫入存儲器時,其發(fā)出寫入若干數(shù)據(jù)單位(通常為邏輯扇區(qū))的寫入命令, 然后傳輸邏輯扇區(qū)本身。為了防止數(shù)據(jù)損失,主機與存儲器之間的協(xié)議使得下次主機寫 入將在將當前寫入數(shù)據(jù)成功地寫入存儲器之后才會開始。如早先所闡釋,在具有多扇區(qū)頁的存儲器架構中,優(yōu)選在頁中實施扇區(qū)對準,因為這會避免在垃圾收集期間需要重新對準。因此,從每一主機寫入接收到的扇區(qū)在對準時無必要填充更新區(qū)塊中的整數(shù)頁。這會導致編程部分填充的頁。部分填充的頁可能在主
機數(shù)據(jù)之前或之后具有間隙。也可能用現(xiàn)有的邏輯扇區(qū)對這些間隙進行預填補或后填 補,以便盡可能地維持循序次序。在下一主機寫入是下一邏輯扇區(qū)的情況下, 一般而言 優(yōu)選不對部分頁進行后填補。然而,在具有可一次寫入頁的存儲器架構的情況下, 一旦 已寫入部分頁,便不可能對所述部分頁的未填充部分進行重寫。在所述實例中,更新流(SPB)中的一個更新流中的有效頁的數(shù)目可選地限制為一 個。這足以說明原理,但應注意,可將一個以上頁存儲在SPB中,其中需要對更多信息 (例如,較舊的寫入指針)進行分析以找出最新寫入的扇區(qū)。舉例來說,在圖25中,在主機寫入弁l中,將更新的扇區(qū)LS10'存儲在更新區(qū)塊20 的頁PO的第三偏移中。視情況而定,出于完整性考慮,可用例如來自原始區(qū)塊10的 LS8和LS9的有效數(shù)據(jù)來填補前兩個槽。然而,當在主機寫入#1結束處保存頁PO時, 這仍然使得第四槽為未填充的。可用LS11的最新版本對部分頁進行可選的后填補。由 于所述頁是一次寫入的,所以未填充的第四槽將被關閉而無法進行進一步編程。在主機寫入弁2中,命令是寫入接收到的更新的扇區(qū)LS11',其最終從最新扇區(qū)LS10' 開始成循序次序。理想的情況是,應當將此記錄在P0中的LS10'后的下一槽中。然而, PO已被關閉而無法進一步寫入,且因此將LS11'存儲在最新槽處的下一空頁Pl中,這 是其正確的頁偏移。用LS8、 LS9和LS10'來填補Pl的前三個槽,LS8、 LS9和LS10' 是循序在LS11'前面的邏輯扇區(qū)的有效版本。在主機寫入弁3中,命令是寫入LS6'和LS7'。將其分別寫入第三和第四槽處的P2, P2為更新區(qū)塊中的下一空頁。用例如LS4和LS5的有效數(shù)據(jù)來填補第一和第二槽。最終,在主機寫入弁4中,命令是寫入LS10",且將其存儲在P3、槽3中,同時分 別用LS8和LS9來填補槽1和2,且將槽4保持為空的??梢钥闯觯噲D在每一可一次編程的頁內(nèi)維持扇區(qū)對準的同時具有大量填補和死區(qū) 而低效地使用更新區(qū)區(qū)塊。不合需要的特征是,即便主機循序地寫入(在兩個單獨的寫 入命令中先寫入IO然后寫入11),更新區(qū)塊仍然不是循序的且無法變完整,因為其具有 一些過時數(shù)據(jù)。為了避免上述問題且將更新區(qū)塊20中因部分填充的頁以及過分填補而導致的低效存儲最小化,早先描述了使用額外的高速暫存區(qū)塊30。高速暫存區(qū)塊(SPB) 30充當傳入數(shù)據(jù)的臨時緩沖器和籌備區(qū)域,使得可籌備整頁的數(shù)據(jù)然后再將其寫入更新區(qū)塊20。在以上四扇區(qū)頁的實例中,對扇區(qū)進行籌備,以便寫入四個扇區(qū)以完整地填充更新區(qū)塊中的頁。在當主機在單獨的寫入中寫入循序性數(shù)據(jù)時的情況下,SPB允許緩沖部分頁寫入,且將更新區(qū)塊保持為循序的。然而,這也意味著現(xiàn)在有效數(shù)據(jù)除了原始區(qū)塊和更新
區(qū)塊之外還分布在SPB上。為了方便起見,高速暫存區(qū)塊的頁的大小與更新區(qū)塊的頁的大小相同,雖然一般而 言其可以不同。舉例來說,如果存儲器系統(tǒng)支持物理頁級別的編程,則高速暫存區(qū)塊的 頁可具有物理頁的大小。高速暫存區(qū)塊和更新區(qū)塊索引管理2004年8月13日申請的第10/917,725號美國專利申請案揭示了一種具有區(qū)塊管理 的存儲器系統(tǒng),其整個揭示內(nèi)容以引用的形式并入本文中。所述區(qū)塊管理提供將待更新 的每一數(shù)據(jù)邏輯群組相關聯(lián)的更新區(qū)塊。所揭示的是各種索引方案的實例,其用以定位 可能駐存在原始區(qū)塊或更新區(qū)塊上的有效數(shù)據(jù)。確切地說,當更新區(qū)塊含有成非循序次 序的邏輯扇區(qū)時,將所述更新區(qū)塊視為"混亂更新區(qū)塊"。使用混亂更新區(qū)塊索引(CBI) 來保持對混亂更新區(qū)塊中記錄的邏輯扇區(qū)的跟蹤。高速暫存區(qū)塊中保存的SPBI/CBI索引根據(jù)本發(fā)明的另一方面,當除了更新區(qū)塊之外還使用高速暫存區(qū)塊時,使用相關聯(lián) 的高速暫存區(qū)塊索引(SPBI)來保持對高速暫存區(qū)塊中記錄的更新扇區(qū)的跟蹤。這是作 為用以保持對更新區(qū)塊中記錄的邏輯扇區(qū)的跟蹤的索引(例如CBI)的補充。只要用戶 數(shù)據(jù)存儲在高速暫存區(qū)塊的部分頁中,這便意味著至少頁的最后槽未被填充。在一個實 施例中,可將SPBI存儲在高速暫存區(qū)塊中的部分頁的最后槽中。在優(yōu)選實施例中,可 將SPBI和CBI封裝在SPBI/CBI扇區(qū)內(nèi),并將其存儲在高速暫存區(qū)塊的部分頁的未以任 何方式使用的最后槽處。每當寫入新的部分頁時,將更新的SPBI/CBI扇區(qū)寫入在末尾 槽處,從而使得先前所有版本過時。圖26是說明根據(jù)本發(fā)明的一般實施例,通過結合第二存儲器區(qū)塊使用第一存儲器 區(qū)塊(所存儲的數(shù)據(jù)的索引保存在第二區(qū)塊中)來更新數(shù)據(jù)的方法的流程圖。步驟80:提供第一和第二非易失性存儲裝置,每一者均用于循序地記錄數(shù)據(jù)。步驟81:在第一和第二非易失性存儲裝置中維持數(shù)據(jù)的至少一個索引。步驟82:接收輸入數(shù)據(jù)。步驟84:確定是否滿足將經(jīng)緩沖的輸入數(shù)據(jù)記錄到第一存儲裝置的第一預定條件。如果滿足,便進行到步驟85,否則進行到步驟86。步驟85:將經(jīng)緩沖的輸入數(shù)據(jù)記錄到第一存儲裝置。進行到步驟88。步驟86:將經(jīng)緩沖的輸入數(shù)據(jù)與所述至少一個索引一起記錄到第二存儲裝置。進行到步驟88。步驟88:如果有更多的輸入數(shù)據(jù)待處理,則進行到步驟72,否則結束過程。
圖27A說明根據(jù)本發(fā)明優(yōu)選實施例,通過結合高速暫存區(qū)塊使用更新區(qū)塊來更新數(shù) 據(jù)和維持索引的特定實例。每個區(qū)塊均是元區(qū)塊,其中其所有的存儲器位置可一起擦除。 將區(qū)塊組織成頁,其中頁內(nèi)的所有存儲器位置可一起編程。此外,每一頁具有可存儲一 個以上扇區(qū)的大小,且每當區(qū)塊已被擦除時其可一次寫入。除了更新區(qū)塊(UB) 20之外還提供高速暫存區(qū)塊(SPB) 30。如果使用"流1"來 標記到達更新區(qū)塊20的數(shù)據(jù)流動,那么將把到達高速暫存區(qū)塊30的相應流動標記為"流 0"。將使用圖24和25中的相同主機寫入實例來說明圖27A所示的本發(fā)明的優(yōu)點。在主 機寫入#1中,命令是寫入LS10'。由于LS10'應占用槽3,所以不能將充滿的頁寫入更 新區(qū)塊20。而是,通過在SPB30的新頁中對其進行緩沖來將進行籌備。因此,將LS10' 存儲在SPB30的下一可用部分頁PP0的槽3中。同時,分別用LS8和LS9來可選地填 補槽1和2。此外,根據(jù)本發(fā)明的特征,將SPBI和CBI均封裝在扇區(qū)內(nèi),即索引扇區(qū) SPBI/CBI, 50內(nèi),且有利地將索引扇區(qū)50存儲在部分頁PPO的最后的、未使用的槽中。在主機寫入弁2中,命令是寫入LS11'。由于LS11'屬于位于頁末的槽4,所以可將 用來自SPB 30的循序的LS8、 LS9和LS10'預填補的整頁寫入更新區(qū)塊20的下一可用 頁PO。在此情況下,用于SPBI/CBI的索引扇區(qū)未經(jīng)更新,因為其并不寫入SPB30中的 部分頁中。SPB中的對準以及預填補是優(yōu)選的,但是可選的。在主機寫入弁3中,命令是寫入LS6'和LS7'。其分別屬于槽3和4。因此,當用LS4 和LS5填補以前的槽時,寫入更新區(qū)塊20的另一整頁一一Pl。同樣,用于SPBI/CBI 的索引扇區(qū)未經(jīng)更新,因為其并不寫入SPB 30中的部分頁中。在主機寫入弁4中,命令是寫入LS10"。由于LS10"屬于槽3,所以其將被寫入SPB 30的下一部分頁PP1。類似地,用LS8和LS9來填補以前的槽1和2,而最后的槽也將 與索引扇區(qū)(SPBI/CBI3)的最新更新一起存儲。通常將在主機寫入#4末尾處對更新區(qū)塊20的使用與圖25中的使用進行比較,容 易發(fā)現(xiàn),圖27A所示的方案是對更新區(qū)塊的更有效的利用。對于相同的主機寫入,圖 27A所示的方案消耗較少的存儲裝置,且需要更新區(qū)塊中的較少填補,雖然會以高速暫 存區(qū)塊30為代價。同時,所述索引方案利用高速暫存區(qū)塊中的未使用的存儲裝置以在 非易失性存儲器中存儲索引。本發(fā)明的一個重要特征和優(yōu)點是在循序的邏輯扇區(qū)的一系列單獨主機寫入期間,維 持更新區(qū)塊中的更新扇區(qū)的循序次序,這與圖25所示的實例不同。通過圖27B中說明 的實例將顯而易見。
圖27B說明根據(jù)本發(fā)明優(yōu)選實施例,通過結合高速暫存區(qū)塊使用更新區(qū)塊來維持更 新數(shù)據(jù)的循序排序的另一實例。在此實例中,依次但通過若干單獨的主機寫入而寫入邏 輯扇區(qū)LS10'陽LS16'。在主機寫入井1中,寫入LS10'。由于其應占用頁的槽3 (其不是頁末槽),所以將 其記錄在高速暫存區(qū)塊30的槽3中。同時,將索引SPBI/CBI1記錄在頁末槽中。在主機寫入#2中,寫入LS11'。由于其應占用頁末槽,所以將其直接記錄到更新區(qū) 塊20中的新頁的最后槽。同時,將臨時存儲在高速暫存區(qū)塊中的LS10'轉(zhuǎn)而拷貝到槽3, 同時用來自原始區(qū)塊或完整區(qū)塊10的LS8和LS9來預填補槽1和2。在主機寫入井3中,寫入LS12'-LS14'。由于其中沒有一者具有末頁偏移,所以將其 存儲在高速暫存區(qū)塊中的新頁的槽l-3中。同時,在頁末槽中記錄更新的索引SPBI/CBI3。在主機寫入#4中,寫入LS15'和LS16'。由于LS15'屬于頁末槽,所以將其直接寫 入更新區(qū)塊中的下一頁的最后槽。同時,分別用來自高速暫存區(qū)塊的LS12'-LS14'來填充 槽1-3。將看出,即便循序的邏輯扇區(qū)LS10'-LS16'是通過若干單獨的主機寫入而寫入的,也 將其以循序方式記錄在更新區(qū)塊中。在優(yōu)選實施例中,在高速暫存區(qū)塊中,每一邏輯群組保存一個有效部分頁(例如, 最后寫入的部分頁)。本發(fā)明同等適用于在高速暫存區(qū)塊中每一邏輯群組保存一個以上 有效部分頁。在此情況下,需要對來自一個以上頁的索引信息進行分析,以便定位所記 錄的扇區(qū)。高速暫存區(qū)塊的頁內(nèi)的扇區(qū)對準和填補是優(yōu)選的,但是可選的。對準和填補將促進 對更新區(qū)塊的后續(xù)轉(zhuǎn)移。在特定存儲器架構中,更新區(qū)塊的頁內(nèi)的絕對扇區(qū)對準將簡化索引和拷貝。即使當 頁中的所有循序的扇區(qū)循環(huán)地移位一定數(shù)目的槽時,也將頁中的扇區(qū)視為頁對準的。在 此情況下,指示頁中的第一邏輯扇區(qū)的位置的頁標簽將提供偏移地址。所示的優(yōu)選實施例具有作為兩個不同的可擦除區(qū)塊的兩個存儲裝置。 一般而言,本 發(fā)明同等地適用于作為存儲器的兩個部分的兩個存儲裝置。本發(fā)明還同等地適用于每一存儲器單元存儲一個數(shù)據(jù)位的兩狀態(tài)存儲器和每一存儲器單元能夠存儲一個以上個數(shù)據(jù)位的多狀態(tài)存儲器。對于支持多頁存儲的多狀態(tài)存儲器而言,下部頁優(yōu)選用于高速暫存區(qū)塊的存儲操作。如果將寫入的第一扇區(qū)不是從多槽頁的槽1位置開始,那么優(yōu)選對部分頁進行預填補。對混亂區(qū)塊使用頁級別的索引且對高速暫存區(qū)塊使用扇區(qū)級別的索引。將對存取所有混亂區(qū)塊和高速暫存區(qū)塊必需的索引信息(即,SPBI/CBI)維持在控制器SRAM中以 便于快速存取和處理。無論何時寫入新的部分頁,將其周期性地寫出到高速暫存區(qū)塊。一般而言,將經(jīng)部分元頁重新定位的數(shù)據(jù)與傳入數(shù)據(jù)一起編程,以減少編程循環(huán)的 數(shù)目。當高速暫存區(qū)塊(SPB)變滿時將其壓縮。SPB壓縮是將所有有效數(shù)據(jù)重新定位 到新區(qū)塊。因為SPB中的每個UB僅有一個具有有效數(shù)據(jù)的頁,所以我們只需要將那些 頁拷貝到新區(qū)塊。如果每個更新區(qū)塊有多個具有有效數(shù)據(jù)的頁(其可能含有不同的或相 同的邏輯地址,如果是后者的話則優(yōu)選將其合并)。部分頁中保存的更新區(qū)塊索引根據(jù)本發(fā)明的又一方面,存儲在存儲器區(qū)塊中的數(shù)據(jù)的索引存儲在部分頁的未被數(shù) 據(jù)占用的部分中。因此,在以存儲器單位組織的存儲器中(其中,存儲器單位的頁可一 起編程,且存儲器頁的區(qū)塊可一起擦除),則當存儲在存儲器單位中的數(shù)據(jù)單位根據(jù)預 定次序而在頁中對準時,且尤其在頁在每次擦除后可一次編程的情況下,將存在部分被 填充的頁。接著,將區(qū)塊的索引存儲在未填充更新數(shù)據(jù)的部分頁中。部分頁可能在當前 區(qū)塊中或在另一區(qū)塊中。圖28說明在區(qū)塊的部分頁中保存用于存儲更新數(shù)據(jù)的存儲器區(qū)塊的索引的優(yōu)選方案。步驟90:將非易失性存儲器組織成存儲器單位的可擦除區(qū)塊,每一存儲器單位用于 存儲邏輯數(shù)據(jù)單位,且每一區(qū)塊也組織成一個或一個以上頁,其中每一頁中的存儲器單 位具有預定的頁偏移且在擦除后一起可一次編程。步驟92:將區(qū)塊提供為記錄邏輯數(shù)據(jù)單位的更新版本的更新區(qū)塊。步驟94:從主機接收邏輯數(shù)據(jù)單位。步驟96:在更新區(qū)塊中維持數(shù)據(jù)的索引。步驟98:對更新區(qū)塊進行逐頁記錄,其中接收到的數(shù)據(jù)根據(jù)其頁偏移而在頁中對準,且當待記錄的頁具有未被數(shù)據(jù)占用的部分時,也將索引記錄到未被數(shù)據(jù)占用的部分。 多流跟蹤和同步圖29示意性說明在多流更新中使用的高速暫存區(qū)塊,其中若干邏輯群組同時經(jīng)受更新。舉例來說,如果有A個邏輯群組經(jīng)受更新,那么將存在使用A個更新區(qū)塊20-1……20-yt的更新流。為了避免在更新區(qū)塊中存在部分頁,在另一流(流0)中使用高速暫存區(qū)塊30來緩沖/t個更新區(qū)塊的A個相應部分頁中的數(shù)據(jù)。因此,將有k+l個區(qū)塊打開,且有k個部分頁來服務k個更新區(qū)塊中的邏輯單位的k個邏輯群組的同時更新。所示的實例是針對優(yōu)選實施例,其中高速暫存區(qū)塊中每個更新區(qū)塊存在一個有效頁。 在有效扇區(qū)分布在更新區(qū)塊和高速暫存區(qū)塊中的情況下,當在電源循環(huán)的情況下識 別扇區(qū)的最近寫入的版本時可能會出現(xiàn)問題,因為可在更新區(qū)塊和高速暫存區(qū)塊中發(fā)現(xiàn) 相同邏輯扇區(qū)的不同拷貝。電源復位之后更新區(qū)塊上的存儲器掃描將建立邏輯扇區(qū)的多 個版本(如果存在的話)的優(yōu)先級,因為更新區(qū)塊的位置是以限定次序填充的。通過對 高速暫存區(qū)塊進行類似的掃描,可識別出邏輯扇區(qū)的最后寫入的版本。然而,如果高速 暫存區(qū)塊中存在最新版本且更新區(qū)塊中存在最新版本,則不容易確定哪個是真正最新的 版本。舉例來說,在圖27A中,可在兩個流中均發(fā)現(xiàn)扇區(qū)LS8-LS10??赏ㄟ^不同的命 令序列——寫入LS8'-LS10'、寫入LS8"-LS10"、寫入LS8"'-LSir'、寫入LS4'-LS7'—— 來形成與圖27A上的數(shù)據(jù)圖案相同的數(shù)據(jù)圖案。在此情況下,有效扇區(qū)將位于更新區(qū)塊 而不是高速暫存區(qū)塊中。
根據(jù)本發(fā)明的另一方面,提供一種用以將更新數(shù)據(jù)與同步信息一起寫入非易失性存 儲器的方法,所述同步信息允許識別出可能存在于多個存儲器區(qū)塊上的數(shù)據(jù)的最近寫入 的版本。
圖30說明將輸入數(shù)據(jù)的序列寫入?yún)^(qū)塊的常規(guī)情況。將非易失性存儲器區(qū)塊22組織 成其以限定次序填充。圖中示意性說明其從頂部開始填充。因此,將數(shù)據(jù)段"A"、 "B"、 "C"和"A'"的連續(xù)寫入循序放在區(qū)塊中。以此方式,如果例如"A'"是"A"的另一 版本,則可根據(jù)其在區(qū)塊22中的記錄位置來確定其是代替"A"的較晚版本。以下實施 例只是存儲與在更新一個限定流時流的充滿程度相關的信息的更廣概念的特殊但有效 的情況。
圖31A說明根據(jù)本發(fā)明的優(yōu)選實施例,即使在不同寫入在兩個區(qū)塊上交錯時也保持 對記錄次序或優(yōu)先級的跟蹤的方案。根據(jù)一個或一個以上預定條件,可將例如數(shù)據(jù)段 "A"、 "B"、 "C"和"A'"的每次寫入記錄到第一區(qū)塊(例如,區(qū)塊22)或第二區(qū)塊(例 如,區(qū)塊32)上。在此實例中,在第一寫入中將"A"記錄到第二區(qū)塊32。在此之后是 將"B"記錄到第一區(qū)塊22的第二寫入,和將"C"記錄到第二區(qū)塊32的第三寫入,最 后是將"A'"記錄到第一區(qū)塊22的第四寫入。
在所示的圖中,流0是記錄到第二區(qū)塊32的數(shù)據(jù)流,且流1是記錄到第一區(qū)塊22 的數(shù)據(jù)流。在相同邏輯數(shù)據(jù)在兩個或兩個以上流中交錯更新的情況下,至關重要的是保 持對更新的優(yōu)先級的跟蹤,其界定最近記錄的數(shù)據(jù)的位置。在優(yōu)選實施例中,通過至少 每當記錄給定流時均保存優(yōu)先級信息來實現(xiàn)此操作。
每當將流0中的寫入數(shù)據(jù)記錄到區(qū)塊32上時,將優(yōu)先級信息與寫入數(shù)據(jù)一起保存。
在優(yōu)選實施例中,優(yōu)先級信息是寫入指針40,其指向第一區(qū)塊22中的下一空位置(即,
下一記錄位置的地址)。寫入指針與正在流0中存儲的數(shù)據(jù)一起保存。因此,在寫入"A"操作中,將指向區(qū)塊22中的下一空位置的指針PA40-A與"A" 一起保存在流0中的區(qū)塊32中。在寫入"B"操作中不保存任何指針,因為寫入是針對 流1中的區(qū)塊22的。在寫入"C"中,將指針PC40-C與"C" 一起保存在流O中的區(qū) 塊32中。在針對區(qū)塊22的寫入"A'"中,不在流l中保存任何指針。如果在寫入"A'"的末尾時存儲器在電源中斷后被復位,則控制器RAM中的任何 索引均將丟失,且必須通過掃描存儲器來重建。通過向后掃描,區(qū)塊22和32中的每一 者均將已定個數(shù)據(jù)位"A"的最后寫入的版本??墒褂脤懭胫羔?0來確定兩個區(qū)塊之間 的真正最后版本。舉例來說,指針PC在記錄"A'"之前指向區(qū)塊22中的位置,因此在 "C"之后記錄"A'"。此外,由于"C"被記錄在區(qū)塊32中位于"A"之后的位置處, 因此可得出"A'"是"A"的較后版本的結論。在每UB在SPB中存在一個以上有效頁的另一實施例中,然后為了檢測最近寫入的 數(shù)據(jù),將必須分析一個以上寫入指針。圖31B說明當在兩個區(qū)塊上記錄寫入時保持對記錄次序的跟蹤的另一實施例。此實 施例與圖31A所示的實施例相似,區(qū)別僅在于寫入指針指向區(qū)塊32中的下一空位置, 且保存在區(qū)塊22中。流O正被記錄到第二區(qū)塊(例如,區(qū)塊32),而流l正被記錄到第 一區(qū)塊(例如,區(qū)塊22)。每當將流1記錄到第一區(qū)塊上時,便將給出第二區(qū)塊22中的 下一記錄位置的地址的第二區(qū)塊寫入指針40'與其一起保存。在此實例中,將指針P'b 40'-B與"B" —起記錄。類似地,PV 40'-A'與"A'" —起記錄在流1中的第一區(qū)塊22 中。圖32A是說明根據(jù)本發(fā)明一般實施例的對兩個數(shù)據(jù)流之間的記錄序列進行同步的 方法的流程圖。步驟100:提供第一和第二非易失性存儲裝置,每一者均用于循序地記錄數(shù)據(jù)。 步驟102:將第一或第二存儲裝置指定為用于優(yōu)先級信息的存儲裝置,所述優(yōu)先級 信息用于確定第一存儲裝置中的第一數(shù)據(jù)單位是在第二存儲裝置中的第二數(shù)據(jù)單位之前還是之后記錄o步驟110:接收輸入數(shù)據(jù)。步驟120:確定是否滿足將接收到的輸入數(shù)據(jù)記錄到第一存儲裝置的預定條件。如果滿足,則進行到步驟130',否則進行到步驟140'。步驟130:將接收到的輸入數(shù)據(jù)記錄到第一存儲裝置。此時,如果第一存儲裝置是指定的存儲裝置,則額外地將優(yōu)先級信息記錄到第一存儲裝置。進行到步驟150。 步驟140:將接收到的輸入數(shù)據(jù)記錄到第二存儲裝置。此時,如果第二存儲裝置是 指定的存儲裝置,則額外地將優(yōu)先級信息記錄到第二存儲裝置。進行到步驟150。 步驟150:如果有更多的輸入數(shù)據(jù)要處理,則進行到步驟IIO,否則結束過程。 在優(yōu)選實施例中,優(yōu)先級信息是寫入器指針,其為將在非指定存儲裝置中發(fā)生下一 記錄的位置的地址。圖32B是說明根據(jù)使用寫入指針的實施例對兩個數(shù)據(jù)流之間的記錄序列進行同步的方法的流程圖。步驟100':提供第一和第二非易失性存儲裝置,每一者均用于循序地記錄數(shù)據(jù)。 步驟110':接收輸入數(shù)據(jù)。步驟120':確定是否滿足將接收到的輸入數(shù)據(jù)記錄到第一存儲裝置的預定條件。如果滿足,則進行到步驟130',否則進行到步驟140'。步驟130':獲得將在第二存儲裝置中發(fā)生的下一記錄的位置的地址。步驟132':將地址和接收到的輸入數(shù)據(jù)記錄到第一存儲裝置。進行到步驟150'。 步驟140':將接收到的輸入數(shù)據(jù)記錄到第二存儲裝置。進行到步驟150'。步驟150':如果有更多的輸入數(shù)據(jù)要處理,則進行到步驟IIO,否則結束過程。本發(fā)明特別適用于組織成存儲器單位的可擦除區(qū)塊、,每一存儲器單位用于存儲邏 輯數(shù)據(jù)單位且每一區(qū)塊也組織成一個或一個以上頁的非易失性存儲器。此外,每一頁在 多個邏輯單位的擦除之后可一次編程,每一邏輯單位成預定次序且具有給定的頁偏移。 所述方法本質(zhì)上提供用于對邏輯單位的群組的更新數(shù)據(jù)進行存儲或緩沖的兩個區(qū)塊(例 如,更新區(qū)塊和高速暫存區(qū)塊),且維持同步信息以幫助識別邏輯單位的最近寫入的版本是位于第一區(qū)塊中還是第二區(qū)塊中。關于圖29,如果存在多個流,則圖31A所示的 實施例是優(yōu)選的,因為將所有寫入指針存儲在SPB中的一個地方更加便利。 更新區(qū)塊寫入指針實施例根據(jù)優(yōu)選實施例,每當在髙速暫存區(qū)塊中緩沖主機數(shù)據(jù)時,以寫入指針形式的同步 信息與主機數(shù)據(jù)一起保存。寫入指針是當將寫入指針保存在高速暫存區(qū)塊中時給出用于 更新區(qū)塊中的下一寫入的位置的地址的更新區(qū)塊寫入指針。確切地說,其保存在高速暫 存區(qū)塊中不以任何方式用于存儲主機數(shù)據(jù)的部分中。更新區(qū)塊寫入指針優(yōu)選包含在存儲 于高速暫存區(qū)塊的部分頁中的索引SPBI/CBI中。更新區(qū)塊寫入指針將允許確定在高速 暫存區(qū)塊中緩沖的給定邏輯扇區(qū)是否已在對更新區(qū)塊的后續(xù)寫入后而成為過時的。如果存在電源復位,且在兩個區(qū)塊之間發(fā)現(xiàn)討論中的邏輯扇區(qū)的兩個版本,那么寫入指針將允許解決哪個版本是真正最新的。舉例來說,如果在指向的位置之后記錄更新 區(qū)塊中的邏輯扇區(qū),那么其將取代SPB中的部分頁中的版本。另一方面,如果在更新區(qū) 塊中未發(fā)現(xiàn)邏輯扇區(qū),或者邏輯扇區(qū)被記錄在早先的位置處,那么將得出在高速暫存區(qū) 塊的部分頁中緩沖的版本仍然有效的結論。圖33A展示高速暫存區(qū)塊和更新區(qū)塊在根據(jù)第一序列的兩個主機寫入井1和#2之 后的狀態(tài)。第一序列是用于用以寫入ls10'的主機寫入#1,和用以寫入ls10"和ls11' 的主機寫入弁2。在主機寫入弁l中,命令是寫入LS10'。由于LS10'不在頁邊界處,所以將其記錄在 高速暫存區(qū)塊30中的部分頁PP0中,所述部分頁PP0被用LS8和LS9預填補且以當前 索引SPBI/CBI!結束。當寫入部分頁PPO時,在當前索引SPBI/CBI!50中包含寫入指針 40,所述索引SPBI/CBL50保存在最后槽中。寫入指針40指向更新區(qū)塊20中的第一空 頁po。在主機寫入#2中,命令是寫入ls10"和LSll。由于ls11'在頁末處,所以將其直 接寫入更新區(qū)塊20中的P0的最后槽(槽4)。同時,將LS10'寫入槽3,且分別用LS8 和LS9填補槽1和2。如果存儲器現(xiàn)在遭受電源中斷且ram中維持的索引信息丟失,則物理存儲器的向 后掃描將試圖重建索引信息。將看出,更新區(qū)塊和高速暫存區(qū)塊(SPB)均將產(chǎn)生其對 LS10的最后版本,即LS10'和LS10"。然而,由于LS10"是在記錄于spb的ppo中的寫 入指針之后記錄的,所以可得出其為比ls10'更新的版本的結論。圖33b展示高速暫存區(qū)塊和更新區(qū)塊在根據(jù)與圖33a所示的第一序列相反的第二序 列的兩個主機寫入弁1和#2之后的狀態(tài)。相反序列用于用以寫入LS10'和LS11'的主機 寫入弁l,和用以寫入LS10"的主機寫入弁2。在主機寫入弁i中,命令是寫入lsio'和Lsir。由于Lsir在頁末處,所以將其直接寫入更新區(qū)塊20中的P0的最后槽(槽4)。同時,將LS10'寫入槽3,且分別用LS8 和LS9填補槽1和2。在主機寫入#1之后的主機寫入#2中,命令是寫入LS10"。由于LS10"不在頁邊界 處,所以將其記錄在高速暫存區(qū)塊30中的部分頁PP0中,所述部分頁PP0被用LS8和 ls9預填補且以當前索引SPBI/CBl2結束。當寫入部分頁PPO時,在當前索引SPBI/CBI! 50中包含寫入指針40,所述索引SPBI/CBI!50保存在最后槽中。寫入指針40指向更新 區(qū)塊20中的下一空頁Pl。在此情況下,在電源復位之后,(例如)發(fā)現(xiàn)在更新區(qū)塊20的指向位置之前記錄更新區(qū)塊中的邏輯扇區(qū)LS10'??傻贸鲆韵陆Y論更新區(qū)塊20中的LS10'的最后版本被駐
存在高速暫存區(qū)塊30的部分頁中的另一版本LS10"取代。圖34A說明高速暫存區(qū)塊索引(SPBI)的優(yōu)選數(shù)據(jù)結構。SPBI信息含有用于A:個 更新區(qū)塊中的每一更新區(qū)塊的以下字段。這是每個邏輯群組/UB具有一個有效頁的SPB 的特殊情況。邏輯群組號識別正在給定流中經(jīng)受更新的邏輯扇區(qū)。優(yōu)選情況是,針對空閑的更新 區(qū)塊或不具有有效高速暫存數(shù)據(jù)的更新區(qū)塊來存儲零值"FFFF"。 頁開始扇區(qū)是寫入高速暫存區(qū)塊的部分頁的第一邏輯扇區(qū)。 扇區(qū)運行長度是寫入高速暫存頁的部分頁的有效扇區(qū)的數(shù)目。有效頁號識別寫入高速暫存區(qū)塊中的唯一有效(唯一有效)部分頁。其將是高速暫 存區(qū)塊中的最后寫入的部分頁?;蛘撸梢陨葏^(qū)偏移來實施定址,所述扇區(qū)偏移指向更 新區(qū)塊的部分頁的第一有效扇區(qū)。相對于區(qū)塊的開頭來計算扇區(qū)偏移。在優(yōu)選實施例中, 只有一個物理頁含有用于給定更新區(qū)塊的有效數(shù)據(jù)。針對未寫入高速暫存區(qū)塊的扇區(qū)存 儲FFFF。更新區(qū)塊寫入指針40是在最后寫入高速暫存時相應更新區(qū)塊的第一未寫入扇區(qū)位 置的扇區(qū)地址。任何從此扇區(qū)位置寫入更新區(qū)塊的扇區(qū)均將取代在高速暫存區(qū)塊中寫入 的扇區(qū)。圖34B說明用于圖33A中所示的主機寫入#1的高速暫存區(qū)塊索引中的實例值。在 此實例中,邏輯群組號為"l",其含有邏輯扇區(qū)LS0到LSN-1。其在流l中更新,且伴 隨有更新區(qū)塊和高速暫存區(qū)塊。部分頁是PP0,且其以LS8或"8"開始并具有運行長 度"3"從而以LS10'結束。有效部分頁號為"0"。最終,寫入指針指向更新區(qū)塊中的下 一寫入位置,其扇區(qū)偏移為"0"。顯而易見,如果更新的索引只存儲在高速暫存區(qū)塊中,且每當將數(shù)據(jù)直接寫入更新 區(qū)塊時便不會對高速暫存區(qū)塊進行寫入,則索引將在那些情況下變成無效。一般而言, 一直將整個SPB索引信息以及CBI索引信息維持在控制器SRAM中的 數(shù)據(jù)結構中?;谏葏^(qū)級別的索引信息來存取SPB中的有效扇區(qū)。在優(yōu)選實施例中,將 SPBI/CBI索引存儲在高速暫存區(qū)塊中的非易失性存儲器中。確切地說,每當在高速暫存 區(qū)塊(SPB)中寫入部分頁時,便在部分頁的最后扇區(qū)中存儲最新的SPBI/CBI。SPB支持多達預定數(shù)目(例如,8個)更新區(qū)塊。當主機寫入頁的最后扇區(qū)時,將 SPB區(qū)塊中的部分頁數(shù)據(jù)合并到相關聯(lián)的更新區(qū)塊。在給定時刻,用于邏輯群組的SPB 中的一個以上部分頁中可能存在數(shù)據(jù),但只有最后寫入的部分頁的數(shù)據(jù)才是有效的。類似地,SPB中可能存在SPBI/CBI扇區(qū)的多個拷貝,但只有最后寫入的拷貝才是有效的。 當需要將扇區(qū)寫入SPB而SPB已充滿時,首先將區(qū)塊拷貝到新的SPB區(qū)塊且擦除舊的 SPB,此后將扇區(qū)寫入新的SPB。當需要對SPBI/CBI進行更新時也寫入SPB,因為循序 的更新區(qū)塊變成混亂,或者因為先前含有高速暫存數(shù)據(jù)的更新區(qū)塊被關閉了。在優(yōu)選實施例中,高速暫存區(qū)塊(SPB)寫入是一次一頁的。每個流/邏輯群組/更新 區(qū)塊的頁數(shù)也限制為一,因此只需要最新的SPBI,因為只存在一個可能與有效拷貝在 UB或SPB中處于哪個位置有關的頁。類似地,如果SPB中每個UB的頁數(shù)大于一,那 么也將需要對舊的SPBI進行分析。上述實施例將更新區(qū)塊寫入指針作為SPBI/CBI扇區(qū)的一部分存儲在高速暫存區(qū)塊 的最新的部分頁中。替代實施例能夠從可能存在于多個區(qū)塊之間的多個版本中識別出邏 輯扇區(qū)的有效版本。另外還可能高速暫存區(qū)塊中的每個流具有一個以上頁,或者每個邏 輯群組具有一個以上更新區(qū)塊或流。高速暫存區(qū)塊寫入指針實施例根據(jù)本發(fā)明的另一實施例,維持同步信息,其允許確定在高速暫存區(qū)塊中緩沖的給 定邏輯扇區(qū)是否已在對更新區(qū)塊的后續(xù)寫入后而變?yōu)檫^時。這通過以下方式來實現(xiàn)當 在更新區(qū)塊的頁中存儲同歩信息時,包含給出高速暫存區(qū)塊中的下一寫入的位置的地址 的高速暫存寫入指針。圖35A和圖35B展示高速暫存區(qū)塊和更新區(qū)塊分別在圖33A和圖33B的連續(xù)主機 寫入之后相對于高速暫存寫入指針的中間狀態(tài)。圖35A說明高速暫存區(qū)塊和更新區(qū)塊在主機寫入#1之后的狀態(tài)。在主機寫入#1 中,邏輯扇區(qū)LS10'屬于頁的槽3且不在頁邊界處,且因此記錄在高速暫存區(qū)塊30中的 部分頁PPO中。其可選地用LS8和LS9來預填補,并以當前索引SPBI/CBI,結束。如果 存儲器在電源關閉之后重新啟動,則可通過最后的SPBI/CBI!索引來正確地定位邏輯扇 區(qū)LS10'的有效版本。由于未向更新區(qū)塊20寫入任何內(nèi)容,所以事實如此。圖35B說明主機寫入弁1之后的主機寫入#2,其中命令是寫入LS11'。由于LS11'在頁邊界(槽4)處,所以將其記錄在填充的頁PO的第四槽中,用LS8、 LS9禾BLS10進行預填補。同步信息采用指向SPB 30中的下一空位置的SPB寫入指針40'的形式。與早先實施例不同的是,SPB寫入指針40'不包含在SPB 30中的SPBI/CBI索引中。而是,將其存儲在當前正被記錄到更新區(qū)塊20中的頁中的扇區(qū)的標題部分中。如果存儲器在電源關閉之后重新啟動,則將在更新區(qū)塊20中正確地定位邏輯扇區(qū)LS10'的有效版本,因為在SPB寫入指針40'指向的位置之前記錄SPB中的LS10的版本。圖36說明記錄到更新區(qū)塊的扇區(qū)的額外開銷部分中存儲的高速暫存寫入指針。將 高速暫存寫入指針40'保存在當前記錄到更新區(qū)塊的頁中的至少一個扇區(qū)中。在優(yōu)選實 施例中,將其保存在正被寫入的頁中的至少一個扇區(qū)的額外開銷部分中。 時戳實施例在又一實施例中,可將同步信息編碼為用于寫入到多個流的數(shù)據(jù)扇區(qū)的時戳,以便 可正確地找出最新版本。圖37說明使用時戳來保持對兩個更新流之間的記錄序列的跟蹤。如同之前一般, 可將更新數(shù)據(jù)的每一段記錄在第一區(qū)塊(流1)或第二區(qū)塊(流2)中。實例展示在時 間T1處,將"A"記錄在第一區(qū)塊中,在T2處,將"B"記錄在第二區(qū)塊中,在T3處, 將"C"記錄在第一區(qū)塊中,且在T4處,將"A'"記錄在第二區(qū)塊中。存儲用于每個新數(shù)據(jù)更新部分的至少一個時戳。因此,"A"將具有時戳TS1, "B" 具有TS2, "C"具有TS3,且"A'"具有TS4。因此,舉例來說,"A'"是"A"的較后 版本,因為其具有較后的時戳。在優(yōu)選實施例中,將時戳信息存儲在正被寫入的頁中的 至少一個扇區(qū)的額外開銷部分中。具有多扇區(qū)頁的區(qū)塊的多流更新根據(jù)本發(fā)明的另一方面, 一種更新非易失性存儲器的方法包含使用第一區(qū)塊(更新 區(qū)塊)來記錄更新數(shù)據(jù),且使用第二區(qū)塊(高速暫存區(qū)塊)來在將更新數(shù)據(jù)記錄到更新 區(qū)塊之前臨時保存一些更新數(shù)據(jù)。將非易失性存儲器組織成存儲器單位的可擦除區(qū)塊, 每一存儲器單位用于邏輯單位的存儲數(shù)據(jù),且每一區(qū)塊還組織成一個或一個以上頁,其 中每一頁能夠存儲多個具有限定的頁偏移的邏輯單位,并且在擦除之后可一起一次編 程。所述方法進一步包含從主機接收邏輯單位,并將接收到的邏輯單位逐頁對準,從而 當滿足接收到的邏輯單位具有頁末偏移的預定條件時,將接收到的邏輯單位和任何以前 的邏輯單位以適當?shù)捻搶蚀鎯Φ礁聟^(qū)塊中的頁,否則,將任何剩余的接收到的邏輯 單位臨時存儲到高速暫存區(qū)塊中的部分頁。最終,當滿足預定條件時,將高速暫存區(qū)塊 中的邏輯單位轉(zhuǎn)移到更新區(qū)塊。在優(yōu)選實施例中,接收更新數(shù)據(jù)并對其逐頁分析,以便轉(zhuǎn)移到第一區(qū)塊(例如,更新區(qū)塊)。將緩沖的數(shù)據(jù)的任何剩余部分頁轉(zhuǎn)移到第二區(qū)塊(例如,高速暫存區(qū)塊),且所述剩余部分頁將保持在第二區(qū)塊中,直到有整頁的數(shù)據(jù)變?yōu)榭捎糜谟涗浀降谝粎^(qū)塊為止。當將緩沖的數(shù)據(jù)轉(zhuǎn)移到第二區(qū)塊時,其是逐頁記錄的,雖然記錄的頁中只是部分地填充有接收到的數(shù)據(jù)。使用部分頁中的多余部分,即一般未使用的空間來存儲用于在第二和第一區(qū)塊中定個數(shù)據(jù)位的索引。圖38是說明根據(jù)本發(fā)明的一般實施例,同時將更新數(shù)據(jù)記錄和索引到兩個存儲器
區(qū)塊的方法的流程圖,其中每一存儲器區(qū)塊具有多扇區(qū)頁。步驟200:將非易失性存儲器組織成存儲器單位的可擦除區(qū)塊,每一存儲器單位用 于存儲邏輯數(shù)據(jù)單位,且每一區(qū)塊也組織成一個或一個以上頁,其中每一頁含有多個存 儲器單位,且在擦除之后可一起一次編程。步驟210:提供用于逐整頁地記錄邏輯數(shù)據(jù)單位的更新版本的第一區(qū)塊。步驟220:提供用于緩沖從主機接收到的邏輯數(shù)據(jù)單位的更新版本的第二區(qū)塊。步驟232:從主機接收邏輯單位中的數(shù)據(jù)。步驟234:通過以頁末偏移定位任何邏輯單位而逐頁地解析接收到的邏輯單位。步驟236:將具有頁末偏移的每一邏輯單位記錄到第一區(qū)塊中的新頁,同時用之前邏輯單位的最新版本來填充新的頁,且將任何剩余的接收到的邏輯單位記錄在第二區(qū)塊 中的部分頁中。圖39是說明圖37的使用高速暫存區(qū)塊和更新區(qū)塊的方法的更具體的實施方案的流 程圖。步驟310:提供用于逐整頁地記錄邏輯單位的更新版本的更新區(qū)塊(UB),每一邏 輯單位具有根據(jù)預定次序的預定頁偏移。歩驟322:提供高速暫存區(qū)塊(SPB),其用于逐頁地臨時緩沖被引導到其的更新。 步驟324:提供用于在SPB中定位有效(最新版本)數(shù)據(jù)的SPBI索引。 步驟332:逐邏輯單位地接收當前寫入請求的數(shù)據(jù)。步驟334:如果當前邏輯單位在頁末處偏移,那么進行到步驟340,否則進行到步 驟336。步驟336:如果寫入請求有更多的數(shù)據(jù)要接收,那么進行到步驟332,否則進行到 步驟350。步驟340:用頁末尾處的當前邏輯單位記錄UB的新頁,并根據(jù)預定次序用有效(最 新版本的)邏輯單位來填充頁的剩余部分。進行到步驟336。步驟350:如果已記錄所有接收到的數(shù)據(jù),那么進行到步驟180,否則進行到步驟360。步驟360:如果未記錄的接收到的數(shù)據(jù)不與SPB中的任何現(xiàn)有有效(最新版本的) 數(shù)據(jù)屬于同一頁,那么進行到步驟370,否則進行到步驟362。 步驟362:更新SPB索引。步驟364:將未記錄的接收到的數(shù)據(jù)以及任何現(xiàn)有的有效數(shù)據(jù)以其頁偏移記錄到SPB的新的頁中,以SPB索引結束。進行到步驟380。
步驟370:通過合并將來自SPB的當前頁的現(xiàn)有有效數(shù)據(jù)定位到UB的新頁。 步驟372:更新SPB索引。步驟374:將未記錄的接收到的數(shù)據(jù)以其頁偏移寫入到SPB的新的頁中,以SPB索 引結束。步驟380:當前寫入請求結束。SPB支持多達預定數(shù)目(例如,8個)的更新區(qū)塊。當主機寫入頁的最后扇區(qū)時, 將SPB區(qū)塊中的部分頁數(shù)據(jù)合并到相關聯(lián)的更新區(qū)塊。在給定時刻,邏輯群組的SPB 中的一個以上部分頁中可能存在數(shù)據(jù),但在優(yōu)選實施例中,只有最后寫入的部分頁的數(shù) 據(jù)才是有效的。類似地,SPB中可能存在SPBI/CBI扇區(qū)的多個拷貝,但只有最后寫入 的拷貝才是有效的。通過同一合并,如果SPB中每個UB的有效頁數(shù)限制為一,則只需 要最后的寫入指針。當需要將扇區(qū)寫入SPB而SPB已充滿時,首先將區(qū)塊拷貝到新的 SPB區(qū)塊且擦除舊的SPB,此后將扇區(qū)寫入新的SPB。當需要對SPBI/CBI進行更新時 也寫入SPB,因為循序的更新區(qū)塊變成混亂,或者因為先前含有高速暫存數(shù)據(jù)的更新區(qū) 塊被關閉了。一般而言,如上所注意,可使用每一更新區(qū)塊的一個以上SPB部分頁來存儲有效數(shù) 據(jù)。以此方式,如果下一主機寫入扇區(qū)在頁的外部,則不需要將部分頁合并以為新的部 分頁讓路。多流更新方案允許更加有效地利用更新區(qū)塊。這對于可一次寫入的具有多扇區(qū)頁的 區(qū)塊來說尤其是這樣。所述方案消耗的存儲裝置較少,且在更新區(qū)塊中需要的填補較少。 更重要的是,在循序邏輯扇區(qū)的一系列單獨主機寫入期間,維持更新區(qū)塊中的更新扇區(qū) 的循序次序。具有預測性管線操作的多流更新在上述多流更新方案中,每當存在主機寫入時,將必須決定是將接收到的主機數(shù)據(jù) 記錄到更新區(qū)塊還是高速暫存區(qū)塊??稍诮邮諄碜灾鳈C的數(shù)據(jù)單位時對其逐個進行監(jiān) 視,直到接收到具有末頁偏移的數(shù)據(jù)單位為止。在此點處,確認寫入整頁的預定條件, 雖然可能存在預填補。為了寫入更新區(qū)塊,需要設置待寫入的頁以供編程。這涉及到對頁定址并接著將用于該頁的數(shù)據(jù)加載到數(shù)據(jù)鎖存器中。根據(jù)優(yōu)選實施例,實施預測性管線操作,其中不是一直等到確認用于記錄到更新區(qū)塊的預定條件為止,而是將更新區(qū)塊設置成一旦主機寫入命令指示期望寫入的數(shù)據(jù)單位潛在地滿足了預定條件便寫入更新區(qū)塊。在此方式,設置可在等待來自主機的數(shù)據(jù)單位
的同時具有跳躍開始。當接收到的實際數(shù)據(jù)單位最終滿足了預定條件時,可立刻發(fā)生更 新區(qū)塊中的頁的編程而無須等待設置,從而改進了寫入性能。在主機寫入被中斷且接收 到的實際數(shù)據(jù)單位不再滿足預定條件時,將放棄用于記錄到更新區(qū)塊的設置,而替代地 將把數(shù)據(jù)單位記錄到高速暫存區(qū)塊。
圖40A示意性說明具有一排讀取/寫入電路的存儲器裝置,其提供實施本發(fā)明的環(huán) 境。所述存儲器裝置包含存儲器單元的二維陣列400、控制電路410和讀取/寫入電路470。 存儲器陣列400可經(jīng)由行解碼器430而通過字線定址,并且經(jīng)由列解碼器460而通過位 線定址。讀取/寫入電路470構建為一排感測模塊480 (未圖示)且允許并行地讀取或編 程存儲器單元的群組(也稱為一"頁")。并行操作的一整排p個感測模塊480允許并行 地讀取或編程沿著行的一頁p個單元。 一個實例存儲器陣列可具有p:512個字節(jié)(512 X8個位)。在優(yōu)選實施例中,區(qū)塊是一連串整行單元。在另一實施例中,區(qū)塊是行中的 單元的子集。舉例來說,單元的子集可為整行的一半或者整行的四分之一。單元的子集 可為一連串的鄰接單元或相隔一個的單元,或相隔預定數(shù)目的單元。因此,在優(yōu)選實施 例中,頁由存儲器單元的鄰接行構成。在將一行存儲器單元分割成多個頁的另一實施例 中,提供頁多路復用器350,以將讀取/寫入電路470多路復用到個別頁。
控制電路410與讀取/寫入電路470協(xié)作以對存儲器陣列400執(zhí)行存儲器操作。控制 電路410包含狀態(tài)機412、芯片上地址解碼器414以及電源控制模塊416。狀態(tài)機412 提供對存儲器操作的芯片級別控制。芯片上地址解碼器414向解碼器330和370所使用 的硬件地址提供主機或存儲器控制器所使用的地址之間的地址接口。在存儲器操作期 間,電源控制模塊416控制供應到字線和位線的功率和電壓。圖40B說明圖40A所示的存儲器裝置的優(yōu)選布置。以對稱方式在存儲器陣列400 的相對側(cè)上實施各種外圍電路對存儲器陣列400的存取,使得每一側(cè)上的存取線和電路 減半。因此,將行解碼器分成行解碼器430A和430B,且將列解碼器分成列解碼器460A 和460B。在將一行存儲器單元劃分成多個區(qū)塊的實施例中,將頁多路復用器450分成 頁多路復用器450A和450B。類似地,將讀取/寫入電路分成從陣列400底部連接到位 線的讀取/寫入電路470A和從陣列400頂部連接到位線的讀取/寫入電路470B。以此方 式,將讀取/寫入模塊的密度本質(zhì)上減半,且因此將感測模塊排480的密度本質(zhì)上減半。 將經(jīng)由頂部的I/0來轉(zhuǎn)移被引導到陣列頂部處的讀取/寫入模塊的數(shù)據(jù)。類似地,將經(jīng)由 底部的1/0來轉(zhuǎn)移被引導到陣列底部處的讀取/寫入模塊的數(shù)據(jù)。
圖41更詳細地說明圖40A所示的感測模塊。每一感測模塊480本質(zhì)上包含讀出放大器482,用于讀出存儲器單元的導通狀態(tài); 一組數(shù)據(jù)鎖存器484,用于存儲讀出數(shù)
據(jù)或待編程的數(shù)據(jù);以及1/0電路486,用于與外部通信。第2004-0109357-A1號美國 專利公開案中揭示了一種優(yōu)選的讀出放大器,該案的整個揭示內(nèi)容以引用的形式并入本 文中。在編程操作期間,首先將選定的字線和位線定址。接著經(jīng)由1/0端口將待編程的數(shù) 據(jù)轉(zhuǎn)移到個別的數(shù)據(jù)鎖存器。接著,在通過向字線施加編程電壓而開始編程之前,先對 位線進行預充電??蓪⑹┘泳幊屉妷褐暗牟襟E視為編程設置。當頁的大小相當大時, 將編程數(shù)據(jù)轉(zhuǎn)移到數(shù)據(jù)鎖存器中所需的時間也較長。在主機寫入期間,主機首先發(fā)送主機寫入命令,其向存儲器裝置指示其期望寫入的 數(shù)據(jù)單位的范圍。接著逐數(shù)據(jù)單位地傳輸所述范圍內(nèi)的數(shù)據(jù)單位,直到達到范圍末尾為 止。視協(xié)議而定,傳輸可能會被意外地中斷,且可在新的寫入命令中發(fā)送剩余的數(shù)據(jù)單 位。為了改進寫入性能,將需要具有管線操作,其中可在仍然接收數(shù)據(jù)單位的同時發(fā)生程序設置過程。然而,在可根據(jù)接收到的特定數(shù)據(jù)單位而將數(shù)據(jù)單位記錄到多個存儲裝置中的任何存儲裝置的多流方案中,對到達給定存儲裝置的記錄的定址將不是確定的,直到實際上不中斷地接收到那些特定的數(shù)據(jù)單位為止。為了克服此問題,使用預測性管線方案。如果發(fā)現(xiàn)導致到達給定存儲裝置的記錄的那些特定數(shù)據(jù)單位處于主機寫入命令所指示的范圍內(nèi),則給定存儲裝置將立即被設置以供編程。當實際上接收到那些特定的數(shù)據(jù)單位時,給定的存儲裝置將準備對數(shù)據(jù)單位編程,而不存在因編程設置導致的延遲。另一方面,如果那些特定的數(shù)據(jù)單位因中斷而無法具體化,則將放棄針對給定存儲裝置的編程設置的編程,而是將選擇另一存儲裝置來設置并供隨后編程。圖42是說明根據(jù)優(yōu)選實施例的使用預測性管線方案的多流更新的流程圖。步驟500:提供用于記錄主機數(shù)據(jù)單位的第一和第二存儲裝置。舉例來說,第一存儲裝置是更新區(qū)塊,其為專用于存儲更新數(shù)據(jù)的可擦除區(qū)塊;且第二存儲裝置是高速暫存區(qū)塊,其為用于對被運送到更新區(qū)塊的更新數(shù)據(jù)進行臨時緩沖的另一可擦除區(qū)塊。步驟510:接收指示待寫入的數(shù)據(jù)單位的范圍的主機寫入命令。步驟512:如果數(shù)據(jù)單位的范圍含有滿足將數(shù)據(jù)單位記錄到第一存儲裝置的預定條件的數(shù)據(jù)單位,則進行到步驟520,否則進行到步驟530。舉例來說,將可擦除區(qū)塊組織成多頁,每一頁能夠存儲可一起編程的多個數(shù)據(jù)單位。將數(shù)據(jù)單位以邏輯上的循序次序存儲在頁中,使得每一數(shù)據(jù)單位具有預定頁偏移。記錄到更新區(qū)塊的預定條件是在可記錄整頁時。在存在具有末頁偏移的數(shù)據(jù)單位時是充分條件,其中通過必要時在頁中預 填補任何以前的數(shù)據(jù)單位來形成整頁。如果未滿足預定條件,則將把主機數(shù)據(jù)記錄到高 速暫存區(qū)塊。步驟520:設置地址以準備記錄到第一存儲裝置。舉例來說,如果范圍包含具有末 頁偏移的數(shù)據(jù)單位,則將假定把整頁記錄到更新區(qū)塊。在這種情況下,將定址更新區(qū)塊 中的新頁以供記錄。步驟522:在數(shù)據(jù)鎖存器中加載接收到的數(shù)據(jù),以準備記錄到第一存儲裝置。 一旦 從主機接收到數(shù)據(jù)單位,便將其加載到數(shù)據(jù)鎖存器中以供編程新的頁。步驟524:如果實際上接收到滿足預定條件的數(shù)據(jù)單位,則進行到步驟540,否則 進行到步驟526。舉例來說,當實際上從主機接收到具有末頁偏移的數(shù)據(jù)單位時,無疑 可形成預測的整頁。步驟526:中止用于記錄到第一存儲裝置的設置。進行到步驟530。舉例來說,如 果具有末頁偏移的預期數(shù)據(jù)單位因中斷而永遠不會到達,則對于將向更新區(qū)塊記錄整頁的預測不再是真實的。在此情況下,將必須放棄對更新區(qū)塊的編程設置。作為替代,現(xiàn) 在將對高速暫存區(qū)塊進行設置以供編程。步驟530:設置地址以準備記錄到第二存儲裝置。舉例來說,當將整頁記錄到更新 區(qū)塊的預定條件未滿足時,將把主機數(shù)據(jù)記錄到高速暫存區(qū)塊。在此情況下,將定址高 速暫存區(qū)塊中的新頁以供記錄。步驟532:在數(shù)據(jù)鎖存器中加載接收到的數(shù)據(jù)以準備記錄到第二存儲裝置。 一旦從 主機接收到數(shù)據(jù)單位,便將把其加載到數(shù)據(jù)鎖存器中以供編程新的頁。步驟540:將數(shù)據(jù)鎖存器中的數(shù)據(jù)編程到經(jīng)定址的存儲裝置。舉例來說,當通過接 收到的數(shù)據(jù)單位確認到達更新區(qū)塊或高速暫存區(qū)塊的預測的記錄時,可無延遲地編程設 置區(qū)塊。步驟550:結束當前的主機寫入。視存儲器架構而定,步驟520和530可成不同次序,例如可在步驟522或步驟532 中加載數(shù)據(jù)鎖存器之后選擇地址。在另一優(yōu)選實施例中,當接收到數(shù)據(jù)且當起初不確定是將接收到的數(shù)據(jù)記錄到第一還是第二存儲裝置時,將接收到的數(shù)據(jù)加載到第一和第二存儲裝置二者的編程電路的數(shù)據(jù)鎖存器中。以此方式,數(shù)據(jù)將始終立即可用于對第一或第二存儲裝置編程。在特殊情況下,第一和第二存儲裝置共用相同組的數(shù)據(jù)鎖存器。舉例來說,當?shù)谝缓偷诙鎯ρb置位于同一存儲器平面時,其可由同一組編程電路用同一組讀出放大器和數(shù)據(jù)鎖存器服務。在此種情況下,不論是要編程第一還是第二存儲裝置,均將把數(shù)據(jù)加載到一組默認 的數(shù)據(jù)鎖存器中。在第一和第二存儲裝置由不同組的數(shù)據(jù)鎖存器服務的情況下,例如在位于同一平面 的不同存儲器頁或位于不同存儲器平面的情況下,可將數(shù)據(jù)加載到兩組數(shù)據(jù)鎖存器。圖43是是說明根據(jù)另一實施例的多流更新的流程圖,其中在發(fā)送正確的目的地地 址之前加載程序數(shù)據(jù)。步驟600:提供第一和第二存儲裝置以用于記錄主機數(shù)據(jù)單位。步驟610:接收主機數(shù)據(jù)。步驟620:在接收到數(shù)據(jù)時將數(shù)據(jù)加載到用于對第一存儲裝置編程的數(shù)據(jù)鎖存器和 用于對第二存儲裝置編程的數(shù)據(jù)鎖存器。步驟630:依據(jù)接收到的數(shù)據(jù)是否滿足預定條件來定址第一或第二存儲裝置以供記錄。步驟640:將數(shù)據(jù)從數(shù)據(jù)鎖存器編程到經(jīng)定址的存儲裝置。 步驟650:結束當前主機寫入。雖然己關于各種示范性實施例描述了本發(fā)明,但將了解,本發(fā)明有權受到所附權利 要求書的完整范圍內(nèi)的保護。
權利要求
1. 一種記錄來自主機的數(shù)據(jù)的方法,其包括(a) 提供第一和第二非易失性存儲裝置,其每一者均用于循序地記錄數(shù)據(jù)單位;(b) 將所述第一或第二存儲裝置指定為用于優(yōu)先級信息的存儲裝置,所述優(yōu)先 級信息允許確定是在所述第二存儲裝置中的第二數(shù)據(jù)單位之前還是之后記錄了所 述第一存儲裝置中的第一數(shù)據(jù)單位;(c) 接收所述來自主機的數(shù)據(jù);(d) 依據(jù)是否滿足預定條件,將所述接收到的數(shù)據(jù)分別記錄到所述第一存儲裝 置或所述第二存儲裝置中的下一可用位置中;(e) 其中每當將所述接收到的數(shù)據(jù)記錄到所述指定的存儲裝置時,還將所述優(yōu)先級信息記錄在所述指定的存儲裝置中;以及(f) 重復(c) - (e),直到不再有接收到的數(shù)據(jù)要記錄為止。
2. 根據(jù)權利要求1所述的方法,其中所述第一和第二存儲裝置中的每一者均被組織成 可一起擦除的存儲器單位的區(qū)塊。
3. 根據(jù)權利要求1所述的方法,其中所述第一和第二存儲裝置是快閃EEPROM的一 部分。
4. 根據(jù)權利要求1所述的方法,其中所述優(yōu)先級信息是寫入指針,其提供將在未指定 的存儲裝置中發(fā)生下一記錄的位置的地址。
5. 根據(jù)權利要求4所述的方法,其中所述來自主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一存儲裝置用于存儲所述更新數(shù)據(jù);且所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一存儲裝置之前緩沖所 述更新數(shù)據(jù),且是用于所述優(yōu)先級信息的所述指定存儲裝置。
6. 根據(jù)權利要求5所述的方法,其中所述第一存儲裝置是用于存儲更新數(shù)據(jù)的多個存儲裝置中的一者;且 所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述多個第一存儲裝置中的一者之前緩沖所述更新數(shù)據(jù)。
7. 根據(jù)權利要求5所述的方法,其進一步包括將所述數(shù)據(jù)組織成具有預定次序的數(shù)據(jù)單位;以及將所述第一和第二非易失性存儲裝置組織成頁,每一頁用于對具有預定頁偏移的 多個數(shù)據(jù)單位一起進行編程。
8. 根據(jù)權利要求6所述的方法,其中每一頁在擦除之后可一次編程。
9. 根據(jù)權利要求6所述的方法,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述將所述數(shù)據(jù)記錄到所述第一存儲裝置包含將所述頁末數(shù)據(jù)單位以及所述頁 中的任何以前的數(shù)據(jù)單位記錄到所述第一存儲裝置的頁中。
10. 根據(jù)權利要求6所述的方法,其中將所述寫入指針記錄到所述第二存儲裝置中未被 數(shù)據(jù)占用的頁的位置。
11. 根據(jù)權利要求6所述的方法,其中將所述寫入指針記錄到所述第二存儲裝置中具有 頁末偏移的頁的位置。
12. 根據(jù)權利要求4所述的方法,其中所述來自主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù);所述第一存儲裝置用于存儲所述更新數(shù)據(jù),并被指定為用于所述優(yōu)先級信息的存 儲裝置;且所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一存儲裝置之前緩沖所 述更新數(shù)據(jù)。
13. 根據(jù)權利要求12所述的方法,其中所述第一存儲裝置是用于存儲更新數(shù)據(jù)的多個存儲裝置中的一者;且 所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述多個存儲裝置中的一者之 前緩沖所述更新數(shù)據(jù)。
14. 根據(jù)權利要求12所述的方法,其進一步包括將所述數(shù)據(jù)組織成具有預定次序的數(shù)據(jù)單位;以及將所述第一和第二非易失性存儲裝置組織成頁,每一頁用于對具有預定頁偏移的 多個數(shù)據(jù)單位一起進行編程。
15. 根據(jù)權利要求13所述的方法,其中每一頁在擦除之后可一次編程。
16. 根據(jù)權利要求13所述的方法,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述將所述數(shù)據(jù)記錄到所述第一存儲裝置包含將所述頁末數(shù)據(jù)單位以及所述頁 中的任何以前的數(shù)據(jù)單位記錄到所述第一存儲裝置的頁中。
17. 根據(jù)權利要求13所述的方法,其中將所述寫入指針記錄到所述第一存儲裝置中未 被數(shù)據(jù)占用的頁的位置。
18. 根據(jù)權利要求13所述的方法,其中將所述數(shù)據(jù)單位各自分割成數(shù)據(jù)部分和額外開銷部分;且將所述寫入指針記錄在所述第一存儲裝置中所述頁的所述數(shù)據(jù)單位中的至少一 者的額外開銷部分中。
19. 根據(jù)權利要求1-18中任一權利要求所述的方法,其中所述第一和第二非易失性存 儲裝置由各自存儲一個數(shù)據(jù)位的存儲器單元構成。
20. 根據(jù)權利要求1-18中任一權利要求所述的方法,其中所述第一和第二非易失性存儲裝置由各自存儲一個以上數(shù)據(jù)位的存儲器單元構成。
21. —種非易失性存儲器,其包括存儲器,其被組織成多個區(qū)塊,每一區(qū)塊是可一起擦除的多個存儲器單位,每一存儲器單位用于存儲一數(shù)據(jù)單位;控制器,其用于控制所述區(qū)塊的操作; 第一和第二區(qū)塊,其每一者用于循序地記錄數(shù)據(jù)單位;優(yōu)先級信息,其用于允許確定是在所述第二區(qū)塊中的第二數(shù)據(jù)單位之前還是之后 記錄了所述第一區(qū)塊中的第一數(shù)據(jù)單位;指定區(qū)塊,其從所述第一和第二區(qū)塊中的一者指定,用于存儲所述優(yōu)先級信息; 緩沖器,其用于接收來自主機的數(shù)據(jù);所述控制器依據(jù)是否滿足預定條件,控制將所述接收到的數(shù)據(jù)分別記錄到所述第 一區(qū)塊或所述第二區(qū)塊中的下一可用位置中;且其中每當將所述接收到的數(shù)據(jù)記錄到所述指定的區(qū)塊時,均將所述優(yōu)先級信息存 儲在所述指定的區(qū)塊中。
22. 根據(jù)權利要求21所述的非易失性存儲器,其中所述非易失性存儲器是快閃 EEPROM。
23. 根據(jù)權利要求21所述的非易失性存儲器,其中所述非易失性存儲器采用可移除存 儲器卡的形式。
24. 根據(jù)權利要求21所述的非易失性存儲器,其中所述優(yōu)先級信息是寫入指針,其提供將在未指定的區(qū)塊中發(fā)生記錄的位置的地 址。
25. 根據(jù)權利要求24所述的非易失性存儲器,其中所述來自所述主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù);所述第一區(qū)塊用于存儲所述更新數(shù)據(jù);且 所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一區(qū)塊之前緩沖所述更新數(shù) 據(jù),并指定為用于存儲所述優(yōu)先級信息。
26. 根據(jù)權利要求25所述的非易失性存儲器,其中所述第一區(qū)塊是用于存儲更新數(shù)據(jù)的多個區(qū)塊中的一者;且所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述多個所述第一區(qū)塊中的一者之 前緩沖所述更新數(shù)據(jù)。
27. 根據(jù)權利要求25所述的非易失性存儲器,其中所述數(shù)據(jù)被組織成具有預定次序的數(shù)據(jù)單位;且所述第一和第二區(qū)塊被組織成頁,每一頁用于對具有預定頁偏移的多個數(shù)據(jù)單位 一起進行編程。
28. 根據(jù)權利要求26所述的非易失性存儲器,其中每一頁在擦除之后可一次編程。
29. 根據(jù)權利要求26所述的非易失性存儲器,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述控制器控制將所述數(shù)據(jù)記錄到所述第一區(qū)塊包含將所述頁末數(shù)據(jù)單位以及 所述頁中的任何以前的數(shù)據(jù)單位記錄到所述第一區(qū)塊的頁中。
30. 根據(jù)權利要求26所述的非易失性存儲器,其中所述寫入指針被記錄到所述第二區(qū) 塊中未被數(shù)據(jù)占用的頁的位置。
31. 根據(jù)權利要求26所述的非易失性存儲器,其中所述寫入指針被記錄到所述第二區(qū) 塊中具有頁末偏移的頁的位置。
32. 根據(jù)權利要求24所述的非易失性存儲器,其中所述來自所述主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一區(qū)塊用于存儲所述更新數(shù)據(jù),并被指定用于存儲所述優(yōu)先級信息;且 所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一區(qū)塊之前緩沖所述更新數(shù) 據(jù)。
33. 根據(jù)權利要求32所述的非易失性存儲器,其中所述第一區(qū)塊是用于存儲更新數(shù)據(jù)的多個區(qū)塊中的一者;且 所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述多個所述第一區(qū)塊中的一者之 前緩沖所述更新數(shù)據(jù)。
34. 根據(jù)權利要求32所述的非易失性存儲器,其中所述數(shù)據(jù)被組織成具有預定次序的數(shù)據(jù)單位;且所述第一和第二區(qū)塊被組織成頁,每一頁用于對具有預定頁偏移的多個數(shù)據(jù)單位 一起進行編程。
35. 根據(jù)權利要求32所述的非易失性存儲器,其中每一頁在擦除之后可一次編程。
36. 根據(jù)權利要求35所述的非易失性存儲器,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述控制器控制將所述數(shù)據(jù)記錄到所述第一區(qū)塊包含將所述頁末數(shù)據(jù)單位以及 所述頁中的任何以前的數(shù)據(jù)單位記錄到所述第一區(qū)塊的頁中。
37. 根據(jù)權利要求35所述的非易失性存儲器,其中所述寫入指針被記錄到所述第一區(qū) 塊中未被數(shù)據(jù)占用的頁的位置。
38. 根據(jù)權利要求35所述的非易失性存儲器,其中所述數(shù)據(jù)單位被各自分割成數(shù)據(jù)部 分和額外開銷部分;且所述寫入指針被記錄到所述第一區(qū)塊中所述頁的所述數(shù)據(jù)單位中的至少一者的 額外開銷部分。
39. —種非易失性存儲器,其包括存儲器,其被組織成多個區(qū)塊,每一區(qū)塊是可一起擦除的多個存儲器單位,每一 存儲器單位用于存儲邏輯數(shù)據(jù)單位;第一和第二區(qū)塊,其每一者用于循序地記錄來自主機的數(shù)據(jù); 寫入指針,其指向所述第一區(qū)塊的下一記錄位置;指定區(qū)塊,其從所述第一和第二區(qū)塊中的一者指定,用于存儲所述寫入指針; 緩沖器,其用于接收所述來自主機的數(shù)據(jù);紀錄構件,其用于依據(jù)是否滿足預定條件,將所述接收到的數(shù)據(jù)分別記錄到所述 第一區(qū)塊或所述第二區(qū)塊中的下一可用位置;且其中每當將所述接收到的數(shù)據(jù)記錄到所述指定區(qū)塊時,均將所述寫入指針存儲在 所述指定區(qū)塊中。
40. 根據(jù)權利要求21-39中任一權利要求所述的非易失性存儲器,其中所述第一和第二 非易失性存儲裝置由各自存儲一個數(shù)據(jù)位的存儲器單元構成。
41. 根據(jù)權利要求21-39中任一權利要求所述的非易失性存儲器,其中所述第一和第二 非易失性存儲裝置由各自存儲一個以上數(shù)據(jù)位的存儲器單元構成。
42. —種記錄來自主機的數(shù)據(jù)的方法,其包括(a) 提供第一和第二非易失性存儲裝置,其每一者均用于循序地記錄數(shù)據(jù)單位;(b) 接收所述來自主機的數(shù)據(jù);(d)依據(jù)是否滿足預定條件,將所述數(shù)據(jù)和指示記錄時間的時戳分別記錄到所 述第一存儲裝置或所述第二存儲裝置中的下一可用位置; (e)重復(b) - (d),直到不再有要記錄的數(shù)據(jù)為止。
43. 根據(jù)權利要求42所述的方法,其中所述第一和第二存儲裝置中的每一者用于存儲 可一起擦除的存儲器單位的區(qū)塊。
44. 根據(jù)權利要求42所述的方法,其中所述第一和第二存儲裝置是快閃EEPROM的一 部分。
45. 根據(jù)權利要求42所述的方法,其中所述來自所述主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一存儲裝置用于存儲所述更新數(shù)據(jù);且所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一存儲裝置之前緩沖所 述更新數(shù)據(jù)。
46. 根據(jù)權利要求45所述的方法,其中所述第一存儲裝置是用于存儲更新數(shù)據(jù)的多個存儲裝置中的一者;且 所述第二存儲裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述多個第一存儲裝置中的一 者之前緩沖所述更新數(shù)據(jù)。
47. 根據(jù)權利要求42所述的方法,其進一步包括將所述數(shù)據(jù)組織成具有預定次序的數(shù)據(jù)單位;以及將第一和第二非易失性存儲裝置組織成頁,每一頁用于對具有預定頁偏移的多個 數(shù)據(jù)單位一起進行編程。
48. 根據(jù)權利要求47所述的方法,其中每一頁在擦除之后可一次編程。
49. 根據(jù)權利要求47所述的方法,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述將所述數(shù)據(jù)記錄到所述第一存儲裝置包含將所述頁末數(shù)據(jù)單位以及任何以 前的數(shù)據(jù)單位記錄到所述第一存儲裝置的頁中。
50. 根據(jù)權利要求47所述的方法,其中將所述數(shù)據(jù)單位各自分割成數(shù)據(jù)部分和額外開 銷部分;且將所述時戳記錄在每一頁的所述數(shù)據(jù)單位中的至少一者的額外開銷部分中。
51. 根據(jù)權利要求42-50中任一權利要求所述的方法,其中所述第一和第二非易失性存 儲裝置由各自存儲一個數(shù)據(jù)位的存儲器單元構成。
52. 根據(jù)權利要求42-50中任一權利要求所述的方法,其中所述第一和第二非易失性存 儲裝置由各自存儲一個以上數(shù)據(jù)位的存儲器單元構成。
53. —種記錄來自主機的數(shù)據(jù)的非易失性存儲器,其包括存儲器,其被組織成多個區(qū)塊,每一區(qū)塊為可一起擦除的多個存儲器單位,每一 存儲器單位用于存儲邏輯數(shù)據(jù)單位;控制器,其用于控制所述區(qū)塊的操作;第一和第二區(qū)塊,其每一者用于循序地記錄來自主機的數(shù)據(jù);其中 所述控制器依據(jù)是否滿足預定條件,控制將所述數(shù)據(jù)和指示記錄時間的時戳分別 記錄到所述第一區(qū)塊或所述第二區(qū)塊。
54. 根據(jù)權利要求53所述的非易失性存儲器,其中所述非易失性存儲器是快閃 EEPROM。
55. 根據(jù)權利要求53所述的非易失性存儲器,其中所述非易失性存儲器采用可移除存 儲器卡的形式。
56. 根據(jù)權利要求53所述的非易失性存儲器,其中所述來自所述主機的數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一區(qū)塊用于存儲所述更新數(shù)據(jù);且所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一區(qū)塊之前緩沖所述更新數(shù) 據(jù)。
57. 根據(jù)權利要求56所述的非易失性存儲器,其中所述數(shù)據(jù)被組織成具有預定次序的數(shù)據(jù)單位;且所述第一和第二區(qū)塊被組織成頁,每一頁用于對具有預定頁偏移的多個數(shù)據(jù)單位 一起進行編程。
58. 根據(jù)權利要求57所述的非易失性存儲器,其中每一頁在擦除之后可一次編程。
59. 根據(jù)權利要求57所述的方法,其中所述預定條件是在所述接收到的數(shù)據(jù)單位中的一者具有頁末偏移時;且 所述控制器控制將所述數(shù)據(jù)記錄到所述第一區(qū)塊包含將所述頁末數(shù)據(jù)單位以及 所述頁中的任何以前的數(shù)據(jù)單位記錄到所述第一區(qū)塊的頁中。
60. 根據(jù)權利要求57所述的非易失性存儲器,其中所述時戳被記錄到未被數(shù)據(jù)占用的 頁的位置。
61. 根據(jù)權利要求57所述的非易失性存儲器,其中所述數(shù)據(jù)單位被各自分割成數(shù)據(jù)部 分和額外開銷部分;且所述時戳被記錄在頁的各個數(shù)據(jù)單位的額外開銷部分中。
62. —種記錄來自主機的數(shù)據(jù)的非易失性存儲器,其包括存儲器,其被組織成多個區(qū)塊,每一區(qū)塊是可一起擦除的多個存儲器單位,每一存儲器單位用于存儲邏輯數(shù)據(jù)單位;第一和第二區(qū)塊,其每一者用于循序地記錄來自主機的數(shù)據(jù);以及紀錄構件,其用于依據(jù)是否滿足預定條件,將所述數(shù)據(jù)和指示記錄時間的時戳分別記錄到第一區(qū)塊或第二區(qū)塊。
63. 根據(jù)權利要求53-62中任一權利要求所述的非易失性存儲器,其中所述第一和第二 非易失性存儲裝置由各自存儲一個數(shù)據(jù)位的存儲器單元構成。
64. 根據(jù)權利要求53-62中任一權利要求所述的非易失性存儲器,其中所述第一和第二 非易失性存儲裝置由各自存儲一個以上數(shù)據(jù)位的存儲器單元構成。
全文摘要
可將到達非易失性存儲器的更新數(shù)據(jù)記錄在至少兩個交錯的流中,例如依據(jù)預定條件記錄在更新區(qū)塊或者高速暫存區(qū)塊中。所述高速暫存區(qū)塊用來緩沖最終指定去往更新區(qū)塊的更新數(shù)據(jù)。用所述流中的至少一者保存與所述流中的更新的記錄次序相關的同步信息。這將允許識別可能存在于多個存儲器區(qū)塊上的最近寫入的數(shù)據(jù)版本。在一個實施例中,所述同步信息被保存在第一區(qū)塊中,且是指向第二區(qū)塊中的下一記錄位置的寫入指針。在另一實施例中,所述同步信息是時戳。
文檔編號G06F12/02GK101124554SQ200580047187
公開日2008年2月13日 申請日期2005年12月5日 優(yōu)先權日2004年12月16日
發(fā)明者彼得·約翰·史密斯, 瑟吉·阿納托利耶維奇·戈羅別茨, 艾倫·戴維·貝內(nèi)特 申請人:桑迪士克股份有限公司