專利名稱:具有用于高速暫存器和更新區(qū)塊的改進(jìn)索引的非易失性存儲(chǔ)器和方法
具有用于高速暫存器和更新區(qū)塊的改進(jìn)索引的非易失性存儲(chǔ)器和方法技術(shù)領(lǐng)域無背景技術(shù)本發(fā)明大體上涉及非易失性快閃存儲(chǔ)器系統(tǒng)的操作,且更具體來說,涉及在非易失 性快閃存儲(chǔ)器內(nèi)對(duì)數(shù)據(jù)進(jìn)行編程的較有效方法。存在很多現(xiàn)今正在使用的商業(yè)上成功的非易失性存儲(chǔ)器產(chǎn)品,尤其是以小外形尺寸 卡的形式,其使用形成于一個(gè)或一個(gè)以上集成電路芯片上的快閃EEPROM (電子可擦除 可編程只讀存儲(chǔ)器)單元陣列。通常但不必須處于單獨(dú)集成電路芯片上的存儲(chǔ)器控制器 與主機(jī)介接(所述卡可移除地連接到所述主機(jī)),且控制所述卡內(nèi)的所述存儲(chǔ)器陣列的操 作。這種控制器通常包括微處理器、某一非易失性只讀存儲(chǔ)器(ROM)、易失性隨機(jī)存取 存儲(chǔ)器(RAM)和一個(gè)或一個(gè)以上特殊電路,例如在編程和讀取數(shù)據(jù)期間在數(shù)據(jù)通過控 制器時(shí)從數(shù)據(jù)計(jì)算出錯(cuò)誤校正碼(ECC)的電路。某些市售卡為CompactFlash (CF) 卡、多媒體卡(MMC)、安全數(shù)字(SD)卡、個(gè)人標(biāo)記(P-Tag)和記憶棒卡。主機(jī)包括 個(gè)人計(jì)算機(jī)、筆記本計(jì)算機(jī)、個(gè)人數(shù)字助理(PDA)、各種數(shù)據(jù)通信裝置、數(shù)碼相機(jī)、蜂 窩式電話、便攜式音頻播放器、汽車語音系統(tǒng)和相似類型的設(shè)備。在某些系統(tǒng)中,可移 除卡不包括控制器,且主機(jī)控制所述卡內(nèi)存儲(chǔ)器陣列的操作。此類型存儲(chǔ)器系統(tǒng)的實(shí)例 包括智能媒體卡和xD卡。因此,存儲(chǔ)器陣列的控制可通過所述卡片中控制器上的軟件或 主機(jī)中的控制軟件達(dá)成。除存儲(chǔ)器卡實(shí)施方案外,此類型的存儲(chǔ)器或者可被嵌入各種類 型的主機(jī)系統(tǒng)中。在可移除式與嵌入式應(yīng)用中,可根據(jù)由存儲(chǔ)器控制軟件實(shí)施的存儲(chǔ)方 案,將主機(jī)數(shù)據(jù)存儲(chǔ)于存儲(chǔ)器陣列中。兩個(gè)通用存儲(chǔ)器單元陣列架構(gòu)創(chuàng)建了商業(yè)應(yīng)用,NOR與NAND。在典型NOR陣列 中,存儲(chǔ)器單元連接于沿列方向延伸的鄰近位線源極與漏極擴(kuò)散之間,其中控制柵極連 接到沿單元行延伸的字線。存儲(chǔ)器單元包括定位于源極與漏極之間的單元通道區(qū)域的至 少一部分上方的至少一個(gè)存儲(chǔ)元件。存儲(chǔ)元件上的編程電平的電荷因此控制所述單元的 操作特征,其隨后可通過將適當(dāng)電壓施加到定址的存儲(chǔ)器單元而被讀取。所述單元的實(shí)
例,在第5,070,032,、 5,095,344、 5,313,421、 5,315,541、 5,343,063、 5,661,053和6,222,762 號(hào)美國(guó)專利中給出其在存儲(chǔ)器系統(tǒng)中的用途及其制造方法。這些專利連同本申請(qǐng)案中所 引用的所有其它專利和專利申請(qǐng)案一起全文以引用的方式并入本文中。NAND陣列利用兩個(gè)以上存儲(chǔ)器單元的串聯(lián)串(例如16或32),其和個(gè)別位線與參 考電位之間的一個(gè)或一個(gè)以上選擇晶體管連接以形成單元列。字線延伸橫跨大量這些列 內(nèi)的單元。通過致使串中的剩余單元被較難地開啟,在編程期間讀取并驗(yàn)證列內(nèi)的個(gè)別 單元,以便使流過串的電流視存儲(chǔ)于定址單元中的電荷的電平而定。NAND架構(gòu)陣列及 其作為存儲(chǔ)器系統(tǒng)的一部分的操作的實(shí)例參閱第5,570,315、 5,774,397、 6,046,935和 6,522,580號(hào)美國(guó)專利。如前述參考專利中所論述的當(dāng)前快閃EEPROM陣列的電荷存儲(chǔ)元件大多數(shù)通常為 導(dǎo)電浮動(dòng)?xùn)艠O,通常由傳導(dǎo)摻雜的多晶硅材料形成??捎糜诳扉WEEPROM系統(tǒng)的替代類 型的存儲(chǔ)器單元利用非傳導(dǎo)介電材料替代傳導(dǎo)浮動(dòng)?xùn)艠O,從而以非易失性方式來存儲(chǔ)電 荷。由氧化硅、氮化硅和氧化硅形成的三層電介質(zhì)(ONO)夾于傳導(dǎo)控制柵極與存儲(chǔ)器 單元通道上的半導(dǎo)襯底的表面之間。通過從所述單元通道將電子注入所述氮化物中來編 程所述單元,其中所述電子被收集并存儲(chǔ)于有限區(qū)域中,且通過將熱空穴注入所述氮化 物中來擦除所述單元。Harari等人的第2003/0109093號(hào)美國(guó)專利申請(qǐng)公開案中描述了使 用介電存儲(chǔ)元件的若干特定單元結(jié)構(gòu)和陣列。如在大多數(shù)全集成電路應(yīng)用中,用以縮減實(shí)施某一集成電路功能所需的硅襯底面積 的壓力也存在于快閃EEPROM存儲(chǔ)器單元陣列中。不斷需要增加可存儲(chǔ)于硅襯底的給定 面積內(nèi)的數(shù)字?jǐn)?shù)據(jù)的量,以便增加給定尺寸存儲(chǔ)器卡和其它類型封裝的存儲(chǔ)容量,或既 增加容量又減小尺寸。 一種增加數(shù)據(jù)的存儲(chǔ)密度的方式是每一存儲(chǔ)器單元和/或每一存儲(chǔ) 單元或元件存儲(chǔ)一個(gè)以上數(shù)據(jù)位。這通過將存儲(chǔ)元件電荷電平電壓范圍的窗口劃分為兩 種以上狀態(tài)而實(shí)現(xiàn)。使用四種所述狀態(tài)允許每一單元存儲(chǔ)兩個(gè)數(shù)據(jù)位,使用八種狀態(tài)則 每存儲(chǔ)元件存儲(chǔ)三個(gè)數(shù)據(jù)位,等等。第5,043,940和5,172,338號(hào)美國(guó)專利描述了使用浮 動(dòng)?xùn)艠O的多狀態(tài)快閃EEPROM結(jié)構(gòu)及其操作,且使用介電浮動(dòng)?xùn)艠O的結(jié)構(gòu)描述于前述第 2003/0109093號(hào)美國(guó)專利申請(qǐng)公開案中。多狀態(tài)存儲(chǔ)器單元陣列的選定部分因多種原因 也可以第5,930,167和6,456,528號(hào)美國(guó)專利中所描述的方式在兩種狀態(tài)(二元)下操作, 所述專利連同本申請(qǐng)案中所引用的所有專利和專利申請(qǐng)案一起全文以引用的方式并入本 文中。典型快閃EEPROM陣列的存儲(chǔ)器單元?jiǎng)澐譃楸灰黄鸩脸碾x散的單元區(qū)塊(擦除區(qū)
塊)。也就是說,所述擦除區(qū)塊是擦除單位,即可同時(shí)擦除的最小數(shù)目的單元。每一擦除 區(qū)塊通常存儲(chǔ)一個(gè)或一個(gè)以上頁的數(shù)據(jù),所述頁是編程和讀取的最小單位,但可在不同 子陣列或平面中并行編程或讀取一個(gè)以上頁。每一頁通常存儲(chǔ)一個(gè)或一個(gè)以上扇區(qū)的數(shù) 據(jù),所述扇區(qū)的尺寸通過主機(jī)系統(tǒng)界定。實(shí)例扇區(qū)包括512字節(jié)的用戶數(shù)據(jù)(遵循與磁 盤驅(qū)動(dòng)器建立的標(biāo)準(zhǔn)),加上關(guān)于所述用戶數(shù)據(jù)和/或存儲(chǔ)用戶數(shù)據(jù)的擦除區(qū)塊的額外開 銷信息的某一數(shù)目的字節(jié)。所述存儲(chǔ)器在每一擦除區(qū)塊內(nèi)通常配置有16、 32或更多頁, 且每一頁存儲(chǔ)一個(gè)或僅少數(shù)幾個(gè)主機(jī)扇區(qū)的數(shù)據(jù)。為了在將用戶數(shù)據(jù)編程到存儲(chǔ)器陣列中和從其中讀取用戶數(shù)據(jù)期間增加并行度的程 度,通常將陣列劃分為子陣列(一般稱作平面),其含有其自身的數(shù)據(jù)寄存器和其它電路 以允許并行操作,以便可同時(shí)將數(shù)據(jù)扇區(qū)編程到若干或所有平面的每一者中或從若干或 所有平面的每一者讀取數(shù)據(jù)扇區(qū)。單一集成電路上的陣列可物理劃分為平面,或每一平 面可由單獨(dú)的一個(gè)或一個(gè)以上集成電路芯片形成。第5,798,968和5,890,192號(hào)美國(guó)專利 中描述了所述存儲(chǔ)器實(shí)施方案的實(shí)例。為了進(jìn)一步有效地管理存儲(chǔ)器,可將擦除區(qū)塊鏈接在一起以形成虛擬區(qū)塊或元區(qū)塊 (metablock)。也就是說,界定每一元區(qū)塊以包括來自每一平面的一個(gè)擦除區(qū)塊。第 6,763,424號(hào)美國(guó)專利中描述了所述元區(qū)塊的用途。所述元區(qū)塊通過主機(jī)邏輯區(qū)塊地址而 被識(shí)別為編程和讀取數(shù)據(jù)的目的地。類似地,元區(qū)塊的所有擦除區(qū)塊被一起擦除。元區(qū) 塊可編程于元頁的單元中,所述單元包含來自元區(qū)塊中每一擦除區(qū)塊的一個(gè)頁。與此種 大區(qū)塊和/或元區(qū)塊一起操作的存儲(chǔ)器系統(tǒng)中的控制器執(zhí)行許多功能,包括從主機(jī)接收的 邏輯區(qū)塊地址(LBA)與存儲(chǔ)器單元陣列內(nèi)的物理區(qū)塊編號(hào)(PBN)之間的轉(zhuǎn)譯。擦除 區(qū)塊內(nèi)的個(gè)別頁通常由區(qū)塊地址內(nèi)的偏移識(shí)別。地址轉(zhuǎn)譯通常涉及使用邏輯區(qū)塊編號(hào) (LBN)的中間項(xiàng)和邏輯頁。在使用元區(qū)塊的存儲(chǔ)器系統(tǒng)中,所述元區(qū)塊可為存儲(chǔ)器陣 列的有效最小擦除單位。因此,視存儲(chǔ)器架構(gòu)而定,最小擦除單位(區(qū)塊)可為擦除區(qū) 塊或元區(qū)塊。視所述架構(gòu)而定,術(shù)語"區(qū)塊"可指代擦除區(qū)塊或元區(qū)塊。類似地,術(shù)語 "頁"可指代存儲(chǔ)器系統(tǒng)的最小編程單位。視存儲(chǔ)器系統(tǒng)的架構(gòu)而定,此可為單一擦除 區(qū)塊內(nèi)的頁,或可為延伸橫跨若干擦除區(qū)塊的元頁。存儲(chǔ)于元區(qū)塊中的數(shù)據(jù)經(jīng)常更新,更新的可能性隨所述元區(qū)塊的數(shù)據(jù)容量的增加而 增加。 一個(gè)元區(qū)塊的已更新扇區(qū)通常寫入到另一元區(qū)塊中。未改變的扇區(qū)通常也作為同 一編程操作的一部分而從原始元區(qū)塊復(fù)制到新的元區(qū)塊,以合并數(shù)據(jù)?;蛘?,未改變的 數(shù)據(jù)可保留于所述原始元區(qū)塊中,直到稍后再次與更新的數(shù)據(jù)合并到單一元區(qū)塊中為止。
將當(dāng)前數(shù)據(jù)合并到新區(qū)塊并擦除僅含有過時(shí)數(shù)據(jù)的區(qū)塊的操作通常稱為"垃圾收集 (garbage collection)"操作。通常操作具有保持于已擦除區(qū)塊池中的某些額外區(qū)塊的大區(qū)塊或元區(qū)塊系統(tǒng)。當(dāng)少 于區(qū)塊的容量的一個(gè)或一個(gè)以上數(shù)據(jù)頁正被更新時(shí),通常將己更新頁從所述池寫入到已 擦除區(qū)塊,且隨后將未改變的頁的數(shù)據(jù)從原始區(qū)塊復(fù)制到擦除池區(qū)塊。前述第6,763,424 號(hào)美國(guó)專利中描述了此技術(shù)的變化形式。隨著時(shí)間的過去,由于主機(jī)數(shù)據(jù)文件正被重新 寫入和更新,所以許多區(qū)塊可以其相對(duì)較少數(shù)目的含有有效數(shù)據(jù)的頁結(jié)束,并保留含有 不再是當(dāng)前數(shù)據(jù)的頁。為了能夠有效地使用陣列的數(shù)據(jù)存儲(chǔ)容量,時(shí)常從多個(gè)區(qū)塊中的 分段將有效數(shù)據(jù)的邏輯相關(guān)數(shù)據(jù)頁集合在一起,并一起合并為較少數(shù)目的區(qū)塊。此處理 通常稱為"垃圾收集"。在某些存儲(chǔ)器系統(tǒng)中,物理存儲(chǔ)器單元也分組為兩個(gè)或兩個(gè)以上區(qū)域。區(qū)域可為物 理存儲(chǔ)器或存儲(chǔ)器系統(tǒng)的指定范圍的邏輯區(qū)塊地址被映射到達(dá)的任一分割子集。舉例來 說,能夠存儲(chǔ)64兆字節(jié)的數(shù)據(jù)的存儲(chǔ)器系統(tǒng)可分割為四個(gè)區(qū)域,其中每一區(qū)域存儲(chǔ)16 兆字節(jié)的數(shù)據(jù)。邏輯區(qū)塊地址的范圍隨后也劃分為四組,向所述四個(gè)區(qū)域中的每一者的 物理區(qū)塊指派一個(gè)群組。在典型實(shí)施方案中,抑制邏輯區(qū)塊地址,以便每一者的數(shù)據(jù)決 不被寫入到邏輯區(qū)塊地址被映射到達(dá)的單一物理區(qū)域外。在劃分為平面(子陣列)的存 儲(chǔ)器單元陣列中(其中每一平面具有其自身的定址、編程和讀取電路),每一區(qū)域優(yōu)選包 括來自多個(gè)平面的區(qū)塊,通常包括來自所述平面的每一者的相同數(shù)目的區(qū)塊。區(qū)域主要 用于簡(jiǎn)化地址管理(例如,邏輯到物理的轉(zhuǎn)譯),從而產(chǎn)生較小的轉(zhuǎn)譯表、保持這些表所 需的較少RAM存儲(chǔ)器和用以定址存儲(chǔ)器的當(dāng)前活動(dòng)區(qū)域的較快存取時(shí)間,但由于其限制 性性質(zhì),可能產(chǎn)生不及最佳損耗水平的損耗水平。個(gè)別快閃EEPROM單元在電荷存儲(chǔ)元件或單元中存儲(chǔ)表示一個(gè)或一個(gè)以上數(shù)據(jù)位 的一定量的電荷。存儲(chǔ)元件的電荷電平控制其存儲(chǔ)器單元的閾值電壓(通常稱為VT), 其用作讀取所述單元的存儲(chǔ)狀態(tài)的基礎(chǔ)。閾值電壓窗口通常劃分為許多范圍,存儲(chǔ)器單 元的兩個(gè)或兩個(gè)以上存儲(chǔ)狀態(tài)中的每一者具有一個(gè)范圍。這些范圍由包括允許確定個(gè)別 單元的存儲(chǔ)狀態(tài)的標(biāo)稱感測(cè)電平的安全帶分隔。這些存儲(chǔ)裝置電平確實(shí)由于干擾在鄰近 或其它相關(guān)存儲(chǔ)器單元、頁或區(qū)塊中執(zhí)行的編程、讀取或擦除操作的電荷而偏移。因此 錯(cuò)誤校正碼(ECC)通常由控制器計(jì)算,并與正被編程的主機(jī)數(shù)據(jù)一起存儲(chǔ),且在讀取 期間用于驗(yàn)證數(shù)據(jù)并在必要時(shí)執(zhí)行某水平的數(shù)據(jù)校正。并且,在干擾操作致使電荷電平 完全偏移出其被界定的范圍并因此導(dǎo)致讀取錯(cuò)誤數(shù)據(jù)之前,偏移的電荷電平可時(shí)常被恢復(fù)回到其狀態(tài)范圍的中心。第5,532,962和5,909,449號(hào)美國(guó)專利中描述了此處理,稱為 數(shù)據(jù)刷新或擦洗(scrub )。在某些存儲(chǔ)器陣列中,頁可由可保留多個(gè)數(shù)據(jù)扇區(qū)的擦除區(qū)塊的一部分組成。 一旦 所述頁已被寫入,就不可能在不破壞已寫入的數(shù)據(jù)的情況下進(jìn)行進(jìn)一步寫入。對(duì)于使用 所述系統(tǒng)的存儲(chǔ)器陣列,可通過連接到相同字線的一組存儲(chǔ)器單元來界定頁。所述存儲(chǔ) 器陣列可被無效地編程,其中以小于頁尺寸的量接收數(shù)據(jù)。舉例來說,在以一次一個(gè)扇 區(qū)的方式接收數(shù)據(jù)的情況下,僅一個(gè)扇區(qū)可編程到頁。不可在不冒破壞己存儲(chǔ)于頁處的 數(shù)據(jù)扇區(qū)的風(fēng)險(xiǎn)的情況下將額外數(shù)據(jù)編程到所述頁。有時(shí),可接收一系列單一扇區(qū),其 間具有某些延遲。在此情況下,每一扇區(qū)寫入到所述存儲(chǔ)器陣列的單獨(dú)頁中。因此,以在如何使用存儲(chǔ)器陣列中的空間方面無效的方式存儲(chǔ)所述扇區(qū)。在使用多級(jí)邏輯時(shí),存 儲(chǔ)器單元對(duì)附近單元的稍后編程的效果尤其敏感。另外,多級(jí)單元的編程通常通過編程具有第一頁數(shù)據(jù)的一單元群組,且稍后編程具有第二頁數(shù)據(jù)的單元來完成。在某些情況 下,所述第二頁數(shù)據(jù)的編程可導(dǎo)致對(duì)所述第一頁數(shù)據(jù)的破壞。因此,需要一種當(dāng)存儲(chǔ)器 陣列以少于頁的量接收數(shù)據(jù)時(shí)在具有多扇區(qū)頁的存儲(chǔ)器陣列中存儲(chǔ)數(shù)據(jù)的更有效的方 式。還需要一種當(dāng)編程一多級(jí)單元群組時(shí)防止在編程后續(xù)頁期間破壞第一頁的數(shù)據(jù)的方 式。發(fā)明內(nèi)容在具有作為擦除單位的區(qū)塊的存儲(chǔ)器陣列中,可將一個(gè)或一個(gè)以上區(qū)塊指定為高速 暫存區(qū)塊(scratch pad block),且可將其用于改進(jìn)存儲(chǔ)器系統(tǒng)的性能。高速暫存區(qū)塊可作 為緩沖器而操作,以便以低程度的并行度將數(shù)據(jù)寫入到所述高速暫存區(qū)塊,且隨后以高 程度的并行度將數(shù)據(jù)復(fù)制到所述存儲(chǔ)器陣列內(nèi)的另一位置。數(shù)據(jù)可積累于所述高速暫存 區(qū)塊內(nèi),直到可將其較有效地寫入到另一位置為止。在具有多扇區(qū)頁的存儲(chǔ)器中,可積 累扇區(qū),直到可使用系統(tǒng)的最大并行度對(duì)整頁進(jìn)行寫入為止。在多級(jí)單元存儲(chǔ)器中,可 將下部頁存儲(chǔ)于高速暫存區(qū)塊中,直到上部頁可用為止,以便將上部和下部頁存儲(chǔ)在一 起。特定編程操作的并行度程度與一起編程的數(shù)據(jù)位的數(shù)目成比例。因此, 一起編程大 量數(shù)據(jù)被認(rèn)為是以高并行度進(jìn)行的寫入,而一起編程少量數(shù)據(jù)被認(rèn)為是低并行度。在使 用小于頁的并行度時(shí),存儲(chǔ)器陣列中的空間可能被浪費(fèi),且此浪費(fèi)的空間意味著必須更 頻繁地執(zhí)行垃圾收集,因此對(duì)存儲(chǔ)器系統(tǒng)的效率產(chǎn)生負(fù)面影響。有時(shí),必須將少量數(shù)據(jù) 存儲(chǔ)于存儲(chǔ)器系統(tǒng)中。通過在一個(gè)位置(高速暫存區(qū)塊)中寫入這些小寫入,且隨后以 較高的并行度將其一起寫入到另一位置,可改進(jìn)所述存儲(chǔ)器系統(tǒng)的效率。本發(fā)明揭示一種在具有由多個(gè)數(shù)據(jù)扇區(qū)組成的頁的最小編程單位的存儲(chǔ)器系統(tǒng)中存 儲(chǔ)以少于一個(gè)頁的量被接收的數(shù)據(jù)的方法。指定為高速暫存區(qū)塊的區(qū)塊用于存儲(chǔ)所接收 的扇區(qū),直到可將完整頁寫入到快閃存儲(chǔ)器陣列為止。將第一扇區(qū)存儲(chǔ)于所述高速暫存 區(qū)塊的第一頁中。隨后接收的扇區(qū)可存儲(chǔ)于所述高速暫存區(qū)塊的額外頁中。個(gè)別接收的 扇區(qū)或數(shù)群組扇區(qū)當(dāng)被接收時(shí)保存于所述高速暫存區(qū)塊的新頁中。來自所述高速暫存區(qū) 塊中其它頁的先前存儲(chǔ)的扇區(qū)可與新數(shù)據(jù)一起復(fù)制到最新頁。因此,只要在所述高速暫 存區(qū)塊的頁中存在少于整頁的新數(shù)據(jù),就將數(shù)據(jù)扇區(qū)積累于所述高速暫存區(qū)塊中。以比 區(qū)塊的最大可用并行度低的程度的并行度將扇區(qū)寫入到所述高速暫存區(qū)塊中。當(dāng)扇區(qū)存 儲(chǔ)于所述高速暫存區(qū)塊中時(shí)可更新所述扇區(qū)。當(dāng)接收新數(shù)據(jù)扇區(qū)(其導(dǎo)致整頁的數(shù)據(jù)可 用于編程)時(shí),所述新扇區(qū)與先前存儲(chǔ)于所述高速暫存區(qū)塊中的扇區(qū)可被一起編程到所 述存儲(chǔ)器陣列的另一區(qū)塊中的相同頁。此頁完全由數(shù)據(jù)填充,并被以最大可用并行度寫 入。存儲(chǔ)于所述高速暫存區(qū)塊中的數(shù)據(jù)可隨后被標(biāo)記為過時(shí),并可在適宜的時(shí)間擦除。 因此,更有效地使用了快閃存儲(chǔ)器中的空間,且降低了垃圾收集操作的頻率。在具有多級(jí)單元的存儲(chǔ)器中,高速暫存區(qū)塊可存儲(chǔ)也被寫入到活動(dòng)區(qū)塊的數(shù)據(jù)頁。所述存儲(chǔ)的頁可保留于所述高速暫存區(qū)塊中,直到接收到另一數(shù)據(jù)頁為止,以便可將兩 個(gè)數(shù)據(jù)頁一起寫入到其在活動(dòng)區(qū)塊中的目的地??墒褂酶叱潭炔⑿卸葘⑵渥鳛樯喜宽摵?下部頁一起寫入,且與將其分開寫入相比破壞數(shù)據(jù)的風(fēng)險(xiǎn)較低。也可使用所述高速暫存 區(qū)塊在編程相關(guān)聯(lián)的上部頁期間保留先前編程的下部頁的副本,使得如果存在功率損失, 那么可從所述高速暫存區(qū)塊恢復(fù)所述下部頁中的數(shù)據(jù)。高速暫存區(qū)塊可允許臨時(shí)存儲(chǔ)將被寫入到另一位置的數(shù)據(jù)。可在區(qū)塊的數(shù)據(jù)扇區(qū)的 更新期間,將數(shù)據(jù)存儲(chǔ)于高速暫存區(qū)塊中。在區(qū)塊內(nèi)的頁含有來自不同文件的數(shù)據(jù)扇區(qū) 時(shí),在更新任一區(qū)塊時(shí)更新所述頁。使用常規(guī)方法可能需要一個(gè)以上的區(qū)塊來存儲(chǔ)來自 兩個(gè)文件的己更新數(shù)據(jù),因?yàn)榭赡苄枰辔募摰膬蓚€(gè)副本。使用高速暫存區(qū)塊允許存 儲(chǔ)來自一個(gè)文件的頁的一部分,直到(來自其它文件的)所述頁的剩余部分可用為止。 隨后,使用最大并行度將完整的已更新頁編程到其目的地。高速暫存區(qū)塊可含有不相關(guān)的數(shù)據(jù)的扇區(qū)。主機(jī)數(shù)據(jù)扇區(qū)與控制數(shù)據(jù)扇區(qū)均可存儲(chǔ) 于高速暫存區(qū)塊中。主機(jī)數(shù)據(jù)扇區(qū)與控制數(shù)據(jù)扇區(qū)可存儲(chǔ)于高速暫存區(qū)塊內(nèi)的相同頁中。 來自兩個(gè)不同文件或來自同一文件的邏輯上遠(yuǎn)離部分的扇區(qū)可存儲(chǔ)于高速暫存區(qū)塊的相 同頁中。這可允許以最大并行度編程所述高速暫存區(qū)塊,以便在接收數(shù)據(jù)時(shí)保持較高速
度。當(dāng)以較低速度接收數(shù)據(jù)時(shí),頁中的額外空間可由含有控制數(shù)據(jù)的扇區(qū)占用。這可允 許較不頻繁地更新控制數(shù)據(jù)結(jié)構(gòu),因此降低垃圾收集的頻率。通常,存儲(chǔ)于高速暫存區(qū)塊的相同頁中的扇區(qū)不需要屬于不同的文件。作為獨(dú)立數(shù) 據(jù)對(duì)象,其僅需為例如相同頁的但通過不同的寫入命令寫入的兩個(gè)邏輯扇區(qū)。高速暫存器可由標(biāo)記扇區(qū)識(shí)別,以便控制器可容易地識(shí)別所述高速暫存器。存儲(chǔ)于 高速暫存區(qū)塊中的數(shù)據(jù)的索引可保留于索引扇區(qū)中,所述索引扇區(qū)本身存儲(chǔ)于所述高速 暫存區(qū)塊中。由于新扇區(qū)存儲(chǔ)于所述高速暫存區(qū)塊中,所以所述索引扇區(qū)通過以新索引 扇區(qū)替換舊索引扇區(qū)而被更新。類似地,由于將所述高速暫存區(qū)塊中的扇區(qū)復(fù)制到其它 位置,所以可更新所述索引扇區(qū)以指示所述高速暫存區(qū)塊中的這些扇區(qū)為過時(shí)的。高速暫存區(qū)塊和更新區(qū)塊的改進(jìn)的索引-保留于高速暫存區(qū)塊中的SPBI/CBI索引根據(jù)本發(fā)明另一方面,當(dāng)除更新區(qū)塊外還使用高速暫存區(qū)塊時(shí),使用相關(guān)聯(lián)的高速 暫存區(qū)塊索引("SPBI")來跟蹤記錄于所述高速暫存區(qū)塊中的更新扇區(qū)。這(除索引(例 如,"cm")夕卜)用于跟蹤記錄于所述更新區(qū)塊中的邏輯扇區(qū)。只要將用戶數(shù)據(jù)存儲(chǔ)于高 速暫存區(qū)塊的部分頁中,就意味著所述頁的至少最后槽(slot)未填滿。在一個(gè)實(shí)施例中, SPBI可存儲(chǔ)于所述高速暫存區(qū)塊中部分頁的最后槽中。在優(yōu)選實(shí)施例中,SPBI和CBI 可封裝于SPBI/CBI扇區(qū)內(nèi),并存儲(chǔ)于無論如何都不被使用的高速暫存區(qū)塊中部分頁的最 后槽中。每次寫入新部分頁,就在末端槽處寫入更新的SPBI/CBI扇區(qū),從而使所有先前 的版本過時(shí)。同時(shí),索引方案利用高速暫存區(qū)塊中未使用的存儲(chǔ)裝置來在非易失性存儲(chǔ)器中存儲(chǔ) 索引。根據(jù)本發(fā)明的又一方面,存儲(chǔ)于存儲(chǔ)器區(qū)塊中的數(shù)據(jù)使其索引存儲(chǔ)于部分頁的未被 數(shù)據(jù)占用的部分中。因此,在組織為存儲(chǔ)器單元(其中存儲(chǔ)器單元的頁可一起編程且存 儲(chǔ)器頁的區(qū)塊可一起擦除)的存儲(chǔ)器中,當(dāng)存儲(chǔ)于所述存儲(chǔ)器單元中的數(shù)據(jù)單位根據(jù)預(yù) 定次序在所述頁中對(duì)準(zhǔn)時(shí),且尤其如果所述頁在每次擦除之后可一次編程,那么將存在 被部分填充的頁。所述區(qū)塊的索引隨后存儲(chǔ)于未用更新數(shù)據(jù)填充的部分頁中。所述部分 頁可在當(dāng)前區(qū)塊中或另一區(qū)塊中。多流更新跟蹤-兩個(gè)或兩個(gè)以上流之間的同步根據(jù)本發(fā)明的另一方面,提供一種將更新數(shù)據(jù)寫入到具有同歩信息的非易失性存儲(chǔ) 器的方法,所述同步信息允許識(shí)別可能存在于多個(gè)存儲(chǔ)器區(qū)塊上的數(shù)據(jù)的最近寫入的版 本。來自主機(jī)的更新數(shù)據(jù)可經(jīng)由多個(gè)流而被引導(dǎo)到多個(gè)區(qū)塊。所述同步信息的保持通過
存儲(chǔ)關(guān)于在所述流中的至少一者的每次更新時(shí)所述流/區(qū)塊有多滿的信息來完成。在優(yōu)選實(shí)施例中,指向區(qū)塊中第一空位的寫入指針將指示所述區(qū)塊有多滿。舉例來說,在兩個(gè)流之間,第二區(qū)塊的寫入指針的值指示在將所述寫入指針寫入到第一區(qū)塊時(shí)所述第二區(qū)塊有多滿。此外,所述寫入指針保存于所述第一區(qū)塊中的位置同樣指示此時(shí)所述第一區(qū)塊有多滿。本發(fā)明尤其適用于非易失性存儲(chǔ)器,其組織為可擦除的存儲(chǔ)器單元區(qū)塊,每一存儲(chǔ)器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織為一個(gè)或一個(gè)以上頁。此外,每一頁在擦除之后可以多個(gè)邏輯單位一次編程,每一邏輯單位以給定頁偏移而處于預(yù)定次序。 所述方法大體上提供用于存儲(chǔ)或緩沖一邏輯單位群組的更新數(shù)據(jù)的兩個(gè)區(qū)塊(例如,更 新區(qū)塊和高速暫存區(qū)塊),并保持用于幫助識(shí)別邏輯單位的最近寫入版本位于第一還是第 二區(qū)塊中的同步信息。根據(jù)優(yōu)選實(shí)施例,每當(dāng)寫入指針形式的同步信息在高速暫存區(qū)塊中被緩沖時(shí),所述 同步信息與主機(jī)數(shù)據(jù)被保存在一起。所述寫入指針是更新區(qū)塊寫入指針,其給出在將所 述寫入指針保存于所述高速暫存區(qū)塊中時(shí)所述更新區(qū)塊中的下一寫入的位置的地址。特 定來說,其被保存于所述高速暫存區(qū)塊中無論如何都不用于存儲(chǔ)主機(jī)數(shù)據(jù)的一部分中。 優(yōu)選地,所述更新區(qū)塊寫入指針包括在存儲(chǔ)于所述高速暫存區(qū)塊的部分頁中的索引 SPBI/CBI中。所述更新區(qū)塊寫入指針將允許確定緩沖于所述高速暫存區(qū)塊中的給定邏輯 扇區(qū)是否己通過隨后到所述更新區(qū)塊的寫入而變?yōu)檫^時(shí)的。根據(jù)本發(fā)明的另一實(shí)施例,保持同步信息,所述同步信息將允許確定緩沖于所述高 速暫存區(qū)塊中的給定邏輯扇區(qū)是否已通過到所述更新區(qū)塊的隨后寫入而變?yōu)檫^時(shí)的。這 通過包括高速暫存器寫入指針而完成,所述寫入指針給出在將所述同步信息存儲(chǔ)于更新 區(qū)塊的頁中時(shí)所述高速暫存區(qū)塊中下一寫入的位置的地址在又一實(shí)施例中,可將所述同步信息編碼為寫入到多個(gè)流的數(shù)據(jù)扇區(qū)的時(shí)戳,以便 可正確找到最新版本。在優(yōu)選實(shí)施例中,所述時(shí)戳信息存儲(chǔ)于正被寫入的頁中的扇區(qū)的至少一者的額外開 銷部分中。具有管線操作的多流更新根據(jù)本發(fā)明的另一方面, 一種更新非易失性存儲(chǔ)器的方法包括使用用于記錄更新數(shù) 據(jù)的第一區(qū)塊(更新區(qū)塊)和用于在記錄到所述更新區(qū)塊之前臨時(shí)保存某些更新數(shù)據(jù)的 第二區(qū)塊(高速暫存區(qū)塊)。所述非易失性存儲(chǔ)器組織為可擦除的存儲(chǔ)器單元區(qū)塊,每一
存儲(chǔ)器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織為一個(gè)或一個(gè)以上頁,其中每一 頁能夠存儲(chǔ)具有確定的頁偏移的多個(gè)邏輯單位,且在擦除之后可一起一次編程。所述方 法進(jìn)一步包括從主機(jī)接收所述邏輯單位,和將所述接收的邏輯單位逐頁對(duì)準(zhǔn),以便當(dāng)滿 足接收的邏輯單位具有頁末偏移的預(yù)定條件時(shí),將所述接收的邏輯單位與先前任何邏輯 單位以適當(dāng)?shù)捻搶?duì)準(zhǔn)存儲(chǔ)到所述更新區(qū)塊中的頁,否則,將任何剩余的所接收的邏輯單 位臨時(shí)存儲(chǔ)到所述高速暫存區(qū)塊中的部分頁。當(dāng)滿足所述預(yù)定條件時(shí),最終將所述高速 暫存區(qū)塊中的所述邏輯單位轉(zhuǎn)移到所述更新區(qū)塊。在優(yōu)選實(shí)施例中,接收所述更新數(shù)據(jù),并逐頁解析,用于轉(zhuǎn)移到所述第一區(qū)塊(例 如,更新區(qū)塊)。將任何剩余的所接收數(shù)據(jù)的部分頁轉(zhuǎn)移到所述第二區(qū)塊(例如,高速暫 存區(qū)塊),且其將保留于第二區(qū)塊處直到數(shù)據(jù)的整頁變得可用于記錄到所述第一區(qū)塊為 止。盡管所記錄的頁僅被部分地用所述接收的數(shù)據(jù)填充,但當(dāng)將所述接收的數(shù)據(jù)轉(zhuǎn)移到 所述第二區(qū)塊時(shí),其被逐頁記錄。所述部分頁中的空閑(通常未使用的)空間用于存儲(chǔ) 用于定位第二和第一區(qū)塊中的數(shù)據(jù)的索引。根據(jù)另一優(yōu)選實(shí)施例,實(shí)施預(yù)示性管線操作,其中,并非等待直到確定針對(duì)向所述 更新區(qū)塊記錄的預(yù)定條件為止,而是設(shè)置所述更新區(qū)塊,從而一旦所述主機(jī)寫入命令指 示期望被寫入的數(shù)據(jù)單位潛在地滿足預(yù)定條件就向所述更新區(qū)塊進(jìn)行寫入。以此方式, 當(dāng)?shù)却齺碜灾鳈C(jī)的數(shù)據(jù)單位時(shí),所述設(shè)置可具有跳躍式開始。當(dāng)最終接收的實(shí)際數(shù)據(jù)單 位確實(shí)滿足所述預(yù)定條件時(shí),所述更新區(qū)塊中頁的編程可立即進(jìn)行,而無需等待設(shè)置, 藉此改進(jìn)寫入性能。在所述主機(jī)寫入中斷且所接收的實(shí)際數(shù)據(jù)單位不再滿足所述預(yù)定條 件的情況下,將放棄所述用于記錄到所述更新區(qū)塊的設(shè)置,且改為將把所述數(shù)據(jù)單位記 錄到所述高速暫存區(qū)塊中。在另一優(yōu)選實(shí)施例中,在數(shù)據(jù)正被接收時(shí)且當(dāng)在將所接收的數(shù)據(jù)記錄到第一存儲(chǔ)裝 置還是第二存儲(chǔ)裝置方面初始存在不確定性時(shí),將所述接收的數(shù)據(jù)載入到編程電路的數(shù) 據(jù)鎖存器以用于第一與第二存儲(chǔ)裝置兩者。以此方式,所述數(shù)據(jù)將始終可立即用于編程 第一或第二存儲(chǔ)裝置。在特殊情況下,所述第一和第二存儲(chǔ)裝置共享相同組的數(shù)據(jù)鎖存 器。舉例來說,當(dāng)?shù)谝缓偷诙鎯?chǔ)裝置處于相同存儲(chǔ)器平面中時(shí),其可由具有相同組的 讀出放大器和數(shù)據(jù)鎖存器的相同組的編程電路服務(wù)。在所述情況下,數(shù)據(jù)將被載入到一 組默認(rèn)的數(shù)據(jù)鎖存器,而與將編程第一存儲(chǔ)裝置還是第二存儲(chǔ)裝置無關(guān)。從對(duì)本發(fā)明的優(yōu)選實(shí)施例的以下描述中將了解本發(fā)明的額外特征和優(yōu)勢(shì),所述描述 內(nèi)容應(yīng)與附圖結(jié)合來理解。
圖1A和1B分別是一起操作的非易失性存儲(chǔ)器和主機(jī)系統(tǒng)的方框圖。 圖2說明圖1A的存儲(chǔ)器陣列的第一實(shí)例組織。圖3展示具有如存儲(chǔ)于圖1A的存儲(chǔ)器陣列中的額外開銷數(shù)據(jù)的實(shí)例主機(jī)數(shù)據(jù)扇區(qū)。圖4說明圖1A的存儲(chǔ)器陣列的第二實(shí)例組織。圖5說明圖1A的存儲(chǔ)器陣列的第三實(shí)例組織。圖6展示圖1A的存儲(chǔ)器陣列的所述第三實(shí)例組織的擴(kuò)展。圖7是處于一種特定配置的圖1A的陣列的存儲(chǔ)器單元群組的電路圖。圖8展示例如圖1A的存儲(chǔ)器陣列的存儲(chǔ)器陣列的區(qū)塊中數(shù)據(jù)扇區(qū)的存儲(chǔ)。圖9展示例如圖1A的存儲(chǔ)器陣列的存儲(chǔ)器陣列的區(qū)塊中數(shù)據(jù)扇區(qū)的替代性存儲(chǔ)。圖10A展示在垃圾收集操作期間在復(fù)制到另一區(qū)塊之后圖8或9的數(shù)據(jù)扇區(qū)。圖IOB展示在第二垃圾收集操作期間在復(fù)制到另一區(qū)塊之后圖IOA的數(shù)據(jù)扇區(qū)。圖IOC展示在接收較多數(shù)據(jù)扇區(qū)之后圖IOB的區(qū)塊。圖IIA展示使用兩個(gè)擦除區(qū)塊,活動(dòng)區(qū)塊和高速暫存區(qū)塊,來存儲(chǔ)圖IOA和IOB的 數(shù)據(jù)扇區(qū)的替代性存儲(chǔ)配置。圖11B展示使用兩個(gè)元區(qū)塊,活動(dòng)區(qū)塊和高速暫存區(qū)塊,來存儲(chǔ)圖IOA和10B的數(shù) 據(jù)扇區(qū)的替代性存儲(chǔ)配置。圖12A展示用于存儲(chǔ)數(shù)據(jù)扇區(qū)以便可在存儲(chǔ)而未觸發(fā)垃圾收集操作時(shí)更新所述數(shù)據(jù) 扇區(qū)的兩個(gè)區(qū)塊,活動(dòng)區(qū)塊和高速暫存區(qū)塊。圖12B展示圖12A的替代性存儲(chǔ)系統(tǒng),其允許在存儲(chǔ)而未觸發(fā)垃圾收集時(shí)更新頁的 所有扇區(qū)。圖13展示用于在多級(jí)單元中存儲(chǔ)兩個(gè)數(shù)據(jù)位的四個(gè)閾值電壓范圍。圖14展示多級(jí)單元的兩個(gè)區(qū)塊,活動(dòng)區(qū)塊和高速暫存區(qū)塊,其中所述高速暫存區(qū)塊 保留活動(dòng)區(qū)塊的下部頁的副本。圖15展示來自存儲(chǔ)于區(qū)塊中的兩個(gè)文件的數(shù)據(jù)扇區(qū),和當(dāng)更新所述兩個(gè)文件需要存 儲(chǔ)器陣列中的空間的一個(gè)以上區(qū)塊時(shí)所述數(shù)據(jù)扇區(qū)的后續(xù)存儲(chǔ)。圖16展示更新圖15的數(shù)據(jù)扇區(qū)的替代性系統(tǒng),其中高速暫存區(qū)塊在扇區(qū)被復(fù)制到 活動(dòng)區(qū)塊之前存儲(chǔ)某些扇區(qū)。圖17展示高速暫存區(qū)塊在相同頁中存儲(chǔ)不相關(guān)數(shù)據(jù)的扇區(qū),以及隨后將此數(shù)據(jù)復(fù)制 到不同位置。
圖18展示高速暫存區(qū)塊存儲(chǔ)經(jīng)受多個(gè)更新的不相關(guān)數(shù)據(jù)的扇區(qū)。圖19展示高速暫存區(qū)塊由標(biāo)記扇區(qū)識(shí)別。圖20展示圖19的高速暫存區(qū)塊存儲(chǔ)扇區(qū)群組和一索引扇區(qū)。圖21展示圖20的高速暫存區(qū)塊存儲(chǔ)第二扇區(qū)群組和替換第一索引扇區(qū)的第二索引 扇區(qū)。圖22展示圖21的高速暫存區(qū)塊存儲(chǔ)第三扇區(qū)群組和替換第二索引扇區(qū)的第三索引 扇區(qū)。圖23展示當(dāng)將一群組復(fù)制到另一區(qū)塊時(shí)圖22的高速暫存區(qū)塊具有替換第三索引扇 區(qū)的第四索引扇區(qū)。圖24說明以常規(guī)方式正被更新并存儲(chǔ)于具有單扇區(qū)頁的更新區(qū)塊中的邏輯群組中 的扇區(qū)的實(shí)例。圖25說明當(dāng)應(yīng)用于頁為多扇區(qū)且可能可一次寫入的存儲(chǔ)器時(shí),圖24中展示的相同 寫入序列。圖26是說明根據(jù)本發(fā)明的通用實(shí)施例的更新數(shù)據(jù)的方法的流程圖,所述方法通過將 第一存儲(chǔ)器區(qū)塊與第二存儲(chǔ)器區(qū)塊結(jié)合使用并將所存儲(chǔ)的數(shù)據(jù)的索引保存于第二區(qū)塊中 來更新數(shù)據(jù)。圖27A說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例的通過將更新區(qū)塊與高速暫存區(qū)塊結(jié)合使用來 更新數(shù)據(jù)和保持索引的特定實(shí)例。圖27B說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例的通過將更新區(qū)塊與高速暫存區(qū)塊結(jié)合使用來 更新正保持的數(shù)據(jù)的循序次序的另一實(shí)例。圖28說明用于保存存儲(chǔ)器區(qū)塊的索引的優(yōu)選方案,所述索引用于將更新數(shù)據(jù)存儲(chǔ)于 所述區(qū)塊的部分頁中。圖29示意說明用于多流更新的高速暫存區(qū)塊,在所述多流更新中若干邏輯群組同時(shí) 經(jīng)受更新。圖30說明將輸入數(shù)據(jù)序列寫入到區(qū)塊的常規(guī)情況。圖31A說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例即使當(dāng)不同的寫入交叉于兩個(gè)區(qū)塊上時(shí)也跟蹤記錄次序或優(yōu)先級(jí)的方案。圖31B說明當(dāng)寫入記錄于兩個(gè)區(qū)塊上時(shí)跟蹤記錄次序的另一實(shí)施例。圖32A是說明根據(jù)本發(fā)明的通用實(shí)施例的在兩個(gè)數(shù)據(jù)流之間使記錄序列同步的方法的流程圖。
圖32B是說明根據(jù)使用寫入指針的實(shí)施例的在兩個(gè)數(shù)據(jù)流之間使記錄序列同步的方 法的流程圖。圖33A展示在根據(jù)第一次序的兩個(gè)主機(jī)寫入弁1和井2之后高速暫存區(qū)塊和更新區(qū)塊的 狀態(tài)。圖33B展示在根據(jù)與圖33A中所示的第一序列相反的第二序列的兩個(gè)主機(jī)寫入#1和#2之后高速暫存區(qū)塊和更新區(qū)塊的狀態(tài)。圖34A說明高速暫存區(qū)塊索引(SPBI)的優(yōu)選數(shù)據(jù)結(jié)構(gòu)。圖34B說明高速暫存區(qū)塊索引中針對(duì)圖33A中所示的主機(jī)寫入#1的實(shí)例值。圖35A和圖35B展示在圖33A和圖33B的循序主機(jī)寫入之后,高速暫存區(qū)塊和更新區(qū)塊分別相對(duì)于高速暫存器寫入指針的中間狀態(tài)。圖36說明存儲(chǔ)于被記錄到更新區(qū)塊的扇區(qū)的額外開銷部分中的高速暫存器寫入指針。圖37說明使用時(shí)戳來跟蹤兩個(gè)更新流之間的記錄序列。圖38是說明根據(jù)本發(fā)明的通用實(shí)施例的將更新數(shù)據(jù)同時(shí)記錄并編索引到兩個(gè)存儲(chǔ) 器區(qū)塊的方法的流程圖,每一存儲(chǔ)器區(qū)塊具有多扇區(qū)頁。圖39是說明使用高速暫存區(qū)塊和更新區(qū)塊的圖37的方法的更具體實(shí)施方案的流程圖。圖40A示意說明具有一系列讀取/寫入電路的存儲(chǔ)器裝置,其提供實(shí)施本發(fā)明的情境。圖40B說明圖40A中所示的存儲(chǔ)器裝置的優(yōu)選配置。 圖41更詳細(xì)地說明圖40A中所示的感測(cè)模塊。圖42是說明根據(jù)優(yōu)選實(shí)施例的使用預(yù)示性管線方案的多流更新的流程圖。圖43是說明根據(jù)另一實(shí)施例的多流更新的流程圖,在所述多流更新中在發(fā)送正確目的地地址之前載入編程數(shù)據(jù)。
具體實(shí)施方式
存儲(chǔ)器架構(gòu)及其操作先參看圖1A,快閃存儲(chǔ)器包括存儲(chǔ)器單元陣列和控制器。在所示的實(shí)例中,兩個(gè)集 成電路裝置(芯片)11和13包括存儲(chǔ)器單元陣列15和多個(gè)邏輯電路17。所述邏輯電路 17經(jīng)由數(shù)據(jù)、命令和狀態(tài)電路在單獨(dú)芯片上與控制器19介接,且還提供定址、數(shù)據(jù)轉(zhuǎn) 移與感測(cè)和對(duì)所述陣列13的其它支持。視所提供的存儲(chǔ)容量而定,許多存儲(chǔ)器陣列芯片
可為一個(gè)到很多個(gè)?;蛘?,可將所述控制器和部分或整個(gè)陣列組合到單一集成電路芯片 上,但這目前并非經(jīng)濟(jì)的選擇。典型的控制器19包括微處理器21、主要存儲(chǔ)固件的只讀存儲(chǔ)器(ROM) 23和主要 用于臨時(shí)存儲(chǔ)被寫入到存儲(chǔ)器芯片11和13或從存儲(chǔ)器芯片11和13進(jìn)行讀取的用戶數(shù) 據(jù)的緩沖存儲(chǔ)器(RAM) 25。電路27與存儲(chǔ)器陣列芯片介接,且電路29經(jīng)由連接31 與主機(jī)介接。在此實(shí)例中數(shù)據(jù)的完整性通過以專門計(jì)算代碼的電路33計(jì)算ECC而確定。 在用戶數(shù)據(jù)從主機(jī)正被轉(zhuǎn)移到快閃存儲(chǔ)器陣列用于存儲(chǔ)時(shí),所述電路計(jì)算來自數(shù)據(jù)的 ECC,且所述代碼存儲(chǔ)于存儲(chǔ)器中。當(dāng)稍后從所述存儲(chǔ)器讀取用戶數(shù)據(jù)時(shí),再次使其經(jīng) 過電路33,電路33通過相同的算法計(jì)算所述ECC并將所述代碼與使用數(shù)據(jù)計(jì)算并存儲(chǔ) 的代碼進(jìn)行比較。如果兩者相當(dāng),那么確定數(shù)據(jù)的完整性。如果兩者不同,那么視所利 用的特定ECC算法而定,可識(shí)別并校正那些錯(cuò)誤位(多達(dá)所述算法所支持的數(shù)目)。圖1A的存儲(chǔ)器的連接31與主機(jī)系統(tǒng)的連接31'配對(duì),圖1B中給出其實(shí)例。圖1A 的所述主機(jī)與所述存儲(chǔ)器之間的數(shù)據(jù)轉(zhuǎn)移經(jīng)由接口電路35。典型的主機(jī)還包括微處理器 37、用于存儲(chǔ)固件代碼的ROM 39和RAM 41。視特定主機(jī)系統(tǒng)而定,其它電路和子系 統(tǒng)43通常包括高容量磁性數(shù)據(jù)存儲(chǔ)磁盤驅(qū)動(dòng)器,用于鍵盤、監(jiān)視器和類似物的接口電路。 所述主機(jī)的某些實(shí)例包括臺(tái)式計(jì)算機(jī)、膝上型計(jì)算機(jī)、手持式計(jì)算機(jī)、掌上型計(jì)算機(jī)、 個(gè)人數(shù)字助理(PDA)、 MP3和其它音頻播放器、數(shù)碼相機(jī)、視頻攝像機(jī)、電子游戲機(jī)、 無線和有線電話裝置、答錄機(jī)、語音記錄器、網(wǎng)絡(luò)路由器和其它裝置。圖1A的存儲(chǔ)器可實(shí)施為含有控制器及其所有存儲(chǔ)器陣列電路裝置的小型封閉式卡 片,其處于可與圖1B的主機(jī)可移除地連接的形式。也就是說,配對(duì)連接31和31'允許將 卡片分離且移動(dòng)到另一主機(jī),或通過將另一卡片連接到所述主機(jī)而進(jìn)行替換?;蛘撸?將所述存儲(chǔ)器陣列裝置封閉于單獨(dú)卡片中,所述卡片可與含有控制器和連接31的卡片電 連接以及機(jī)械連接。作為另一選擇,可將圖1A的存儲(chǔ)器嵌入圖1B的主機(jī)內(nèi),其中永久 地產(chǎn)生連接31和31'。在此情況下,所述存儲(chǔ)器通常與其它組件一起包含于所述主機(jī)的 外殼中。圖2說明存儲(chǔ)器陣列的一部分,其中將存儲(chǔ)器單元分組為擦除區(qū)塊,每一擦除區(qū)塊 中的單元通??勺鳛閱我徊脸僮鞯囊徊糠侄瑫r(shí)被一起擦除。擦除區(qū)塊是這種類型的 存儲(chǔ)器中的最小擦除單位。圖2的個(gè)別存儲(chǔ)器單元擦除區(qū)塊的尺寸可變化,但一個(gè)商業(yè)實(shí)用形式在個(gè)別擦除區(qū) 塊中包括數(shù)據(jù)的單一扇區(qū)。圖3中說明所述數(shù)據(jù)扇區(qū)的內(nèi)容。用戶數(shù)據(jù)51通常為512字
節(jié)。除用戶數(shù)據(jù)51以外的是額外開銷數(shù)據(jù),其包括從用戶數(shù)據(jù)計(jì)算出的ECC 53、關(guān)于 扇區(qū)數(shù)據(jù)和/或在其中編程扇區(qū)的擦除區(qū)塊的參數(shù)55,和從所述參數(shù)55計(jì)算出的ECC 57, 以及可能包括的任何其它額外開銷數(shù)據(jù)。在所述參數(shù)55中也可包括指示狀況或狀態(tài)的一個(gè)或一個(gè)以上旗標(biāo)。用于編程和/或 擦除所述擦除區(qū)塊的電壓電平的指示也可存儲(chǔ)于所述參數(shù)55內(nèi),這些電壓隨所述擦除區(qū) 塊經(jīng)歷的循環(huán)的數(shù)目和其它因素改變而更新。所述參數(shù)55的其它實(shí)例包括所述擦除區(qū)塊 內(nèi)任何缺陷單元的指示、映射到此物理擦除區(qū)塊的擦除區(qū)塊的邏輯地址,和在原始擦除 區(qū)塊有缺陷的情況任何替代擦除區(qū)塊的地址。用于任何存儲(chǔ)器系統(tǒng)中的參數(shù)55的特定 組合將根據(jù)設(shè)計(jì)而變化。并且,可將某些或所有額外開銷數(shù)據(jù)存儲(chǔ)于專用于所述功能的 擦除區(qū)塊中,而非存儲(chǔ)于含有用戶數(shù)據(jù)或與額外開銷數(shù)據(jù)有關(guān)的擦除區(qū)塊中。與圖2的單一數(shù)據(jù)扇區(qū)擦除區(qū)塊不同的是圖4的多扇區(qū)擦除區(qū)塊。仍為最小擦除單 位的實(shí)例擦除區(qū)塊59含有四個(gè)頁0-3,每一頁為最小編程單位。數(shù)據(jù)的一個(gè)或一個(gè)以上 主機(jī)扇區(qū)通常與包括至少?gòu)乃錾葏^(qū)的數(shù)據(jù)計(jì)算出的ECC的額外開銷數(shù)據(jù)一起存儲(chǔ)于每 一頁中,且可處于圖3的數(shù)據(jù)扇區(qū)的形式。重新寫入整個(gè)區(qū)塊的數(shù)據(jù)通常涉及將新數(shù)據(jù)編程到擦除區(qū)塊池的區(qū)塊中,原始區(qū)塊 隨后被擦除并放置于所述擦除池中。當(dāng)更新少于區(qū)塊的所有頁的數(shù)據(jù)時(shí),所述更新的數(shù) 據(jù)通常存儲(chǔ)于來自擦除的區(qū)塊池的區(qū)塊的頁中,并將剩余未改變的頁中的數(shù)據(jù)從原始區(qū) 塊復(fù)制到新區(qū)塊中。隨后擦除所述原始區(qū)塊。此大區(qū)塊管理技術(shù)的變化形式包括將經(jīng)更 新的數(shù)據(jù)寫入到另一區(qū)塊的頁中,而不從所述原始區(qū)塊移動(dòng)數(shù)據(jù)或?qū)⑵洳脸_@導(dǎo)致具 有相同邏輯地址的多個(gè)頁。數(shù)據(jù)的最近頁通過某一便利的技術(shù)(例如,記錄為扇區(qū)或頁 額外開銷數(shù)據(jù)中的字段的編程時(shí)間)來識(shí)別。圖5中說明另一多扇區(qū)區(qū)塊配置。此處,將全部存儲(chǔ)器單元陣列物理上劃分為兩個(gè) 或兩個(gè)以上平面,說明四個(gè)平面0-3。每一平面是存儲(chǔ)器單元的子陣列,其具有其自身的 數(shù)據(jù)寄存器、讀出放大器、定址解碼器和類似物,以便能夠很大程度上獨(dú)立于其它平面 而操作??稍趩我患呻娐费b置或多個(gè)裝置上提供所有平面, 一實(shí)例為由一個(gè)或一個(gè)以 上不同的集成電路裝置形成每一平面。圖5的實(shí)例系統(tǒng)中的每一區(qū)塊含有16頁P(yáng)0-P15, 每一頁具有一個(gè)、兩個(gè)或兩個(gè)以上主機(jī)數(shù)據(jù)扇區(qū)和一些額外開銷數(shù)據(jù)的容量。圖6中說明又一存儲(chǔ)器單元配置。每一平面含有大量單元的擦除區(qū)塊。為了增加操 作并行度的程度,將不同平面內(nèi)的擦除區(qū)塊邏輯上鏈接以形成元區(qū)塊。圖6中說明一個(gè) 所述元區(qū)塊,其由平面0的擦除區(qū)塊3、平面1的擦除區(qū)塊1、平面2的擦除區(qū)塊1和平
面3的擦除區(qū)塊2形成。每一元區(qū)塊為邏輯上可定址的,且存儲(chǔ)器控制器指派并跟蹤形 成個(gè)別元區(qū)塊的擦除區(qū)塊。主機(jī)系統(tǒng)優(yōu)選地以等于所述個(gè)別元區(qū)塊的容量的數(shù)據(jù)單位與 存儲(chǔ)器系統(tǒng)介接。圖6的所述邏輯數(shù)據(jù)區(qū)塊61例如由邏輯區(qū)塊地址(LBA)識(shí)別,所述 邏輯區(qū)塊地址由控制器映射到組成所述元區(qū)塊的區(qū)塊的物理區(qū)塊編號(hào)(PBN)中。所述 元區(qū)塊的所有擦除區(qū)塊被一起擦除,且來自每一擦除區(qū)塊的頁優(yōu)選地被同時(shí)編程和讀取。 元區(qū)塊可被認(rèn)為是擦除區(qū)塊以此方式鏈接的系統(tǒng)中的擦除單位。在某些具有元區(qū)塊架構(gòu) 的存儲(chǔ)器陣列中,頁僅可與元區(qū)塊的其它頁并行編程。在這些存儲(chǔ)器陣列中,元頁是元 區(qū)塊的最小編程單位,其由來自所述元區(qū)塊的每一平面的頁組成。存在許多可用于實(shí)施上文參看圖2-6描述的存儲(chǔ)器的不同存儲(chǔ)器陣列架構(gòu)、配置和 特定單元結(jié)構(gòu)。圖7中展示NAND型存儲(chǔ)器陣列的一個(gè)擦除區(qū)塊。大量列定向的串聯(lián)連 接的存儲(chǔ)器單元串連接于電壓Vss的共用源極65與位線BL0 - BLN中的一者之間,位線 BLO-BLN又與含有地址解碼器、驅(qū)動(dòng)器、讀取讀出放大器和類似物的電路67連接。具 體來說, 一個(gè)所述串含有在串的相對(duì)末端處的選擇晶體管77與79之間串聯(lián)連接的電荷 存儲(chǔ)晶體管70、 71…72和74。在此實(shí)例中,每一串含有16個(gè)存儲(chǔ)晶體管,但其它數(shù)目 是可能的。字線WL0-WL15延伸橫越每一串的一個(gè)存儲(chǔ)晶體管,且連接到含有地址解碼 器和所述字線的電壓源極驅(qū)動(dòng)器的電路81。線83和84上的電壓控制將擦除區(qū)塊中所有 串經(jīng)由其選擇晶體管一起連接到電壓源65和/或位線BLO-BLN。數(shù)據(jù)和地址來自存儲(chǔ)器 控制器。擦除區(qū)塊的每一行電荷存儲(chǔ)晶體管(存儲(chǔ)器單元)可形成被一起編程和讀取的頁。 將適當(dāng)電壓施加到所述頁的字線(WL)用于編程或讀取其數(shù)據(jù),同時(shí)選擇施加到剩余字 線的電壓以使其各自存儲(chǔ)晶體管具有傳導(dǎo)性。在編程或讀取一行(頁)存儲(chǔ)晶體管期間, 由于施加于所有串上和施加到其字線上的電壓的緣故,可能干擾未選擇的行上的先前存 儲(chǔ)的電荷電平。這可防止在行中其它單元已被編程之后對(duì)特定行的單元進(jìn)行編程。多狀 態(tài)快閃存儲(chǔ)器對(duì)干擾尤其敏感。增加數(shù)目的邏輯狀態(tài)導(dǎo)致個(gè)別狀態(tài)的狹窄的閾值電壓范 圍,以致電荷電平的較小變化可能產(chǎn)生邏輯狀態(tài)的變化。由于數(shù)據(jù)存儲(chǔ)密度通過在單元 中使用增加數(shù)目的邏輯狀態(tài)而增加,所以對(duì)干擾的敏感性增加。因此,在編程行中的單 元之后,可能不能在不破壞己編程的單元中的數(shù)據(jù)的情況下將數(shù)據(jù)編程到所述行中的其 它單元。因此,來自鄰近單元的隨后編程的干擾可界定頁尺寸。如果在編程行中的單元 之后不可編程相同行中的其它單元,那么所述行界定最小編程單位。因此, 一行單元可 含有一個(gè)數(shù)據(jù)頁。在所述存儲(chǔ)器陣列中,如果行中的一單元群組被編程,那么即使所述 行中某些單元不含有數(shù)據(jù)也認(rèn)為所述行已被編程。在存儲(chǔ)器陣列中具有不可被隨后編程 的空單元效率不高。已編程頁中的空單元可從由存儲(chǔ)器系統(tǒng)一次接收的少量扇區(qū)中產(chǎn)生。舉例來說,單 一扇區(qū)可由主機(jī)發(fā)送到存儲(chǔ)器系統(tǒng)。所述扇區(qū)存儲(chǔ)于快閃存儲(chǔ)器陣列的頁中。所述扇區(qū) 防止隨后向所述頁進(jìn)行寫入。在頁保留多個(gè)扇區(qū)的存儲(chǔ)器系統(tǒng)中,這可能無效。舉例來 說,在頁包含四個(gè)數(shù)據(jù)扇區(qū)的情況下,當(dāng)將單一扇區(qū)寫入到所述頁時(shí),可保留三個(gè)數(shù)據(jù) 扇區(qū)的存儲(chǔ)器陣列的一部分為空的。隨著頁尺寸增加,來自所述部分填充頁的被浪費(fèi)的 空間增加。元頁可含有大量扇區(qū),所以存儲(chǔ)在使用元區(qū)塊的存儲(chǔ)器陣列中可能尤其無效。 所述問題在接收兩個(gè)或兩個(gè)以上扇區(qū)但所接收的扇區(qū)數(shù)目少于頁中的扇區(qū)數(shù)目的情況下 是類似的。所述部分頁可存儲(chǔ)于高速暫存區(qū)塊中,直到接收到整頁的數(shù)據(jù)為止。在寫入部分填充頁的數(shù)據(jù)之后,可執(zhí)行所存儲(chǔ)數(shù)據(jù)的合并,從而將來自所述部分填 充頁的數(shù)據(jù)組合到填充頁中。這可作為周期性執(zhí)行的垃圾收集的一部分來完成。所述數(shù) 據(jù)的合并將來自部分填充頁的數(shù)據(jù)復(fù)制到處于不同擦除區(qū)塊中的整頁。保留所述部分填 充頁的擦除區(qū)塊隨后被標(biāo)記為過時(shí)的,以便可將其擦除或重新使用。所述操作可能占用 可用于其它功能的系統(tǒng)資源。對(duì)存儲(chǔ)器的單扇區(qū)寫入的實(shí)例圖8展示擦除區(qū)塊,其指定為存儲(chǔ)器系統(tǒng)中存儲(chǔ)器陣列的活動(dòng)區(qū)塊800,其中頁包 含四個(gè)數(shù)據(jù)扇區(qū)。展示頁0-5,每一者沿水平方向延伸。每一頁可含有四個(gè)數(shù)據(jù)扇區(qū),指 定為扇區(qū)O、扇區(qū)l、扇區(qū)2和扇區(qū)3。主機(jī)將單一數(shù)據(jù)扇區(qū)發(fā)送到存儲(chǔ)器系統(tǒng),所述數(shù) 據(jù)扇區(qū)存儲(chǔ)于活動(dòng)區(qū)塊800中。接收扇區(qū)X,并將其存儲(chǔ)為頁O的扇區(qū)O。這防止對(duì)頁O 的隨后編程。因此,頁0的扇區(qū)1、 2和3不被編程并保持為空的(已擦除)。在編程頁 O之后,接收扇區(qū)X+1。扇區(qū)X+1被存儲(chǔ)為頁1的扇區(qū)0。頁l的扇區(qū)l、 2和3保持為 空的。在編程扇區(qū)X+1之后,接收扇區(qū)X+2。扇區(qū)X+2被存儲(chǔ)為頁2的扇區(qū)0。頁2的 扇區(qū)1、 2和3保持為空的。在編程扇區(qū)X+2之后,接收扇區(qū)X+3。扇區(qū)X+3被存儲(chǔ)為 頁3的扇區(qū)0。頁3的扇區(qū)1、 2和3保持為空的。圖9展示在指定為活動(dòng)區(qū)塊900的擦除區(qū)塊中存儲(chǔ)扇區(qū)的替代方式。此處,不同于 每頁僅存儲(chǔ)一個(gè)扇區(qū),而是將先前存儲(chǔ)的扇區(qū)復(fù)制到相同擦除區(qū)塊中的新的頁,在所述 新的頁中將所述先前存儲(chǔ)的扇區(qū)與較新近接收的扇區(qū)一起存儲(chǔ)。與之前一樣,扇區(qū)X被 存儲(chǔ)為頁0的扇區(qū)0。隨后,接收扇區(qū)X+1,并將其存儲(chǔ)為頁1的扇區(qū)1,其中將扇區(qū)X 從頁0復(fù)制到頁1的扇區(qū)0。因此,扇區(qū)X和扇區(qū)X+1都存儲(chǔ)于頁1中。隨后,接收扇
區(qū)X + 2,并將其存儲(chǔ)為頁2的扇區(qū)2。扇區(qū)X被存儲(chǔ)為頁2的扇區(qū)0,且扇區(qū)X+1被存 儲(chǔ)為頁2的扇區(qū)1。因此,扇區(qū)X、 X+l和扇區(qū)X+2—起存儲(chǔ)于頁2中。隨后,接收扇 區(qū)X + 3,并將其存儲(chǔ)為頁3的扇區(qū)3。扇區(qū)X被存儲(chǔ)為扇區(qū)O,扇區(qū)X+1被存儲(chǔ)為扇區(qū) 1,且扇區(qū)X+2被存儲(chǔ)為頁3的扇區(qū)2。因此,四個(gè)數(shù)據(jù)扇區(qū)存儲(chǔ)于頁3中,以便頁3完 全由數(shù)據(jù)填充。在存儲(chǔ)圖8或圖9中所示的扇區(qū)之后,可將數(shù)據(jù)合并??蓪D8或圖9的扇區(qū)X、 X+l、 X+2和X+3復(fù)制到新擦除區(qū)塊的單一頁。這可在方便時(shí)作為垃圾收集的一部分而 完成。圖IOA展示存儲(chǔ)于指定的活動(dòng)區(qū)塊IOOO的頁O中的扇區(qū)X、 X+I、 X+2和X+3。 擦除區(qū)塊1000的頁0充滿數(shù)據(jù)。當(dāng)以扇區(qū)X、 X+l、 X+2和X+3來編程活動(dòng)區(qū)塊1100 的頁O時(shí),可從作為所述扇區(qū)的復(fù)制來源的擦除區(qū)塊中擦除扇區(qū)X、 X+l、 X+2和X+3。 當(dāng)在垃圾收集期間將活動(dòng)區(qū)塊800、 900的內(nèi)容合并時(shí),可擦除活動(dòng)區(qū)塊800、 900并使 其可用于存儲(chǔ)新數(shù)據(jù)。在編程頁O后,接收扇區(qū)X+4并將其存儲(chǔ)為活動(dòng)區(qū)塊1000的頁1的扇區(qū)0。隨后, 個(gè)別地接收扇區(qū)X+5、 X+6和X+7,并分別存儲(chǔ)在頁2、 3和4中??赡苄枰俅魏喜⑸?區(qū),以將扇區(qū)X+4、 X+5、 X+6和X+7合并到單一頁。所述扇區(qū)的合并花費(fèi)時(shí)間,在此 期間不可寫入主機(jī)數(shù)據(jù)。在第二次將數(shù)據(jù)合并到另一擦除區(qū)塊后,將作為其復(fù)制來源的 擦除區(qū)塊IOOO標(biāo)記為過時(shí)的,并可隨后擦除所述擦除區(qū)塊1000。圖10B展示在第二垃圾收集操作重新定位來自先前活動(dòng)區(qū)塊1000的數(shù)據(jù)之后的活動(dòng) 區(qū)塊IOIO。將扇區(qū)X+4到X+7合并到活動(dòng)區(qū)塊1010的單一頁(頁l)中。隨后,可接 收更多扇區(qū),并可將其存儲(chǔ)于活動(dòng)區(qū)塊1010中。如果以單一扇區(qū)的形式接收所述扇區(qū), 那么可與之前一樣將單一扇區(qū)存儲(chǔ)于頁中。圖IOC展示活動(dòng)區(qū)塊1010,其中額外扇區(qū)X+8到X+ll存儲(chǔ)于頁2-5中。此時(shí)可能 需要另一垃圾收集操作以合并扇區(qū)X+8到X+11。因此,為了將從主機(jī)接收的扇區(qū)有效 地存儲(chǔ)為單一扇區(qū),此方法使用需要將數(shù)據(jù)從一個(gè)擦除區(qū)塊轉(zhuǎn)移到另一擦除區(qū)塊并擦除 第一擦除區(qū)塊的多個(gè)垃圾收集操作。在較大的擦除區(qū)塊中,垃圾收集操作的數(shù)目較大。 在使用元區(qū)塊的存儲(chǔ)器系統(tǒng)中,可鏈接一擦除區(qū)塊群組,以便其被一起擦除且一起編程。 可在含有很多扇區(qū)的元頁中編程數(shù)據(jù)。因此,存儲(chǔ)單一扇區(qū)由于所必需的垃圾收集的數(shù) 目而變得效率非常低。圖IIA展示存儲(chǔ)數(shù)據(jù)的替代方法。圖IIA展示存儲(chǔ)器陣列的兩個(gè)擦除區(qū)塊?;顒?dòng)區(qū) 塊1110是可編程數(shù)據(jù)以用于長(zhǎng)期存儲(chǔ)的擦除區(qū)塊。高速暫存區(qū)塊1120是可編程數(shù)據(jù)以
用于短期存儲(chǔ)的擦除區(qū)塊。當(dāng)接收少量扇區(qū)時(shí),首先將其存儲(chǔ)于高速暫存區(qū)塊1120中。 扇區(qū)繼續(xù)存儲(chǔ)于所述高速暫存區(qū)塊1120中,直到接收足夠的扇區(qū)以填滿數(shù)據(jù)頁為止。隨 后將這些扇區(qū)復(fù)制到活動(dòng)區(qū)塊1110的頁。與之前一樣,接收扇區(qū)X并在高速暫存區(qū)塊1120中將其編程為頁0的扇區(qū)0。隨后, 接收扇區(qū)X+1,并將其存儲(chǔ)為高速暫存區(qū)塊1120的頁1的扇區(qū)1,其中將扇區(qū)X復(fù)制到 頁1的扇區(qū)0。隨后,接收扇區(qū)X+2,并將其存儲(chǔ)為高速暫存區(qū)塊1120的頁2的扇區(qū)2, 其中將扇區(qū)X和X+1分別存儲(chǔ)為頁2的扇區(qū)0和扇區(qū)1。在將扇區(qū)X+2存儲(chǔ)于高速暫存 區(qū)塊U20中之后,接收扇區(qū)X+3。此時(shí),將扇區(qū)X、 X+l、 X+2和X+3寫入到活動(dòng)區(qū)塊 1110的頁O。這四個(gè)扇區(qū)形成整頁的數(shù)據(jù)。因此,將扇區(qū)X、 X+l、 X+2和X+3有效地 存儲(chǔ)于活動(dòng)區(qū)塊1110的頁0中。隨后,個(gè)別地接收扇區(qū)X+4、 X+5、 X+6和X+7。當(dāng)接 收扇區(qū)X+7時(shí),將扇區(qū)X+4、 X+5和X+6存儲(chǔ)于高速暫存區(qū)塊1120的頁3、 4和5中, 并將其復(fù)制到活動(dòng)區(qū)塊1110的頁1的扇區(qū)0、 1和2。將扇區(qū)X+7直接編程到活動(dòng)區(qū)塊 1110的頁1的扇區(qū)3。此時(shí),高速暫存區(qū)塊1120不具有可用于存儲(chǔ)數(shù)據(jù)的頁,并可表示 為己準(zhǔn)備好進(jìn)行擦除(過時(shí))。對(duì)于將接收的下一扇區(qū)或下一扇區(qū)群組,可將新的擦除區(qū) 塊指定為高速暫存區(qū)塊。雖然此實(shí)例展示接收單一扇區(qū),但此方法也可用于扇區(qū)群組, 其中所述扇區(qū)群組具有比頁中的扇區(qū)數(shù)目少的扇區(qū)。并且,雖然上述實(shí)例展示以最大并 行度將數(shù)據(jù)從高速暫存區(qū)塊寫入到活動(dòng)區(qū)塊,但所述寫入可以比最大并行度小的并行度 完成,并仍提供效率益處。因此,以一個(gè)程度的并行度將扇區(qū)寫入到高速暫存區(qū)塊,且 隨后以較高程度的并行度將其寫入到另一區(qū)塊,以便較密集地壓縮所述數(shù)據(jù),且需要較 不頻繁的垃圾收集。高速暫存區(qū)塊也可用于使用元區(qū)塊的存儲(chǔ)器陣列中。舉例來說,圖11B展示兩個(gè)元 區(qū)塊,活動(dòng)區(qū)塊1130和高速暫存區(qū)塊1140。活動(dòng)區(qū)塊1130和高速暫存區(qū)塊1140都具有 四個(gè)平面,指示為平面0-3。每一平面為一個(gè)扇區(qū)寬,所以四個(gè)扇區(qū)存儲(chǔ)于區(qū)塊1130或 1140的元頁中。兩個(gè)區(qū)塊都具有6個(gè)元頁,指示為元頁0-5。用于有效地存儲(chǔ)數(shù)據(jù)的技 術(shù)與上文相對(duì)于擦除區(qū)塊描述的技術(shù)相同。將扇區(qū)積累于高速暫存區(qū)塊1140中,直到數(shù) 據(jù)的全元頁可用為止,此時(shí)將全元頁編程到活動(dòng)區(qū)塊1130。舉例來說,當(dāng)接收扇區(qū)X+3 時(shí),將全元頁(扇區(qū)X、 X+I、 X+2和X+3)編程到活動(dòng)區(qū)塊1130的元頁0。元頁可具 有大量扇區(qū),因?yàn)樵獏^(qū)塊可具有很多平面,且平面可為若干頁寬。上文描述的技術(shù)對(duì)于 所述大元頁尤其有價(jià)值,因?yàn)榉駝t將會(huì)浪費(fèi)存儲(chǔ)器陣列中的大量空間。如參看圖11A和 11B所示,相對(duì)于使用擦除區(qū)塊架構(gòu)的實(shí)例而描述的本發(fā)明的各方面也可應(yīng)用于元區(qū)塊架構(gòu),且反之亦然。視存儲(chǔ)器陣列的配置而定,術(shù)語"區(qū)塊"可指擦除區(qū)塊或元區(qū)塊。 在任一情況下,區(qū)塊是所述配置中使用的擦除單位。類似地,術(shù)語"頁"可指單一擦除 區(qū)塊內(nèi)的頁或元區(qū)塊的元頁。在任一情況下,頁是所述配置的編程單位。在接收具有多于頁中的扇區(qū)數(shù)目的一扇區(qū)群組時(shí),可將扇區(qū)直接編程到存儲(chǔ)器陣列 的活動(dòng)區(qū)塊,而無需首先存儲(chǔ)于高速暫存區(qū)塊中。因此,可以高程度的并行度將數(shù)據(jù)的 整頁直接編程到活動(dòng)區(qū)塊,同時(shí)以較低程度的并行度將數(shù)據(jù)的部分頁編程到高速暫存區(qū) 塊,直到其可作為整頁編程的一部分被寫入到活動(dòng)區(qū)塊為止。控制器可確定特定扇區(qū)或 一扇區(qū)群組的目的地。在將一扇區(qū)群組寫入到活動(dòng)區(qū)塊時(shí)將包括部分頁寫入和整頁寫入 的情況下,可將所述整頁寫入到活動(dòng)區(qū)塊,并可將所述部分頁寫入到高速暫存區(qū)塊。圖12A展示另一實(shí)例,其中在將來自主機(jī)的扇區(qū)存儲(chǔ)于高速暫存區(qū)塊中時(shí)對(duì)所述扇 區(qū)進(jìn)行更新。接收第一扇區(qū)Xo,并將其存儲(chǔ)于高速暫存區(qū)塊1250的頁0中。在此實(shí)例 中,頁存儲(chǔ)四個(gè)數(shù)據(jù)扇區(qū)。隨后接收Xo的替代,展示為X"此實(shí)例中的扇區(qū)根據(jù)其邏 輯地址進(jìn)行編號(hào),以下標(biāo)指示扇區(qū)是否為更新扇區(qū),且如果是,那么指示是何版本。因 此,扇區(qū)Xi是具有邏輯地址X的扇區(qū),且是此扇區(qū)的第一更新版本。其是具有與Xo相 同邏輯地址但可含有反映某些更新信息的不同數(shù)據(jù)的數(shù)據(jù)扇區(qū)。將扇區(qū)X!寫入到高速暫 存區(qū)塊1250的頁1??刂破鞲櫮男┥葏^(qū)為當(dāng)前的和哪些扇區(qū)為過時(shí)的。在高速暫存區(qū) 塊1250中,具有特定邏輯地址的扇區(qū)的最近寫入的副本為當(dāng)前版本。任何其它版本均為 過時(shí)的。因此,當(dāng)編程X,時(shí),Xo變?yōu)檫^時(shí)的。在接收扇區(qū)&后,接收扇區(qū)(X+1)0。其 是邏輯上接續(xù)扇區(qū)Xt的扇區(qū)。將扇區(qū)Xi和(X+l)o寫入到頁2。隨后,用(X+1^替代扇區(qū) (X+l)o。其是替換扇區(qū)(X+l)o的扇區(qū)(X+l)o的更新版本。將扇區(qū)(X+1^與扇區(qū)X!—起寫入 到頁3。隨后,接收扇區(qū)(X+2)o并將其寫入到頁4。扇區(qū)(X+2)o隨后由扇區(qū)(X+2h替換, 并與扇區(qū)X,和(X+1),—起被寫入到頁5。隨后,接收扇區(qū)(X+3)0。因此,數(shù)據(jù)頁(扇區(qū) X卜(X+1)卜(X+2h和(X+3)0)可用。將扇區(qū)X卜(X+lh、 (X+2h和(X+3)o寫入到指定為 活動(dòng)區(qū)塊1252的區(qū)塊。以整頁寫入的并行度將扇區(qū)X" (X+lh、 (X+2^和(X+3)o寫入到 活動(dòng)區(qū)塊1252。這是在此情況下的最大可能并行度。因此,即使以低程度的并行度將扇 區(qū)X" (X+l)卜(X+2;h和(X+3)o寫入到高速暫存區(qū)塊1250,但隨后將其以高程度的并行 度寫入到活動(dòng)區(qū)塊1252。此意味著將扇區(qū)Xi、 (X+lh、 (X+2h和(X+3)o更有效地存儲(chǔ)于 活動(dòng)區(qū)塊中。更有效的存儲(chǔ)可導(dǎo)致較不頻繁地需要垃圾收集,因此改進(jìn)性能。圖12B中提供了替代實(shí)例。此實(shí)例與圖12A中所示的實(shí)例類似,但此處扇區(qū)(X+3)0 在被復(fù)制到活動(dòng)區(qū)塊1252之前存儲(chǔ)于高速暫存區(qū)塊1250中。這允許扇區(qū)(X+3)o在被寫 入到活動(dòng)區(qū)塊1252之前被更新。展示扇區(qū)(X+3)o通過用扇區(qū)(X+3h替換而更新。數(shù)據(jù)的 完整頁(扇區(qū)Xi、 (X+l)卜(X+2)i和(X+3)》可保留于高速暫存區(qū)塊1250中,準(zhǔn)備直到 發(fā)生某一觸發(fā)事件才進(jìn)行更新。在此情況下,接收扇區(qū)(X+4)c),從而提供觸發(fā)事件。此 時(shí),以最大并行度將扇區(qū)Xi、(X+l)卜(X+2^和(X+3h寫入到活動(dòng)區(qū)塊1252。將扇區(qū)(X+4)0 寫入到高速暫存區(qū)塊1250中的下一可用頁(頁8)。圖12C展示使用高速暫存區(qū)塊1250更新數(shù)據(jù)的另一實(shí)例。將數(shù)據(jù)的扇區(qū)Xo到(X+15)0 存儲(chǔ)于原始區(qū)塊1254中。主機(jī)發(fā)送扇區(qū)(X+6),,其為具有與扇區(qū)(X+6)o相同邏輯地址的 更新扇區(qū)。因此,扇區(qū)(X+6h將替換(X+6)0。為了替換扇區(qū)(X+6)0,原始區(qū)塊1254的頁 K含有扇區(qū)(X+4)o到(X+7)o)與扇區(qū)(X+6),組合,且將所述組合寫入到高速暫存區(qū)塊1250 的頁O。組合這些扇區(qū)可在例如控制器ram 25的隨機(jī)存取存儲(chǔ)器中進(jìn)行,或可在連接到 存儲(chǔ)器陣列的存儲(chǔ)器寄存器中完成。更新的頁數(shù)據(jù)可保留于高速暫存區(qū)塊1250中,而在 一段時(shí)間內(nèi)不將其寫入到活動(dòng)區(qū)塊。在從主機(jī)接收隨后更新的扇區(qū)(X+5h的情況下,可 通過將扇區(qū)(X+5h與所復(fù)制的扇區(qū)(X+4)o、(X+6h和(X+7)o—起寫入到高速暫存區(qū)塊1250 的另一頁(在此情況下為頁l)而在高速暫存區(qū)塊1250中更新數(shù)據(jù)。在高速暫存區(qū)塊1250 中的數(shù)據(jù)頁的多個(gè)更新可以此方式執(zhí)行。通過在高速暫存區(qū)塊1250中的新的頁中替換更 新的數(shù)據(jù)扇區(qū)并復(fù)制未改變的數(shù)據(jù)扇區(qū)來實(shí)行更新。所述復(fù)制的扇區(qū)被復(fù)制于相同平面 內(nèi),以便可有效地執(zhí)行復(fù)制。隨后,可將更新的數(shù)據(jù)頁復(fù)制到存儲(chǔ)器陣列中的活動(dòng)區(qū)塊 1252。非循序的更新可以此方式來執(zhí)行,而無需無序更新區(qū)塊。舉例來說,在上述實(shí)例 中非循序地接收更新扇區(qū)(X+6)i和(X+5h,但活動(dòng)區(qū)塊1252為循序的。以此方式,多個(gè) 數(shù)據(jù)頁可同時(shí)保留于高速暫存區(qū)塊中并進(jìn)行更新。當(dāng)不再期望更新頁時(shí),可將所述頁復(fù) 制到活動(dòng)區(qū)塊。多級(jí)單元編程的實(shí)例通過將浮動(dòng)?xùn)艠O存儲(chǔ)器單元的閾值電壓范圍劃分為兩個(gè)以上電平,某些種類的存儲(chǔ) 器可在存儲(chǔ)器陣列的每一單元中存儲(chǔ)一個(gè)以上數(shù)據(jù)位。圖13展示所述多級(jí)單元(MLC) 存儲(chǔ)器可如何經(jīng)編程以提供表示不同邏輯狀態(tài)的多個(gè)閾值電壓的實(shí)例。展示四個(gè)不同閎 值電壓,標(biāo)記為A、 B、 C和D。將多個(gè)單元編程到每一電壓。圖13表示單元狀態(tài)的分 布,其中單元的數(shù)目表示于垂直軸上。每一閾值電壓A、 B、 C和D表示不同的邏輯狀態(tài)。 四個(gè)狀態(tài)表示兩個(gè)數(shù)據(jù)位, 一個(gè)位來自數(shù)據(jù)的下部頁,且一個(gè)位來自數(shù)據(jù)的上部頁,如 圖所示。在某些實(shí)例中,可首先編程所述下部頁。在編程所述下部頁之后,單元處于狀 態(tài)A或B。隨后,可編程所述上部頁,以便所述單元停留于狀態(tài)A或B (上部位=1)或
被修改為狀態(tài)C或D (上部位=0)。因?yàn)檫@四種狀態(tài)各具有相對(duì)較窄的電壓窗口,所以 MLC存儲(chǔ)器尤其易受由于閾值電壓的相對(duì)較小變化而引起的對(duì)數(shù)據(jù)的破壞的影響。在某 些實(shí)例中,可能有利的是同時(shí)編程下部和上部頁。這可幫助減少由于編程鄰近單元而導(dǎo) 致的對(duì)單元中數(shù)據(jù)的破壞(例如可在編程上部頁數(shù)據(jù)期間發(fā)生)。
圖14展示可如何使用高速暫存區(qū)塊1460來減少在MLC存儲(chǔ)器中對(duì)數(shù)據(jù)的破壞的實(shí) 例。圖14將活動(dòng)區(qū)塊1462和高速暫存區(qū)塊1460兩者展示為MLC存儲(chǔ)器的區(qū)塊。兩個(gè) 區(qū)塊的頁被編號(hào),并依據(jù)使用何種閾值電壓狀態(tài)來存儲(chǔ)頁的數(shù)據(jù)位而展示為"上部"或 "下部"。在此實(shí)例中,存儲(chǔ)器首先接收扇區(qū)X到X+3,并將這些扇區(qū)存儲(chǔ)于高速暫存區(qū) 塊1460的下部頁0中。隨后,存儲(chǔ)器接收扇區(qū)X+4到X+7。此時(shí),將下部頁(扇區(qū)X 到X+3)與上部頁(X+4到X+7)同時(shí)寫入到活動(dòng)區(qū)塊1462。這可避免在編程活動(dòng)區(qū)塊 1462的上部頁O期間破壞活動(dòng)區(qū)塊1462的下部頁O。通常, 一起編程上部和下部頁所必 需的時(shí)間與單獨(dú)編程上部頁所必需的時(shí)間相同,因此此系統(tǒng)不遭受時(shí)間損失。在以扇區(qū) X到X+7編程活動(dòng)區(qū)塊1462的下部頁0和上部頁0之后,接收扇區(qū)X+8到X+11,并將 其編程到高速暫存區(qū)塊1460的上部頁0。當(dāng)接收扇區(qū)X+12到X+15時(shí),將扇區(qū)X+8到 X+11與扇區(qū)X+12到X+15并行編程到活動(dòng)區(qū)塊的上部頁1和下部頁1。如圖所示,此 系統(tǒng)為隨后的數(shù)據(jù)扇區(qū)繼續(xù)。因此,將數(shù)據(jù)頁寫入到高速暫存區(qū)塊1460,且隨后將此頁 與額外頁一起寫入到活動(dòng)區(qū)塊1462,作為相同的存儲(chǔ)器單元群組的上部和下部頁。向高 速暫存區(qū)塊1460編程以頁的并行度進(jìn)行,而向活動(dòng)區(qū)塊1462編程以頁的并行度的兩倍 進(jìn)行。
在替代實(shí)施例中,可在不同時(shí)間將上部和下部頁寫入到活動(dòng)區(qū)塊,但將下部頁的副 本保留于高速暫存區(qū)塊中,以防在編程上部頁期間活動(dòng)區(qū)塊中的下部頁被破壞。在圖14 中,可接收扇區(qū)X到X+3,并同時(shí)將其編程到活動(dòng)區(qū)塊1462的下部頁0和高速暫存區(qū)塊 1460的下部頁0。隨后,接收扇區(qū)X+4到X+7,并將其編程到活動(dòng)區(qū)塊1462的上部頁0。 扇區(qū)X+4到X+7不保存于高速暫存區(qū)塊1460中。如果在將X+4到X+7編程到活動(dòng)區(qū)塊 1462的上部頁0期間存在任何問題(例如功率損耗),那么活動(dòng)區(qū)塊1462的下部頁0中 的數(shù)據(jù)可能被破壞。也就是說,可修改正被編程的單元的閾值電壓,以致其不再處于表 示下部頁的數(shù)據(jù)的狀態(tài),但尚未完全編程到表示上部頁的數(shù)據(jù)的狀態(tài)。舉例來說,正從 圖13中的狀態(tài)A被編程到狀態(tài)D的單元當(dāng)編程停止時(shí)可處于狀態(tài)B或C。如果數(shù)據(jù)以 此方式被破壞,那么正被寫入的數(shù)據(jù)的上部頁可從其被復(fù)制的位置恢復(fù)。然而,在很多 情況下,不存在下部頁的其它副本。此處,下部頁的副本保留于高速暫存區(qū)塊1460中,
直到完成上部頁的編程為止。因此,存在下部頁的未被破壞的副本,且所述副本可用于 恢復(fù)下部頁的數(shù)據(jù)。 多個(gè)文件的實(shí)例來自一個(gè)以上主機(jī)數(shù)據(jù)文件的數(shù)據(jù)可存儲(chǔ)于單一區(qū)塊中。文件之間的間斷可出現(xiàn)于 一頁內(nèi),以致頁的一部分含有來自一個(gè)文件的數(shù)據(jù),且頁的一部分含有來自另一文件的 數(shù)據(jù)。圖15展示一實(shí)例,其中原始區(qū)塊1570的頁0到頁i-l含有來自第一文件(文件l) 的數(shù)據(jù),且頁i+l到頁n-l含有來自第二文件(文件2)的數(shù)據(jù)。頁i含有來自文件l的 扇區(qū)(1*4)與(1*4)+1以及來自文件2的扇區(qū)(1*4)+2與(1*4)+3。文件2的扇區(qū)被繪上陰影, 以說明存在來自兩個(gè)文件的扇區(qū)。圖15展示正被更新到新區(qū)塊1572的文件2。以原始區(qū)塊1570的頁i的內(nèi)容寫入新 區(qū)塊1572的第一頁(頁0)。因此,新區(qū)塊1572的頁0含有來自文件2和文件1兩者的 扇區(qū)。此時(shí)不更新來自文件1的扇區(qū)(1*4)和(1*4)+1,而是可將其復(fù)制以便編程數(shù)據(jù)的整 頁。將更新的文件2的剩余部分編程到新區(qū)塊1572的頁l到i-l。隨后,更新文件l。扇 區(qū)0到扇區(qū)(P4)-l存儲(chǔ)于頁i到頁n-l中。然而,扇區(qū)(P4)和(P4)+1也是文件1的一部分, 且必須被更新。因?yàn)榇藭r(shí)新區(qū)塊1572是滿的,所以將更新的扇區(qū)(1*4)和(1*4)+1編程到另 一區(qū)塊。隨后,可作為垃圾收集操作的一部分,將扇區(qū)(^4)和(P4)+1與新區(qū)塊1572中的 扇區(qū)合并到單一區(qū)塊。然而,這花費(fèi)時(shí)間和系統(tǒng)資源,且通常不合需要。圖16展示用于更新含有來自兩個(gè)不同文件的扇區(qū)的圖15的原始區(qū)塊1570的扇區(qū)的 替代技術(shù)。此技術(shù)使用高速暫存區(qū)塊1674來存儲(chǔ)更新的扇區(qū),直到可以系統(tǒng)的最大并行 度將其作為更新的整頁的一部分寫入時(shí)為止。當(dāng)更新文件2時(shí),將更新的扇區(qū)(1*4)+2和 (i*4)+3寫入到高速暫存區(qū)塊1674。此處,將其寫入到高速暫存區(qū)塊1674的頁0,且不 將數(shù)據(jù)寫入到頁的剩余部分,以便使用低程度的并行度。將文件2的剩余扇區(qū)(扇區(qū) (P4)+4到N-1)復(fù)制到新區(qū)塊1676的頁0到n-i。這些扇區(qū)均使用最大并行度在整頁寫 入中被寫入。隨后,更新文件1。以最大并行度將扇區(qū)0至化*4)-1編程到頁n-i+l到n-2 中。隨后與將扇區(qū)(1*4)+2和(1*4)+3復(fù)制到新區(qū)塊1676的頁n-l并行,寫入文件1的扇 區(qū)(P4)和(P4)+I。因此,現(xiàn)將先前保留于原始區(qū)塊1570中的所有扇區(qū)的已更新副本保留 于新區(qū)塊1676中,且在新區(qū)塊1676中不保留過時(shí)數(shù)據(jù)。通常不需要對(duì)例如新區(qū)塊1676 的區(qū)塊進(jìn)行垃圾收集。以最大并行度來編程新區(qū)塊1676的每一頁,以在所述區(qū)塊中實(shí)現(xiàn) 最大的數(shù)據(jù)密度。此時(shí),可將高速暫存區(qū)塊1674中的扇區(qū)(P4)+2和(P4)+3標(biāo)記為過時(shí) 的。然而,高速暫存區(qū)塊1674可用于進(jìn)一步的操作,而無需進(jìn)行垃圾收集操作,因?yàn)楦?br>
速暫存區(qū)塊常規(guī)地含有當(dāng)前和過時(shí)數(shù)據(jù)兩者。 存儲(chǔ)非循序數(shù)據(jù)扇區(qū)的實(shí)例在某些先前實(shí)例中,以比寫入完整頁小的程度的并行度將數(shù)據(jù)扇區(qū)寫入到高速暫存 區(qū)塊。在所述實(shí)例中,正被寫入的高速暫存區(qū)塊的頁中的剩余空間可保持為空,因?yàn)椴?可能稍后在不干擾已存儲(chǔ)的數(shù)據(jù)的情況下對(duì)其進(jìn)行編程。在某些情況下,可能使用此原 本為空的空間以及原本不被使用的編程帶寬來在相同頁中存儲(chǔ)不相關(guān)的數(shù)據(jù)。舉例來說, 在存儲(chǔ)器系統(tǒng)以少于一頁的單一扇區(qū)或扇區(qū)群組接收主機(jī)數(shù)據(jù)的情況下,這些主機(jī)數(shù)據(jù) 的扇區(qū)可以頁存儲(chǔ)于高速暫存區(qū)塊中,所述頁還保留例如不相關(guān)主機(jī)數(shù)據(jù)的不相關(guān)數(shù)據(jù) 或控制數(shù)據(jù)的扇區(qū)。類似地,被存儲(chǔ)于高速暫存區(qū)塊中用于稍后作為整頁的一部分存儲(chǔ) 的來自文件開頭的扇區(qū)可具有存儲(chǔ)于相同高速暫存區(qū)塊頁中的邏輯上不相關(guān)的額外扇 區(qū)。圖17展示一實(shí)例,其中如先前實(shí)例中一樣,將扇區(qū)X、 X+l和X+2存儲(chǔ)于高速暫存 區(qū)塊1780中。然而,此處,保留扇區(qū)X、 X+l和X+2的高速暫存區(qū)塊的頁中的剩余空間 用于存儲(chǔ)其它數(shù)據(jù)。扇區(qū)Y、 Y+l和Y+2與扇區(qū)X—起存儲(chǔ)于頁0中。扇區(qū)Y、 Y+l和 Y+2可與扇區(qū)X、 X+l和X+2邏輯上無關(guān)。其可來自另一主機(jī)數(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—起存儲(chǔ)于頁1中。扇區(qū) Z和Z+l可與扇區(qū)X、 X+l和X+2以及扇區(qū)Y、 Y+l和Y+2兩者在邏輯上無關(guān)。當(dāng)接收 扇區(qū)X+3時(shí),隨后將扇區(qū)X、 X+l、 X+2和X+3寫入到另一區(qū)塊的頁。當(dāng)接收扇區(qū)Y+3 時(shí),將扇區(qū)Y、 Y+l、 Y+2和Y+3寫入到另一區(qū)塊的頁。因此,可將不相關(guān)的數(shù)據(jù)存儲(chǔ) 于高速暫存區(qū)塊的相同頁中,以較有效地使用可用資源。圖18展示存儲(chǔ)于高速暫存區(qū)塊1890中的不相關(guān)數(shù)據(jù)的另一實(shí)例。此處,與之前一 樣,存儲(chǔ)并更新扇區(qū)X、 X+l和X+2。然而,此處,還并行存儲(chǔ)并更新扇區(qū)Y。更新的 扇區(qū)由指示存儲(chǔ)何版本的下標(biāo)表示。舉例來說,扇區(qū)Xo是扇區(qū)X的原始版本,而Xi是 扇區(qū)X的第一更新版本。扇區(qū)Y可為頻繁更新的主機(jī)數(shù)據(jù)扇區(qū)或控制數(shù)據(jù)扇區(qū)。在某些 系統(tǒng)中,例如FAT信息的控制數(shù)據(jù)在存儲(chǔ)主機(jī)數(shù)據(jù)時(shí)更新。在接收少量主機(jī)數(shù)據(jù)的情況 下,可能有利的是在高速暫存區(qū)塊1890中更新控制數(shù)據(jù)。這可避免更新其中僅更新控制 數(shù)據(jù)的單一扇區(qū)的控制結(jié)構(gòu)。在稍后某時(shí),可使用來自高速暫存區(qū)塊的控制數(shù)據(jù)來更新 所述控制數(shù)據(jù)結(jié)構(gòu)。高速暫存區(qū)塊管理
高速暫存區(qū)塊可為存儲(chǔ)器陣列中的指定區(qū)塊??蛇x擇固定物理位置作為高速暫存區(qū) 塊。然而,這可能導(dǎo)致存儲(chǔ)器陣列的不均勻損耗?;蛘?,所述指定區(qū)塊可時(shí)常改變,以 便在高速暫存區(qū)塊變?yōu)橛蛇^時(shí)數(shù)據(jù)填滿時(shí),選擇另一擦除區(qū)塊作為高速暫存區(qū)塊。在此 情況下,由存儲(chǔ)器控制器使用的數(shù)據(jù)結(jié)構(gòu)可識(shí)別高速暫存區(qū)塊的位置,或可標(biāo)記所述指 定的高速暫存區(qū)塊,使得如果控制器掃描存儲(chǔ)器陣列的擦除區(qū)塊,那么其可確定哪一擦 除區(qū)塊為高速暫存區(qū)塊??墒褂蒙葏^(qū)來標(biāo)記高速暫存區(qū)塊,以將其識(shí)別為高速暫存區(qū)塊。 舉例來說,圖19展示將扇區(qū)2110標(biāo)記為高速暫存區(qū)塊2100的第一扇區(qū)。當(dāng)卡片通電時(shí), 可掃描存儲(chǔ)器陣列(或所述存儲(chǔ)器陣列的一部分)的擦除區(qū)塊,以確定高速暫存區(qū)塊(一 或多個(gè))的位置。在圖19的實(shí)例中,讀取每一擦除區(qū)塊的第一扇區(qū)以查看其是否為指示 高速暫存區(qū)塊的標(biāo)記扇區(qū)??蓪?shù)據(jù)作為數(shù)據(jù)群組寫入到高速暫存區(qū)塊。數(shù)據(jù)群組是從主機(jī)接收的邏輯上循序 的扇區(qū)群組。當(dāng)將數(shù)據(jù)群組存儲(chǔ)于高速暫存區(qū)塊中時(shí),還寫入索引扇區(qū),其提供關(guān)于所 存儲(chǔ)的數(shù)據(jù)群組的信息。數(shù)據(jù)群組的扇區(qū)的位置可存儲(chǔ)于索引扇區(qū)中。例如圖19的高速 暫存區(qū)塊2100的高速暫存區(qū)塊可用于存儲(chǔ)多個(gè)數(shù)據(jù)群組。圖20展示存儲(chǔ)一個(gè)數(shù)據(jù)群組 的高速暫存器2100。數(shù)據(jù)群組1由兩個(gè)扇區(qū)2220、 2221組成。這些扇區(qū),標(biāo)記扇區(qū)2110 和索引扇區(qū)2230存儲(chǔ)于高速暫存器2100中。索引扇區(qū)2230存儲(chǔ)關(guān)于群組1的信息。圖21展示編程由兩個(gè)扇區(qū)2340、 2341組成的數(shù)據(jù)群組2之后的圖20的高速暫存區(qū) 塊2100。索引扇區(qū)2350是存儲(chǔ)關(guān)于群組1和群組2的信息的新索引扇區(qū)。因此,索引 扇區(qū)2230為過時(shí)的,因?yàn)樗饕葏^(qū)2350含有包括群組1的高速暫存區(qū)塊2100的數(shù)據(jù)群 組的完整記錄。圖22展示在編程由扇區(qū)2460、 2461和2462組成的數(shù)據(jù)群組3之后的圖21的高速 暫存區(qū)塊2100。索引扇區(qū)2470是存儲(chǔ)關(guān)于數(shù)據(jù)群組1、 2和3的信息的新索引扇區(qū)。索 引扇區(qū)2470含有高速暫存區(qū)塊2100的數(shù)據(jù)的完整記錄,且因此使索引扇區(qū)2350過時(shí)。圖23展示在從高速暫存區(qū)塊2100讀取數(shù)據(jù)群組1和數(shù)據(jù)群組2并將其作為單一頁 寫入在存儲(chǔ)器陣列的另一區(qū)塊中之后的圖22的高速暫存區(qū)塊2100。索引扇區(qū)2560存儲(chǔ) 關(guān)于數(shù)據(jù)群組3的信息。高速暫存器2100中的數(shù)據(jù)群組1和數(shù)據(jù)群組2為過時(shí)的,且因 為其被存儲(chǔ)于別處而不需要索引。因此,索引扇區(qū)2560含有高速暫存區(qū)塊2100中所有 當(dāng)前數(shù)據(jù)的完整記錄。當(dāng)主機(jī)從存儲(chǔ)器陣列請(qǐng)求數(shù)據(jù)扇區(qū)(一或多個(gè))時(shí),控制器可首先檢查所請(qǐng)求的扇 區(qū)是否處于高速暫存區(qū)塊中。如果所述扇區(qū)不存在于高速暫存區(qū)塊中,那么可以常規(guī)方
式尋找所述扇區(qū)。因此,高速暫存器不需要改變用于跟蹤存儲(chǔ)器陣列中數(shù)據(jù)扇區(qū)的位置 的常規(guī)媒體管理。多流更新與索引圖24說明通過以常規(guī)方式將更新存儲(chǔ)于具有單扇區(qū)頁的更新區(qū)塊中來更新邏輯群 組中的扇區(qū)的實(shí)例。數(shù)據(jù)被封裝到邏輯扇區(qū)中并存儲(chǔ)于元區(qū)塊(也簡(jiǎn)稱作"區(qū)塊")中, 其中元區(qū)塊的所有邏輯扇區(qū)可一起擦除。將數(shù)據(jù)逐頁記錄到區(qū)塊中,其中每一頁中的所 有邏輯扇區(qū)可一起編程。所述實(shí)例展示每一扇區(qū)尺寸通常為大約512字節(jié)的單扇區(qū)頁。 在某些情況下,由整個(gè)邏輯扇區(qū)群組形成"原始"區(qū)塊IO,所述整個(gè)邏輯扇區(qū)群組根據(jù) 例如以遞升邏輯扇區(qū)編號(hào)排序的預(yù)定次序存儲(chǔ)于所述"原始"區(qū)塊10中。所述區(qū)塊被認(rèn) 為是完整區(qū)塊,其具有優(yōu)選處于循序次序的完整的邏輯群組的所有扇區(qū)。因此,當(dāng)主機(jī)發(fā)送更新作為邏輯群組的這些邏輯扇區(qū)中的一些邏輯扇區(qū)的最新版本 時(shí),將所更新的扇區(qū)寫入到專用于所述邏輯群組的更新區(qū)塊20。如果結(jié)果發(fā)現(xiàn)更新數(shù)據(jù) 處于預(yù)定次序,那么可將其依序地記錄于更新區(qū)塊中。所述更新區(qū)塊被認(rèn)為是有可能變 為完整區(qū)塊的循序更新區(qū)塊。另一方面,當(dāng)更新扇區(qū)不處于循序次序時(shí),所述更新區(qū)塊 被認(rèn)為是非循序的,或"無序"。在此情況下,扇區(qū)的任何最新版本將最終被復(fù)制到別處, 以形成新的完整區(qū)塊。在主機(jī)寫入#1中,將更新的邏輯扇區(qū)LS10'發(fā)送到存儲(chǔ)器,并將其記錄于更新區(qū)塊 20的頁0中。在主機(jī)寫入#2中,將更新的邏輯扇區(qū)LS11'發(fā)送到存儲(chǔ)器,并將其記錄于 更新區(qū)塊20中的下一可用位置(頁1)中。在主機(jī)寫入#3中,將更新的邏輯扇區(qū)LS6' 和LS7'分別記錄于頁2和3中。最后,在主機(jī)寫入#4中,將更新的邏輯扇區(qū)L10"發(fā)送到 存儲(chǔ)器,并將其記錄于更新區(qū)塊的頁4中。認(rèn)為邏輯群組的更新會(huì)形成流,例如流1, 其中更新數(shù)據(jù)從主機(jī)流到更新區(qū)塊。通常,如果存在分布于原始區(qū)塊和更新區(qū)塊中的邏 輯扇區(qū)的多個(gè)版本,那么僅最近寫入的版本將為有效的版本,其使得所有先前版本過時(shí)。 舉例來說,圖24展示記錄于更新區(qū)塊的頁4中的LS10",其為最近寫入的版本,且因此 對(duì)于邏輯扇區(qū)編號(hào)IO的數(shù)據(jù)來說是當(dāng)前有效的扇區(qū)。先前版本,原始區(qū)塊10中的LS10 和更新區(qū)塊20中的LS10'為過時(shí)的。最終,將關(guān)閉更新區(qū)塊,且更新區(qū)塊與原始區(qū)塊之間的有效扇區(qū)(邏輯扇區(qū)的最新 版本)將以預(yù)定次序合并,從而形成新的原始區(qū)塊。過時(shí)的原始區(qū)塊和更新區(qū)塊將再循 環(huán)。圖25說明當(dāng)應(yīng)用于頁為多扇區(qū)且可能可一次寫入的存儲(chǔ)器時(shí)圖24中所示的相同寫
入序列。所述實(shí)例頁結(jié)構(gòu)與圖24中所示的結(jié)構(gòu)不同之處在于,每一頁現(xiàn)含有四個(gè)扇區(qū)而 非一個(gè),且在某一實(shí)施例中,每一頁在擦除之后僅可被寫入一次。與現(xiàn)有術(shù)語一致,存 儲(chǔ)器裝置占用的最小編程單位將被稱為"物理頁",而系統(tǒng)占用的最小編程單位將被稱為 "元頁",元頁可由多個(gè)物理頁構(gòu)成。為了方便起見,除非另外規(guī)定,否則"元頁"與"頁" 將可互換使用。與之前一樣,每一邏輯扇區(qū)最初以升序邏輯編號(hào)次序循序地存儲(chǔ)于原始區(qū)塊10中。 如果所述區(qū)塊具有四扇區(qū)頁結(jié)構(gòu),那么所述區(qū)塊將被進(jìn)一步分為頁,且每一邏輯扇區(qū)優(yōu) 選地在每一頁中具有確定的頁偏移。舉例來說,頁P(yáng)0具有存儲(chǔ)于其中的邏輯扇區(qū) LS0-LS3。因此,LSO存儲(chǔ)于所述頁的四個(gè)槽的第一者中,且LS1存儲(chǔ)于第二槽中,等等。 在四扇區(qū)頁的實(shí)例中,如果將區(qū)塊的第一邏輯扇區(qū)編號(hào)為L(zhǎng)SO,那么給定扇區(qū)LSn的頁 偏移將由MOD [(n + 1), 4]給出。每當(dāng)主機(jī)向存儲(chǔ)器進(jìn)行寫入時(shí),其發(fā)布寫入許多數(shù)據(jù)單位(通常為邏輯扇區(qū))的寫 入命令,隨后是邏輯扇區(qū)自身的傳輸。為了防止數(shù)據(jù)丟失,主機(jī)與存儲(chǔ)器之間的協(xié)議為, 直到將當(dāng)前的寫入數(shù)據(jù)成功地寫入到存儲(chǔ)器之后才開始下一主機(jī)寫入。如先前所解釋,在具有多扇區(qū)頁的存儲(chǔ)器架構(gòu)中,優(yōu)選地在頁中實(shí)施扇區(qū)對(duì)準(zhǔn),因 為這避免需要在垃圾收集期間進(jìn)行重新對(duì)準(zhǔn)。因此,當(dāng)對(duì)準(zhǔn)時(shí),從每一主機(jī)寫入接收的 扇區(qū)無需填滿更新區(qū)塊中的整數(shù)頁。這可能導(dǎo)致部分填充的頁被編程。所述部分填充的 頁可在主機(jī)數(shù)據(jù)之前或之后具有間隙。這些間隙也可用現(xiàn)有邏輯扇區(qū)來預(yù)先填補(bǔ)或隨后 填補(bǔ),以便盡可能地保持循序次序。在下一主機(jī)寫入是下一邏輯扇區(qū)的情況下,通常優(yōu) 選地不隨后填補(bǔ)所述部分頁。然而,在具有可一次寫入的頁的存儲(chǔ)器架構(gòu)的情況下,部 分頁的未填充部分一旦巳被寫入就不能選擇對(duì)其進(jìn)行重寫。在所述實(shí)例中,已視需要將更新流(SPB)中的一者中的有效頁的數(shù)目限制為一。 這足以說明所述原理,但應(yīng)注意,可在SPB中存儲(chǔ)一個(gè)以上頁,其中需要解析較多信息 (例如,較舊的寫入指針),以便尋找最新寫入的扇區(qū)。例如在圖25中,在主機(jī)寫入#1中,更新的扇區(qū)LS10'存儲(chǔ)于更新區(qū)塊20的頁P(yáng)0的 第三偏移中。視需要,為了完整性,可用例如來自原始區(qū)塊10的LS8和LS9的有效數(shù) 據(jù)填補(bǔ)最初兩個(gè)槽。然而,這仍使得當(dāng)在主機(jī)寫入弁1結(jié)束時(shí)保存頁P(yáng)0時(shí)第四槽保持未 填滿。部分頁可視需要用LSll的最新版本來隨后填補(bǔ)。由于頁可一次寫入,所以未填滿 的第四槽將關(guān)閉而不用于進(jìn)一步編程。在主機(jī)寫入#2中,命令是寫入接收的已更新扇區(qū)LS11',結(jié)果發(fā)現(xiàn)所述扇區(qū)LS11'
處于與上一扇區(qū)LS10'循序的次序。理想地,其應(yīng)被記錄于PO中LS10'之后的下一槽中。 然而,PO關(guān)閉而不用于進(jìn)一步寫入,且因此,將LSll'存儲(chǔ)于下一空頁P(yáng)l中的最后槽處, 此為其適當(dāng)?shù)捻撈?。用作為循序處于LS11'之前的邏輯扇區(qū)的有效版本的LS8、 LS9和 LS10'來填補(bǔ)Pl的最初三個(gè)槽。在主機(jī)寫入#3中,命令是寫入LS6'和LS7'。將這些分別寫入到P2 (其為更新區(qū)塊 中的下一空頁)的第三和第四槽處。用例如LS4和LS5的有效數(shù)據(jù)來填補(bǔ)第一和第二槽。最后,在主機(jī)寫入#4中,命令是寫入LS10",且將其存儲(chǔ)于P3的槽3中,同時(shí)分別 用LS8和LS9來填補(bǔ)槽l和2,且槽4保持為空??梢?,在試圖在每一可一次編程的頁內(nèi)保持扇區(qū)對(duì)準(zhǔn)時(shí),由于許多填補(bǔ)和死空間 (dead space)的緣故,更新區(qū)塊的使用效率低下。不合需要的特征為,即使主機(jī)循序進(jìn) 行寫入(兩個(gè)單獨(dú)寫入命令中的扇區(qū)IO和隨后11),更新區(qū)塊也停止循序,且由于其具 有某些過時(shí)數(shù)據(jù)而不能變得完整。為了避免上述問題,并使由于部分填充的頁以及過多填補(bǔ)導(dǎo)致的更新區(qū)塊20中的低 效存儲(chǔ)最小化,先前已描述使用額外的高速暫存區(qū)塊30。所述高速暫存區(qū)塊(SPB) 30 充當(dāng)傳入的數(shù)據(jù)的臨時(shí)緩沖器和預(yù)留區(qū)域(staging area),使得數(shù)據(jù)的整頁可在寫入到更 新區(qū)塊20之前被預(yù)留。在上文四扇區(qū)頁的實(shí)例中,預(yù)留所述扇區(qū),以便寫入四個(gè)扇區(qū), 從而完全填滿更新區(qū)塊中的頁。在主機(jī)在單獨(dú)寫入中寫入循序數(shù)據(jù)的情況下,SPB允許 緩沖部分頁的寫入并使更新區(qū)塊保持循序。然而,這也意味著,除原始和更新區(qū)塊外, 有效數(shù)據(jù)現(xiàn)還可分布于SPB上。為了方便起見,高速暫存區(qū)塊的頁尺寸與更新區(qū)塊的頁尺寸相同,但通常其可能是 不同的。舉例來說,如果存儲(chǔ)器系統(tǒng)支持以物理頁級(jí)編程,那么高速暫存區(qū)塊的頁可具 有物理頁的尺寸。高速暫存區(qū)塊和更新區(qū)塊索引管理2004年8月13日申請(qǐng)的第10/917,725號(hào)美國(guó)專利申請(qǐng)案揭示了一種具有區(qū)塊管理 的存儲(chǔ)器系統(tǒng),其整個(gè)揭示內(nèi)容以引用的方式并入本文中。區(qū)塊管理提供更新區(qū)塊以與 在更新中的數(shù)據(jù)的每一邏輯群組相關(guān)聯(lián)。所揭示內(nèi)容為定位可能存在于原始區(qū)塊或更新 區(qū)塊上的有效數(shù)據(jù)的多種索引方案的實(shí)例。明確地說,當(dāng)更新區(qū)塊含有處于非循序次序 的邏輯扇區(qū)時(shí),其被認(rèn)為是"無序更新區(qū)塊"。無序更新區(qū)塊索引("CBI")用于跟蹤記 錄于無序更新區(qū)塊中的邏輯扇區(qū)。保存于高速暫存區(qū)塊中的SPBI/CBI索引
根據(jù)本發(fā)明的另一方面,當(dāng)除更新區(qū)塊外還使用高速暫存區(qū)塊時(shí),相關(guān)聯(lián)的高速暫 存區(qū)塊索引("SPBI")用于跟蹤記錄于所述高速暫存區(qū)塊中的更新扇區(qū)。這用于(除索 引(例如"CBI")外)跟蹤記錄于更新區(qū)塊中的邏輯扇區(qū)。只要用戶數(shù)據(jù)存儲(chǔ)于高速暫 存區(qū)塊的部分頁中,就意味著頁的至少最后槽未填滿。在一個(gè)實(shí)施例中,SPBI可存儲(chǔ)于 高速暫存區(qū)塊中的部分頁的最后槽中。在優(yōu)選實(shí)施例中,SPBI和CBI可封裝于SPBI/CBI 扇區(qū)內(nèi),并存儲(chǔ)于無論如何都不使用的高速暫存區(qū)塊中部分頁的最后槽處。每次寫入新 的部分頁,就在末端槽處寫入更新的SPBI/CBI扇區(qū),從而使所有先前版本過時(shí)。圖26是說明根據(jù)本發(fā)明的通用實(shí)施例的更新數(shù)據(jù)的方法的流程圖,所述方法通過將 第一存儲(chǔ)器區(qū)塊與第二存儲(chǔ)器區(qū)塊結(jié)合使用并將所存儲(chǔ)的數(shù)據(jù)的索引保存于第二區(qū)塊中 來更新數(shù)據(jù)。步驟80:提供第一和第二非易失性存儲(chǔ)裝置,每一非易失性存儲(chǔ)裝置用于循序記錄數(shù)據(jù)c步驟81:保持已被記錄于第一和第二非易失性存儲(chǔ)裝置中的數(shù)據(jù)的至少一個(gè)索引。 步驟82:接收輸入數(shù)據(jù)。步驟84:確定是否滿足針對(duì)將緩沖的輸入數(shù)據(jù)記錄到第一存儲(chǔ)裝置的第一預(yù)定條件。如果滿足,那么進(jìn)行到步驟85,否則進(jìn)行到步驟86。步驟85:將所述緩沖的輸入數(shù)據(jù)記錄到第一存儲(chǔ)裝置。進(jìn)行到步驟88。步驟86:將所述緩沖的輸入數(shù)據(jù)與至少一個(gè)索引一起記錄到第二存儲(chǔ)裝置。進(jìn)行到步驟88。步驟88:如果存在更多待處理的輸入數(shù)據(jù),那么進(jìn)行到步驟72,否則結(jié)束過程。圖27A說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例通過將更新區(qū)塊與高速暫存區(qū)塊結(jié)合使用來更 新數(shù)據(jù)并保持索引的特定實(shí)例。每一區(qū)塊是元區(qū)塊,其中其所有存儲(chǔ)器位置可一起擦除。 所述區(qū)塊組織為頁,其中頁內(nèi)所有存儲(chǔ)器位置可一起編程。此外,每一頁具有存儲(chǔ)一個(gè) 以上扇區(qū)的尺寸,且每當(dāng)區(qū)塊已被擦除時(shí)可一次寫入。除更新區(qū)塊("UB") 20夕卜,還提供高速暫存區(qū)塊("SPB") 30。如果"流1"用于 標(biāo)記數(shù)據(jù)向更新區(qū)塊20的流動(dòng),那么向高速暫存區(qū)塊30的相應(yīng)流動(dòng)將被標(biāo)記為"流0"。圖24和圖25中的相同主機(jī)寫入實(shí)例將用于說明圖27A中所示的本發(fā)明的優(yōu)勢(shì)。在 主機(jī)#1中,命令是寫入LS10'。由于LS10'應(yīng)占用槽3,所以整頁不可被寫入到更新區(qū)塊 20。事實(shí)上,其通過緩沖于SPB30的新的頁中而被預(yù)留。因此,LS10'存儲(chǔ)于SPB 30的 下一可用部分頁P(yáng)P0的槽3中。同時(shí),槽1和2視需要分別用LS8和LS9填補(bǔ)。并且,
根據(jù)本發(fā)明的特征,SPBI和CBI都封裝于扇區(qū)內(nèi),即索弓l扇區(qū)SPBI/CBI! 50內(nèi),且所述 索引扇區(qū)50有利地存儲(chǔ)于部分頁P(yáng)P0的最后、未使用的槽中。在主機(jī)寫入#2中,命令是寫入LS11'。由于LS11'屬于處于頁末處的槽4,所以以來 自SPB 30的循序LS8、 LS9和LS10'預(yù)先填補(bǔ)的整頁可被寫入到更新區(qū)塊20的下一可用 頁P(yáng)0。在此情況下,不更新SPBI/CBI的索引扇區(qū),因?yàn)槠洳粚懭氲絊PB 30中的部分頁。 SPB中的對(duì)準(zhǔn)以及預(yù)先填補(bǔ)是優(yōu)選的,但可任選。在主機(jī)寫入#3中,命令是寫入LS6鄰LS7'。其分別屬于槽3和4。因此,當(dāng)用LS4 和LS5填補(bǔ)先前槽時(shí),寫入另一整頁,即更新區(qū)塊20的P1。再次,不更新SPBI/CBI的 索引扇區(qū),因?yàn)槠洳粚懭氲絊PB30中的部分頁。在主機(jī)寫入#4中,命令是寫入LS10"。由于LS10"屬于槽3,所以其將被寫入到SPB 30的下一部分頁P(yáng)P1。類似地,用LS8和LS9填補(bǔ)先前槽1和2,而最后槽還將存儲(chǔ)有 索引扇區(qū)的最新更新SPBI/CBI3。通過將主機(jī)寫入#4結(jié)束時(shí)對(duì)更新區(qū)塊20的使用與圖25的方案相比容易看出,圖27A 中所示的方案是對(duì)更新區(qū)塊更有效的利用。對(duì)于相同的主機(jī)寫入,圖27A中所示的方案 消耗較少的存儲(chǔ)裝置,且在更新區(qū)塊中需要較少的填補(bǔ)(雖然以高速暫存區(qū)塊30為代 價(jià))。同時(shí),索引方案利用高速暫存區(qū)塊中未使用的存儲(chǔ)裝置將索引存儲(chǔ)在非易失性存儲(chǔ) 器中。本發(fā)明的一個(gè)重要特征和優(yōu)勢(shì)為,在循序邏輯扇區(qū)的一系列獨(dú)立主機(jī)寫入期間,保 持更新區(qū)塊中更新扇區(qū)的循序次序,這不同于圖25中所示的實(shí)例。從圖27B中說明的實(shí) 例將了解這一情況。圖27B說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例通過將更新區(qū)塊與高速暫存區(qū)塊結(jié)合使用來更 新正保持的數(shù)據(jù)的循序次序的另一實(shí)例。在此實(shí)例中,依次但經(jīng)由若干單獨(dú)的主機(jī)寫入 來寫入邏輯扇區(qū)LS10' - LS16'。在主機(jī)寫入#1中,寫入LS10'。由于其應(yīng)占用頁的槽3 (并非頁末槽),所以其被記 錄到在高速暫存區(qū)塊30的槽3中。同時(shí),將索引SPBI/CBI1記錄于頁末槽中。在主機(jī)寫入#2中,寫入LS11'。由于其應(yīng)占用頁末槽,所以將其直接記錄到更新區(qū) 塊20中的新的頁的最后槽。同時(shí),將臨時(shí)存儲(chǔ)于高速暫存區(qū)塊中的LS10'復(fù)制到槽3, 同時(shí)用來自原始或完整區(qū)塊10的LS8和LS9預(yù)先填補(bǔ)槽1和2。在主機(jī)寫入#3中,寫入LS12'-LS14'。由于其均不具有末端頁偏移,所以將其存儲(chǔ) 于高速暫存區(qū)塊中新的頁的槽1-3中。同時(shí),將已更新的索引SPBI/CBI3記錄于頁末槽中。在主機(jī)寫入#4中,寫入LS15'和LS16'。由于LS15'屬于頁末槽,所以將其直接寫入 到更新區(qū)塊中的下一頁的最后槽。同時(shí),用來自高速暫存區(qū)塊的LS12' - LS14'分別填充 槽l陽3。將了解,以循序方式將循序的邏輯扇區(qū)LS10'-LS16'記錄于更新區(qū)塊中,但其是經(jīng)由 若干單獨(dú)的主機(jī)寫入而寫入的。在優(yōu)選實(shí)施例中,在高速暫存區(qū)塊中每一邏輯群組保持一個(gè)有效部分頁(例如,最 后寫入的部分頁)。本發(fā)明可等效地應(yīng)用于在高速暫存區(qū)塊中每一邏輯群組保持一個(gè)以上 有效部分頁。在所述情況下,需要解析來自一個(gè)以上頁的索引信息,以便定位所記錄的 扇區(qū)。高速暫存區(qū)塊的頁內(nèi)的扇區(qū)對(duì)準(zhǔn)和填補(bǔ)是優(yōu)選的,但為可選的。所述對(duì)準(zhǔn)和填補(bǔ)將 有助于隨后向更新區(qū)塊轉(zhuǎn)移。在某一存儲(chǔ)器架構(gòu)中,更新區(qū)塊的頁內(nèi)過時(shí)扇區(qū)對(duì)準(zhǔn)將簡(jiǎn)化索引和復(fù)制。即使當(dāng)頁 中所有循序扇區(qū)由某數(shù)目的槽循環(huán)轉(zhuǎn)移時(shí),所述頁中的扇區(qū)也被認(rèn)為是頁對(duì)準(zhǔn)的。在所 述情況下,指示頁中第一邏輯扇區(qū)的位置的頁標(biāo)記將提供偏移地址。所示的優(yōu)選實(shí)施例具有兩個(gè)存儲(chǔ)裝置作為兩個(gè)不同的可擦除區(qū)塊。通常,本發(fā)明可 等效地應(yīng)用于作為存儲(chǔ)器的兩個(gè)部分的兩個(gè)存儲(chǔ)裝置。本發(fā)明也可等效地應(yīng)用于每一存儲(chǔ)器單元存儲(chǔ)一個(gè)數(shù)據(jù)位的兩狀態(tài)存儲(chǔ)器,和每一 存儲(chǔ)器單元能夠存儲(chǔ)一個(gè)以上數(shù)據(jù)位的多狀態(tài)存儲(chǔ)器。對(duì)于支持多頁存儲(chǔ)的多狀態(tài)存儲(chǔ)器,下部頁優(yōu)選地用于存儲(chǔ)高速暫存區(qū)塊的操作。如果將要寫入的第一扇區(qū)并非開始于 多槽頁的槽l位置,那么優(yōu)選地預(yù)先填補(bǔ)部分頁。頁級(jí)索引用于無序區(qū)塊,且扇區(qū)級(jí)索引用于高速暫存區(qū)塊。為了快速存取和處理, 在控制器SRAM中保持用于存取所有無序區(qū)塊和高速暫存區(qū)塊的所有必需的索引信息, 即SPBI/CBI。無論何時(shí)寫入新的部分頁,均將索引信息周期性寫到高速暫存區(qū)塊。通常,將部分元頁重定位數(shù)據(jù)與傳入的數(shù)據(jù)一起編程,以減少編程循環(huán)的數(shù)目。當(dāng) 高速暫存區(qū)塊(SPB)變滿時(shí),對(duì)其進(jìn)行壓縮。SPB壓縮是將所有有效數(shù)據(jù)重定位到新 的區(qū)塊。由于在SPB中每UB僅有一個(gè)具有有效數(shù)據(jù)的頁,所以僅需要將那些頁復(fù)制到 新的區(qū)塊。如果每更新區(qū)塊存在多個(gè)具有有效數(shù)據(jù)的頁(其可能含有不同或相同的邏輯 地址;在后一情況下優(yōu)選地將其合并)。保存于部分頁中的更新區(qū)塊索引
根據(jù)本發(fā)明的又一方面,存儲(chǔ)于存儲(chǔ)器區(qū)塊中的數(shù)據(jù)使其索引存儲(chǔ)于部分頁的未被 數(shù)據(jù)占用的部分中。因此,在組織為存儲(chǔ)器單元(其中存儲(chǔ)器單元的頁可一起編程且存 儲(chǔ)器頁的區(qū)塊可一起擦除)的存儲(chǔ)器中,當(dāng)存儲(chǔ)于存儲(chǔ)器單元中的數(shù)據(jù)單位根據(jù)預(yù)定次 序在頁中對(duì)準(zhǔn)時(shí),且尤其如果所述頁在每次擦除之后可一次編程,那么將存在部分填充 的頁。區(qū)塊的索引隨后存儲(chǔ)于未用更新數(shù)據(jù)填充的部分頁中。所述部分頁可在當(dāng)前區(qū)塊 中或另一區(qū)塊中。圖28說明用于保存存儲(chǔ)器區(qū)塊的索引的優(yōu)選方案,所述索引用于將更新數(shù)據(jù)存儲(chǔ)于 所述區(qū)塊的部分頁中。步驟90:將非易失性存儲(chǔ)器組織為存儲(chǔ)器單元的可擦除區(qū)塊,每一存儲(chǔ)器單元用于 存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還被組織為一個(gè)或一個(gè)以上頁,其中每一頁中的存儲(chǔ)器 單元具有預(yù)定的頁偏移,且在擦除之后可一起一次編程。步驟92:提供一區(qū)塊作為更新區(qū)塊,用于記錄邏輯數(shù)據(jù)單位的更新版本。 步驟94:從主機(jī)接收邏輯數(shù)據(jù)單位。 步驟96:保持更新區(qū)塊中的數(shù)據(jù)的索引。步驟98:逐頁向更新區(qū)塊進(jìn)行記錄,其中所接收的數(shù)據(jù)根據(jù)其頁偏移在頁中對(duì)準(zhǔn), 且當(dāng)待記錄的頁具有未被數(shù)據(jù)占用的部分時(shí),也將所述索引記錄到所述未被數(shù)據(jù)占用的 部分。多流跟蹤與同步圖29示意說明用于多流更新的高速暫存區(qū)塊,其中若干邏輯群組同時(shí)經(jīng)受更新。舉 例來說,如果存在k個(gè)正經(jīng)受更新的邏輯群組,那么將存在使用k個(gè)更新區(qū)塊20-l,…,20-k 的k個(gè)更新流。為了避免更新區(qū)塊中的部分頁,在另一流(流0)中使用高速暫存區(qū)塊 30,以在k個(gè)更新區(qū)塊的k個(gè)相應(yīng)部分頁中緩沖數(shù)據(jù)。因此,將存在k+l個(gè)開放的區(qū)塊 和k個(gè)部分頁,以為k個(gè)更新區(qū)塊中k個(gè)邏輯群組的邏輯單位的同時(shí)更新服務(wù)。所示的 實(shí)例是針對(duì)在高速暫存區(qū)塊中每更新區(qū)塊存在一個(gè)有效頁的優(yōu)選實(shí)施例。在有效扇區(qū)分布于更新區(qū)塊和高速暫存區(qū)塊中的情況下,在功率循環(huán)中識(shí)別扇區(qū)的 最近寫入的版本時(shí)可能出現(xiàn)問題,因?yàn)榭稍诟聟^(qū)塊和高速暫存區(qū)塊兩者中找到相同邏 輯扇區(qū)的不同副本。功率重設(shè)之后在更新區(qū)塊上進(jìn)行存儲(chǔ)器掃描將建立邏輯扇區(qū)的多個(gè) 版本(如果有的話)的優(yōu)先級(jí),因?yàn)楦聟^(qū)塊的位置以確定的次序填充。類似地掃描高 速暫存區(qū)塊,可識(shí)別出邏輯扇區(qū)的最近寫入的版本。然而,如果高速暫存區(qū)塊中存在最 新版本且更新區(qū)塊中存在最新版本,那么不容易確定哪一者為真正最新的。舉例來說, 在圖27A中,可在兩個(gè)流中找到扇區(qū)LS8-LSIO。通過不同命令序列-寫入LS8'- LS10'; 寫入LS8" - LS10";寫入LS8'" - LSll'";寫入LS4'- LS7'可產(chǎn)生相同的數(shù)據(jù)圖案,如圖 27A上。在此情況下,有效扇區(qū)將位于更新區(qū)塊中而非高速暫存區(qū)塊中。根據(jù)本發(fā)明的另一方面,提供一種將更新數(shù)據(jù)寫入到具有同步信息的非易失性存儲(chǔ) 器的方法,所述同步信息允許識(shí)別可能存在于多個(gè)存儲(chǔ)器區(qū)塊上的數(shù)據(jù)的最近寫入的版 本。圖30說明將輸入數(shù)據(jù)序列寫入到區(qū)塊的常規(guī)情況。非易失性存儲(chǔ)器區(qū)塊22經(jīng)組織 以使其以確定的次序被填充。其示意展示為從頂部填充。因此,數(shù)據(jù)"A"、 "B"、 "C" 和"A'"的片段的循序?qū)懭氡谎蛑糜趨^(qū)塊中。以此方式,如果(例如)"A'"是"A" 的另一版本,那么可從其在區(qū)塊22中的被記錄位置確定其為替代"A"的稍后版本。下 文的實(shí)施例盡管有效,但僅是存儲(chǔ)關(guān)于在更新一個(gè)確定的流時(shí)所述流有多滿的信息的較 廣義概念的特殊情況。圖31A說明根據(jù)本發(fā)明的優(yōu)選實(shí)施例即使當(dāng)不同的寫入交叉于兩個(gè)區(qū)塊上時(shí)也跟蹤 記錄次序或優(yōu)先級(jí)的方案。例如數(shù)據(jù)片段"A"、 "B"、 "C"和"A'"的每一寫入依據(jù)一 個(gè)或一個(gè)以上預(yù)定條件而可被記錄到第一區(qū)塊(例如,區(qū)塊22)上或第二區(qū)塊(例如, 區(qū)塊32)上。在所述實(shí)例中,"A"在第一寫入中被記錄到第二區(qū)塊32。隨后是第二寫入, 在第二寫入中"B"被記錄到第一區(qū)塊22,和第三寫入,在第三寫入中"C"被記錄到第 二區(qū)塊32,且最后是第四寫入,在第四寫入中"A'"被記錄到第一區(qū)塊22。在所示的圖式中,流0是記錄到第二區(qū)塊32的數(shù)據(jù)流,且流1是記錄到第一區(qū)塊 22的數(shù)據(jù)流。在兩個(gè)或兩個(gè)以上流中的相同邏輯數(shù)據(jù)的交叉更新的情況下,有必要跟蹤 更新的優(yōu)先級(jí),所述優(yōu)先級(jí)界定最近記錄的數(shù)據(jù)的位置。在優(yōu)選實(shí)施例中,這通過至少 每當(dāng)記錄給定的流時(shí)保存優(yōu)先級(jí)信息來完成。每當(dāng)流0中的寫入數(shù)據(jù)被記錄到區(qū)塊32上時(shí),將優(yōu)先級(jí)信息與寫入數(shù)據(jù)一起保存。 在所述優(yōu)選實(shí)施例中,優(yōu)先級(jí)信息是寫入指針40,其指向第一區(qū)塊22中的下一空位置 (即,下一記錄位置的地址)。所述寫入指針與存儲(chǔ)于流O中的數(shù)據(jù)一起保存。因此,在寫入"A"操作中,在流0中將指向區(qū)塊22中的下一空位置的指針PA40-A 與"A" —起保存于區(qū)塊32中。在寫入"B"操作中,由于在流1中寫入是針對(duì)區(qū)塊22 的,所以不保存指針。在寫入"C"中,在流O中將指針Pc 40-C與"C" 一起保存于區(qū) 塊32中。在針對(duì)區(qū)塊22的寫入"A'"過程中,在流l中不保存指針。如果在寫入"A'"結(jié)束時(shí),存儲(chǔ)器在功率中斷后被重設(shè),那么控制器RAM中的任何
索引都會(huì)丟失,且必須通過掃描存儲(chǔ)器來重建。通過向后掃描,區(qū)塊22和32中的每一 者將定位數(shù)據(jù)"A"的最近寫入的版本。寫入指針40可用于在兩個(gè)區(qū)塊之間確定真正最 新的版本。舉例來說,指針Pc在記錄"A'"之前指向區(qū)塊22中的一位置,因此"A'"在 "C"之后被記錄。并且,由于"C"在"A"之后被記錄于區(qū)塊32中的一位置處,因此 可推斷"A'"是"A"的稍后版本。在每UBSPB中存在一個(gè)以上有效頁的另一實(shí)施例中,因此,為了檢測(cè)最近寫入的數(shù) 據(jù),將必須解析一個(gè)以上寫入指針。圖31B說明當(dāng)寫入記錄于兩個(gè)區(qū)塊上時(shí)跟蹤記錄次序的另一實(shí)施例。此實(shí)施例與圖 31A所示的類似,只是寫入指針指向區(qū)塊32中的下一空位置且保存于區(qū)塊22中。流0 被記錄到第二區(qū)塊(例如,區(qū)塊32),而流l被記錄到第一區(qū)塊(例如,區(qū)塊22)。每當(dāng) 流l被記錄到第一區(qū)塊上時(shí),給出第二區(qū)塊22中的下一記錄位置的地址的第二區(qū)塊寫入 指針40'與其一起保存。在此實(shí)例中,以"B"記錄指針P'B40'-B。類似地,在流l中以"A'" 將指針PV- 40'-A'記錄于第一區(qū)塊22中。圖32A是說明根據(jù)本發(fā)明的通用實(shí)施例在兩個(gè)數(shù)據(jù)流之間使記錄序列同步的方法的 流程圖。步驟100:提供第一和第二非易失性存儲(chǔ)裝置,每一非易失性存儲(chǔ)裝置用于循序記 錄數(shù)據(jù)。步驟102:將第一或第二存儲(chǔ)裝置指定為用于優(yōu)先級(jí)信息的存儲(chǔ)裝置,所述優(yōu)先級(jí) 信息用于確定第一存儲(chǔ)裝置中的第一數(shù)據(jù)單位是在第二存儲(chǔ)裝置中的第二數(shù)據(jù)單位之前 還是之后被記錄。步驟110:接收輸入數(shù)據(jù)。步驟120:確定是否滿足針對(duì)將接收的輸入數(shù)據(jù)記錄到第一存儲(chǔ)裝置的預(yù)定條件。如果滿足,那么進(jìn)行到步驟130',否則進(jìn)行到步驟140'。步驟130:將所接收的數(shù)據(jù)記錄到第一存儲(chǔ)裝置。同時(shí),如果第一存儲(chǔ)裝置是所指定的存儲(chǔ)裝置,那么另外將優(yōu)先級(jí)信息記錄到第一存儲(chǔ)裝置。進(jìn)行到步驟150。步驟140:將所接收的輸入數(shù)據(jù)記錄到第二存儲(chǔ)裝置。同時(shí),如果第二存儲(chǔ)裝置是所指定的存儲(chǔ)裝置,那么另外將優(yōu)先級(jí)信息記錄到第二存儲(chǔ)裝置。進(jìn)行到步驟150。步驟150:如果存在更多待處理的輸入數(shù)據(jù),那么進(jìn)行到步驟IIO,否則結(jié)束過程。在優(yōu)選實(shí)施例中,優(yōu)先級(jí)信息是寫入指針,其是下一記錄將在非指定的存儲(chǔ)裝置中 發(fā)生的位置的地址。 圖32B是說明根據(jù)使用寫入指針的實(shí)施例在兩個(gè)數(shù)據(jù)流之間使記錄序列同步的方法 的流程圖。步驟100':提供第一和第二非易失性存儲(chǔ)裝置,每一非易失性存儲(chǔ)裝置用于循序記 錄數(shù)據(jù)。步驟110':接收輸入數(shù)據(jù)。步驟120':確定是否滿足針對(duì)將接收的輸入數(shù)據(jù)記錄到第一存儲(chǔ)裝置的預(yù)定條件。如果滿足,那么進(jìn)行到步驟130',否則進(jìn)行到步驟140'。步驟130':獲取下一記錄將在第二存儲(chǔ)裝置中發(fā)生的位置的地址。步驟132':將地址和所接收的輸入數(shù)據(jù)記錄到第一存儲(chǔ)裝置。進(jìn)行到步驟150'。 步驟140':將所接收的輸入數(shù)據(jù)記錄到第二存儲(chǔ)裝置。進(jìn)行到步驟150'。步驟150':如果存在更多待處理的輸入數(shù)據(jù),那么進(jìn)行到步驟IIO,否則結(jié)束過程。本發(fā)明尤其可應(yīng)用于組織為存儲(chǔ)器單元的可擦除區(qū)塊的非易失性存儲(chǔ)器,每一存儲(chǔ) 器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織成一個(gè)或一個(gè)以上頁。此外,每一頁在擦除之后可以多個(gè)邏輯單位一次編程,每一邏輯單位以給定的頁偏移而處于預(yù)定次序。 所述方法實(shí)質(zhì)上提供用于存儲(chǔ)或緩沖一邏輯單位群組的更新數(shù)據(jù)的兩個(gè)區(qū)塊(例如,更 新區(qū)塊和高速暫存區(qū)塊),并保持用于幫助識(shí)別邏輯單位的最近寫入的版本位于第一還是第二區(qū)塊中的同步信息。參看圖29,如果存在多個(gè)流,那么圖31A所示的實(shí)施例為優(yōu)選 的,因?yàn)閷⑺袑懭胫羔槾鎯?chǔ)于SPB中的一個(gè)位置較方便。 更新區(qū)塊寫入指針實(shí)施例根據(jù)優(yōu)選實(shí)施例,每當(dāng)寫入指針形式的同步信息緩沖于高速暫存區(qū)塊中時(shí),所述同 步信息與主機(jī)數(shù)據(jù)一起保存。寫入指針是更新區(qū)塊寫入指針,其給出在將寫入指針保存 于高速暫存區(qū)塊中時(shí)更新區(qū)塊中下一寫入的位置的地址。特定來說,其被保存于高速暫 存區(qū)塊的無論如何不用于存儲(chǔ)主機(jī)數(shù)據(jù)的一部分中。優(yōu)選地,更新區(qū)塊寫入指針包括在 存儲(chǔ)于高速暫存區(qū)塊的部分頁中的索引SPBI/CBI中。更新區(qū)塊寫入指針將允許確定緩沖 于高速暫存區(qū)塊中的給定邏輯扇區(qū)是否已通過隨后向更新區(qū)塊進(jìn)行的寫入而變?yōu)檫^時(shí) 的。如果存在功率重設(shè),且在兩個(gè)區(qū)塊中找到討論中的邏輯扇區(qū)的兩個(gè)版本,那么寫入 指針將允許決定哪一版本為真正最新的。舉例來說,如果在所指位置之后記錄更新區(qū)塊 中的邏輯扇區(qū),那么其將替代SPB中部分頁中的版本。另一方面,如果未在更新區(qū)塊中 找到邏輯扇區(qū)或邏輯扇區(qū)記錄于較早的位置處,那么結(jié)論將是,緩沖于高速暫存區(qū)塊的
部分頁中的版本仍為有效的。圖33A展示在根據(jù)第一序列的兩個(gè)主機(jī)寫入并l和#2之后,高速暫存區(qū)塊和更新區(qū)塊 的狀態(tài)。第一序列針對(duì)用于寫入LS10'的主機(jī)寫入M,和用于寫入LS10"和LS11'的主機(jī) 寫入#2。在主機(jī)寫入#1中,命令是寫入LS10'。由于LS10'并非處于頁邊界處,所以其被記錄 于用LS8和LS9預(yù)先填補(bǔ)并以當(dāng)前索引SPBI/CBh終止的高速暫存區(qū)塊30中的部分頁 PPO中。當(dāng)寫入部分頁P(yáng)PO時(shí),將寫入指針40包括在保存于最后槽中的當(dāng)前索引 SPBI/CBh 50中。寫入指針40指向更新區(qū)塊20中的第一空頁P(yáng)O。在主機(jī)寫入#2中,命令是寫入LS10"和LSll。由于LS11'處于頁末,所以其被直接 寫入到更新區(qū)塊20中的P0的最后槽(槽4)。同時(shí),以LS10'對(duì)槽3進(jìn)行寫入,且分別 用LS8和LS9來填補(bǔ)槽1和2。如果存儲(chǔ)器現(xiàn)經(jīng)受功率中斷,丟失了維持于RAM中的索引信息,那么對(duì)物理存儲(chǔ)器 的向后掃描將試圖重建所述索引信息。將了解,更新區(qū)塊和高速暫存區(qū)塊(SPB)都將 產(chǎn)生其LS10的最新版本,即LS10'與LS10"。然而,由于LS10"是在記錄于SPB的PPO 中的寫入指針之后記錄的,所以可推斷其為比LS10'更遲的版本。圖33B展示在根據(jù)與圖33A中所示的第一序列相反的第二序列的兩個(gè)主機(jī)寫入弁l和 #2之后,高速暫存區(qū)塊和更新區(qū)塊的狀態(tài)。所述相反序列針對(duì)用于寫入LS10鄰LS11' 的主機(jī)寫入#1,和用于寫入LS10"的主機(jī)寫入井2。在主機(jī)寫入射中,命令是寫入LSio'和LSir。由于LSir處于頁末,所以其被直接寫入到更新區(qū)塊20中的P0的最后槽(槽4)。同時(shí),以LS10'對(duì)槽3進(jìn)行寫入,且分別 用LS8和LS9填補(bǔ)槽1和2。在主機(jī)寫入弁1之后的主機(jī)寫入#2中,命令是寫入LS10"。由于LS10"并非處于頁邊 界處,所以其被記錄于用LS8和LS9預(yù)先填補(bǔ)并以當(dāng)前索引SPBI/CBl2終止的高速暫存 區(qū)塊30中的部分頁P(yáng)P0中。當(dāng)寫入部分頁P(yáng)PO時(shí),寫入指針40包括在保存于最后槽中 的當(dāng)前索引SPBI/CBI2 50中。寫入指針40指向更新區(qū)塊20中的下一空頁P(yáng)l。在此情況下,在功率重設(shè)之后,更新區(qū)塊中的邏輯扇區(qū)LS10'(例如)被發(fā)現(xiàn)記錄于 更新區(qū)塊20的被指向的位置之前。因此可推斷更新區(qū)塊20中LS10'的最新版本由駐存在 高速暫存區(qū)塊30的部分頁中的另一版本LS10"替代。圖34A說明高速暫存區(qū)塊索引(SPBI)的優(yōu)選數(shù)據(jù)結(jié)構(gòu)。SPBI信息對(duì)于k個(gè)更新區(qū) 塊中的每一者含有以下字段。這是每邏輯群組/UB具有一個(gè)有效頁的SPB的特殊情況。
邏輯群組編號(hào)識(shí)別給定流中正經(jīng)受更新的邏輯群組。優(yōu)選地,對(duì)于自由更新區(qū)塊或 不具有有效高速暫存器數(shù)據(jù)的更新區(qū)塊存儲(chǔ)空值"FFFF"。頁開始扇區(qū)是寫入到高速暫存區(qū)塊的部分頁的第一邏輯扇區(qū)。扇區(qū)運(yùn)行長(zhǎng)度(Sector Run Length)是寫入到高速暫存器頁的部分頁的有效扇區(qū)的數(shù)目。有效頁編號(hào)識(shí)別寫入于高速暫存區(qū)塊中的唯一有效(唯一有效的)部分頁。其將是 高速暫存區(qū)塊中最后寫入的部分頁?;蛘?,可以扇區(qū)偏移來實(shí)施定址,所述扇區(qū)偏移指 向更新區(qū)塊的部分頁的第一有效扇區(qū)。相對(duì)于區(qū)塊的開始對(duì)扇區(qū)偏移進(jìn)行計(jì)數(shù)。在所述 優(yōu)選實(shí)施例中,僅一個(gè)物理頁含有給定更新區(qū)塊的有效數(shù)據(jù)。對(duì)于未寫入到高速暫存區(qū) 塊的扇區(qū)存儲(chǔ)FFFF。更新區(qū)塊寫入指針40是當(dāng)最后寫入高速暫存器時(shí)相應(yīng)的更新區(qū)塊的第一未寫入的 扇區(qū)位置的扇區(qū)地址。從此扇區(qū)位置寫入到更新區(qū)塊的任何扇區(qū)將替代寫入到高速暫存 區(qū)塊中的扇區(qū)。圖34B說明圖33A中所示的主機(jī)寫入#1的高速暫存區(qū)塊索引中的實(shí)例值。在此實(shí)例 中,邏輯群組編號(hào)為"1",其含有邏輯扇區(qū)LS0到LSN-1。其在流l中與附隨的更新區(qū) 塊和高速暫存區(qū)塊一起更新。部分頁為PP0,且其以LS8或"8"開始并具有行程(run) "3"從而以LS10'結(jié)束。有效部分頁編號(hào)為"0"。最終,寫入指針指向更新區(qū)塊中下一 寫入位置,其具有扇區(qū)偏移"0"。將了解,如果更新的索引僅存儲(chǔ)于高速暫存區(qū)塊中,且無論何時(shí)將數(shù)據(jù)直接寫入到 更新區(qū)塊都不寫入所述高速暫存區(qū)塊,那么在那些情況下索引將變得無效。通常,整個(gè)SPB索引信息以及Cm索引信息總是保持于控制器SRAM中的數(shù)據(jù)結(jié)構(gòu) 中?;谏葏^(qū)級(jí)索引信息存取SPB中的有效扇區(qū)。在所述優(yōu)選實(shí)施例中,SPBI/CBI索 引存儲(chǔ)于高速暫存區(qū)塊中的非易失性存儲(chǔ)器中。明確地說,每當(dāng)在高速暫存區(qū)塊(SPB) 中寫入部分頁時(shí),將最新的SPBI/CBI存儲(chǔ)于所述部分頁的最后扇區(qū)中。SPB支持多達(dá)預(yù)定數(shù)目(例如,8)的更新區(qū)塊。當(dāng)主機(jī)寫入頁的最后扇區(qū)時(shí),SPB 區(qū)塊中的部分頁數(shù)據(jù)合并到相關(guān)聯(lián)的更新區(qū)塊。在給定情況下,對(duì)于邏輯群組,數(shù)據(jù)可 存在于SPB中的一個(gè)以上部分頁中,但僅最后寫入的部分頁的數(shù)據(jù)是有效的。類似地, SPBI/CBI扇區(qū)的多個(gè)副本可存在于SPB中,但僅最后寫入的副本是有效的。當(dāng)需要將扇 區(qū)寫入到SPB且所述SPB已滿時(shí),將區(qū)塊首先復(fù)制到新的SPB區(qū)塊,并擦除舊的SPB, 其后將扇區(qū)寫入到所述新的SPB。當(dāng)因?yàn)檠蚋聟^(qū)塊變得無序或因?yàn)橄惹昂懈咚贂?br>
存器數(shù)據(jù)的更新區(qū)塊被關(guān)閉而需要更新SPBI/CBI時(shí),也對(duì)SPB進(jìn)行寫入。在所述優(yōu)選實(shí)施例中,高速暫存區(qū)塊(SPB)寫入是以一次一頁的方式進(jìn)行的。每流/邏輯群組/更新區(qū)塊的頁的數(shù)目也被限制為一,所以僅需要最新的SPBI,因?yàn)閮H存在一個(gè)關(guān)于有效副本在UB或SPB中處于何處存在疑問的邏輯頁。類似地,如果SPB中每UB的頁的數(shù)目多于一,那么同樣將需要解析舊的SPBI。上文描述的實(shí)施例存儲(chǔ)更新區(qū)塊寫入指針,作為高速暫存區(qū)塊的最新部分頁中SPBI/CBI扇區(qū)的一部分。替代實(shí)施例可能從可存在于多個(gè)區(qū)塊中的多個(gè)版本中識(shí)別邏輯扇區(qū)的有效版本。也有可能在高速暫存區(qū)塊中每流具有一個(gè)以上頁,或如果每一邏輯群組具有一個(gè)以上更新區(qū)塊或流。 高速暫存區(qū)塊寫入指針實(shí)施例根據(jù)本發(fā)明的另一實(shí)施例,保持同步信息,所述同步信息將允許確定緩沖于高速暫 存區(qū)塊中的給定邏輯扇區(qū)是否已由于隨后向更新區(qū)塊進(jìn)行的寫入而變得過時(shí)。這通過包 括高速暫存器寫入指針來完成,所述寫入指針給出在將同步信息存儲(chǔ)于更新區(qū)塊的頁中 時(shí)高速暫存區(qū)塊中下一寫入的位置的地址圖35A和圖35B展示在圖33A和圖33B的循序主機(jī)寫入之后,高速暫存區(qū)塊和更新 區(qū)塊分別相對(duì)于高速暫存器寫入指針的中間狀態(tài)。圖35A說明在主機(jī)寫入并l之后高速暫存區(qū)塊和更新區(qū)塊的狀態(tài)。在主機(jī)寫入弁1中, 邏輯扇區(qū)LS10'屬于頁的槽3,且不處于頁邊界處,且因此被記錄于高速暫存區(qū)塊30的 部分頁P(yáng)P0中。將視需要用LS8和LS9填補(bǔ)并以當(dāng)前索引SPBI/CBI!終止。如果存儲(chǔ)器 在功率關(guān)閉后已被重新啟動(dòng),那么邏輯扇區(qū)LS10'的有效版本將由最后的SPBI/CBh索引 正確地定位。情況如此是因?yàn)閷?duì)更新區(qū)塊20未進(jìn)行任何寫入。圖35B說明主機(jī)寫入#1之后的主機(jī)寫入#2,其中命令是寫入LS11'。由于LS11'處于 頁邊界(槽4)處,所以其被記錄于填滿的頁P(yáng)O的第四槽中,所述頁P(yáng)0用LS8、 LS9和 LS10預(yù)填補(bǔ)。同步信息呈SPB寫入指針40'的形式,其指向SPB30中的下一空位置。不 同于之前的實(shí)施例,所述SPB寫入指針40'不包括于SPB 30的SPBI/CBI索引中。事實(shí) 上,其存儲(chǔ)于更新區(qū)塊20中當(dāng)前正被記錄的頁中的扇區(qū)的標(biāo)頭部分中。如果存儲(chǔ)器在功 率關(guān)閉后已被重新啟動(dòng),那么邏輯扇區(qū)LS10'的有效版本將在更新區(qū)塊20中被正確定位, 因?yàn)镾PB中的LS10的版本記錄在由SPB寫入指針40'指向的位置之前。圖36說明存儲(chǔ)于被記錄到更新區(qū)塊的扇區(qū)的額外開銷部分中的高速暫存器寫入指 針。高速暫存器寫入指針40'保存于當(dāng)前正被記錄到更新區(qū)塊的頁中的扇區(qū)中的至少一者
中。在所述優(yōu)選實(shí)施例中,將其保存于正被寫入的頁中的扇區(qū)中的至少一者的額外開銷 部分中。時(shí)戳實(shí)施例在又一實(shí)施例中,可將同步信息編碼為寫入到多個(gè)流的數(shù)據(jù)扇區(qū)的時(shí)戳,以便可正 確找到最新版本。圖37說明使用時(shí)戳來跟蹤兩個(gè)更新流之間的記錄序列。與之前一樣,更新數(shù)據(jù)的每 一片段可記錄于第一區(qū)塊(流l)中或第二區(qū)塊(流2)中。所述實(shí)例展示在時(shí)間T1, 將"A"記錄于第一區(qū)塊中,在T2,將"B"記錄于第二區(qū)塊中,在T3,將"C"記錄于 第一區(qū)塊中,且在T4,將"A'"記錄于第二區(qū)塊中。對(duì)于每個(gè)新的數(shù)據(jù)更新部分存儲(chǔ)至少一個(gè)時(shí)戳。因此,"A"將具有時(shí)戳TS1, "B" 具有TS2, "C"具有TS3且"A'"具有TS4。因此,舉例來說,"A'"是"A"的稍后版 本,因?yàn)槠渚哂休^后的時(shí)戳。在所述優(yōu)選實(shí)施例中,時(shí)戳信息存儲(chǔ)于正被寫入的頁中扇 區(qū)的至少一者的額外開銷部分中。具有多扇區(qū)頁的區(qū)塊的多流更新根據(jù)本發(fā)明的另一方面, 一種更新非易失性存儲(chǔ)器的方法包括使用用于記錄更新數(shù) 據(jù)的第一區(qū)塊(更新區(qū)塊)和用于在記錄到所述更新區(qū)塊之前臨時(shí)保存某些更新數(shù)據(jù)的 第二區(qū)塊(高速暫存區(qū)塊)。所述非易失性存儲(chǔ)器組織成存儲(chǔ)器單元的可擦除區(qū)塊,每一 存儲(chǔ)器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織為一個(gè)或一個(gè)以上頁,其中每一頁能夠存儲(chǔ)具有確定的頁偏移的多個(gè)邏輯單位,且在擦除之后可一起一次編程。所述方 法進(jìn)一步包括從主機(jī)接收邏輯單位,并將所述接收的邏輯單位逐頁對(duì)準(zhǔn),以便當(dāng)滿足接 收的邏輯單位具有頁末偏移的預(yù)定條件時(shí),將所述接收的邏輯單位與先前任何邏輯單位 以適當(dāng)?shù)捻搶?duì)準(zhǔn)存儲(chǔ)到更新區(qū)塊中的頁中,否則,將任何剩余的所接收的邏輯單位臨時(shí) 存儲(chǔ)到高速暫存區(qū)塊中的部分頁中。當(dāng)滿足所述預(yù)定條件時(shí),最終將高速暫存區(qū)塊中的 邏輯單位轉(zhuǎn)移到更新區(qū)塊。在優(yōu)選實(shí)施例中,接收更新數(shù)據(jù),并對(duì)其進(jìn)行逐頁解析以便轉(zhuǎn)移到第一區(qū)塊(例如, 更新區(qū)塊)。將任何剩余的緩沖數(shù)據(jù)的部分頁轉(zhuǎn)移到第二區(qū)塊(例如,高速暫存區(qū)塊), 且所述部分頁將保留于第二區(qū)塊處直到數(shù)據(jù)的整頁變?yōu)榭捎糜谟涗浀降谝粎^(qū)塊為止。當(dāng) 將所緩沖的數(shù)據(jù)轉(zhuǎn)移到第二區(qū)塊時(shí),其被逐頁記錄,但所記錄的頁僅部分地被所接收的 數(shù)據(jù)填充。所述部分頁中的空閑(通常為未使用的)空間用于存儲(chǔ)用于定位第二和第一 區(qū)塊中的數(shù)據(jù)的索引。
圖38是說明根據(jù)本發(fā)明的通用實(shí)施例將更新數(shù)據(jù)同時(shí)記錄并編索引到兩個(gè)存儲(chǔ)器 區(qū)塊的方法的流程圖,每一存儲(chǔ)器區(qū)塊具有多扇區(qū)的頁。步驟200:將非易失性存儲(chǔ)器組織成存儲(chǔ)器單元的可擦除區(qū)塊,每一存儲(chǔ)器單元用 于存儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還組織成一個(gè)或一個(gè)以上頁,其中每一頁含有多個(gè)存 儲(chǔ)器單元,且在擦除之后可一起一次編程。步驟210:提供用于逐整頁地記錄邏輯數(shù)據(jù)單位的更新版本的第一區(qū)塊。 步驟220:提供用于緩沖從主機(jī)接收的邏輯數(shù)據(jù)單位的更新版本的第二區(qū)塊。 步驟232:從主機(jī)接收邏輯單位中的數(shù)據(jù)。步驟234:通過定位任何具有頁末偏移的邏輯單位來逐頁解析所接收的邏輯單位; 步驟236:在用先前邏輯單位的最新版本填充新的頁的同時(shí),將具有頁末偏移的邏輯單位的每一者記錄到第一區(qū)塊中的所述新的頁,并將任何剩余的所接收的邏輯單位記錄于第二區(qū)塊中的部分頁中。圖39是說明使用高速暫存區(qū)塊和更新區(qū)塊的圖37的方法的更具體實(shí)施方案的流程圖。步驟310:提供更新區(qū)塊(UB)用于逐整頁地記錄邏輯單位的更新版本,每一邏輯 單位根據(jù)預(yù)定次序而具有預(yù)定的頁偏移。步驟322:提供高速暫存區(qū)塊(SPB)用于臨時(shí)逐頁緩沖引導(dǎo)到其的更新。 步驟324:提供用于在SPB中定位有效(最新版本)數(shù)據(jù)的SPBI索引。 步驟332:逐邏輯單位地接收當(dāng)前寫入請(qǐng)求的數(shù)據(jù)。步驟334:如果當(dāng)前邏輯單位在頁末處偏移,那么進(jìn)行到步驟340,否則進(jìn)行到步驟336。步驟336:如果寫入請(qǐng)求具有更多待接收的數(shù)據(jù),那么進(jìn)行到步驟332,否則進(jìn)行到 步驟350。步驟340:用頁末尾處的當(dāng)前邏輯單位記錄UB的新頁,并根據(jù)預(yù)定次序用有效(最 新版本)的邏輯單位填充頁的剩余部分。進(jìn)行到步驟336。步驟350:如果所有接收的數(shù)據(jù)已被記錄,那么進(jìn)行到步驟180,否則進(jìn)行到步驟360。步驟360:如果未記錄的所接收數(shù)據(jù)不屬于與SPB中任何現(xiàn)有有效(最新版本)數(shù) 據(jù)相同的頁,那么進(jìn)行到步驟370,否則進(jìn)行到步驟362。 步驟362:更新SPB索引。
步驟364:將未記錄的所接收數(shù)據(jù)和任何現(xiàn)有有效數(shù)據(jù)在其頁偏移處記錄到SPB的 新的頁中,以SPB索引結(jié)束。進(jìn)行到步驟380。步驟370:通過合并,將來自SPB的當(dāng)前頁的現(xiàn)有有效數(shù)據(jù)重新定位到UB的新的頁。步驟372:更新SPB索引。步驟374:將未記錄的所接收數(shù)據(jù)在其頁偏移處寫入到SPB的新的頁中,以SPB索 引結(jié)束。步驟380:結(jié)束當(dāng)前寫入請(qǐng)求。所述SPB支持多達(dá)預(yù)定數(shù)目(例如,8)的更新區(qū)塊。當(dāng)主機(jī)寫入頁的最后扇區(qū)時(shí), SPB區(qū)塊中的部分頁數(shù)據(jù)合并到相關(guān)聯(lián)的更新區(qū)塊。在給定情況下,對(duì)于邏輯群組,數(shù) 據(jù)可存在于SPB中一個(gè)以上部分頁中,但在所述優(yōu)選實(shí)施例中僅最后寫入的部分頁的數(shù) 據(jù)是有效的。類似地,SPBI/CBI扇區(qū)的多個(gè)副本可存在于SPB中,但僅最后寫入的副本 是有效的。出于相同考慮,如果SPB中每UB的有效頁的數(shù)目被限制為一,那么僅需要 最后的寫入指針。當(dāng)需要將扇區(qū)寫入到SPB且所述SPB已滿時(shí),將區(qū)塊首先復(fù)制到新的 SPB區(qū)塊并擦除舊的SPB,其后將扇區(qū)寫入到新的SPB。當(dāng)因?yàn)檠蚋聟^(qū)塊變得無序, 或因?yàn)橄惹昂懈咚贂捍嫫鲾?shù)據(jù)的更新區(qū)塊被關(guān)閉而需要更新SPBI/CBI時(shí),也對(duì)SPB 進(jìn)行寫入。通常,如先前所提及,每一更新區(qū)塊的一個(gè)以上SPB部分頁可用于存儲(chǔ)有效數(shù)據(jù)。 以此方式,如果下一主機(jī)寫入頁外部的扇區(qū),那么無需將所述部分頁合并以為新的頁讓 路。多流更新方案允許對(duì)更新區(qū)塊的較有效利用。對(duì)于具有可一次寫入的多扇區(qū)頁的區(qū) 塊來說情況尤其如此。所述方案消耗較少的存儲(chǔ)裝置,且在更新區(qū)塊中需要較少的填補(bǔ)。 更重要的是,在循序邏輯扇區(qū)的一系列單獨(dú)主機(jī)寫入期間維持更新區(qū)塊中的更新扇區(qū)的 循序次序。具有預(yù)示性管線操作的多流更新在上文所述的多流更新方案中,每當(dāng)存在主機(jī)寫入時(shí),將必須作出將所接收的主機(jī) 數(shù)據(jù)記錄到更新區(qū)塊還是高速暫存區(qū)塊的決定。來自主機(jī)的數(shù)據(jù)單位在其被接收時(shí)可被 逐一監(jiān)視,直到接收到具有末尾頁偏移的數(shù)據(jù)單位為止。此時(shí),確定對(duì)于寫入整頁的預(yù) 定條件,但可能進(jìn)行預(yù)先填補(bǔ)。為了向更新區(qū)塊進(jìn)行寫入,需要設(shè)置待寫入的頁以用于編程。這涉及對(duì)頁進(jìn)行定址,
且隨后將所述頁的數(shù)據(jù)載入到數(shù)據(jù)鎖存器。根據(jù)優(yōu)選實(shí)施例,實(shí)施預(yù)示性管線操作,在所述操作中,并非等待直到確定對(duì)于向 更新區(qū)塊記錄的預(yù)定條件為止,而是設(shè)置所述更新區(qū)塊,從而一旦主機(jī)寫入命令指示期 望被寫入的數(shù)據(jù)單位潛在地滿足預(yù)定條件就對(duì)所述更新區(qū)塊進(jìn)行寫入。以此方式,當(dāng)?shù)?待來自主機(jī)的數(shù)據(jù)單位時(shí),所述設(shè)置可具有跳躍式開始。當(dāng)最終接收的實(shí)際數(shù)據(jù)單位確 實(shí)滿足所述預(yù)定條件時(shí),更新區(qū)塊中頁的編程可立即進(jìn)行,而無需等待設(shè)置,藉此改進(jìn) 寫入性能。在主機(jī)寫入中斷以及所接收的實(shí)際數(shù)據(jù)單位不再滿足所述預(yù)定條件的情況下, 將放棄用于向更新區(qū)塊記錄的設(shè)置,而是將把數(shù)據(jù)單位記錄到高速暫存區(qū)塊。圖40A示意說明具有一系列讀取/寫入電路的存儲(chǔ)器裝置,其提供實(shí)施本發(fā)明的情 境。所述存儲(chǔ)器裝置包括存儲(chǔ)器單元的二維陣列400、控制電路410和讀取/寫入電路470。 所述存儲(chǔ)器陣列400可經(jīng)由行解碼器430由字線定址以及經(jīng)由列解碼器460由位線定址。 讀取/寫入電路470實(shí)施為一系列感測(cè)模塊480 (未圖示),且允許并行讀取或編程一群組 (也稱為"頁")存儲(chǔ)器單元。并行操作的整個(gè)系列p個(gè)感測(cè)模塊480允許并行讀取或編 程沿著行的一頁p個(gè)單元。 一個(gè)實(shí)例存儲(chǔ)器陣列可具有p=512字節(jié)(512X8位)。在所 述優(yōu)選實(shí)施例中,區(qū)塊具有整行單元的行程。在另一實(shí)施例中,區(qū)塊是行中單元的子集。 舉例來說,單元的子集可以是整行的一半或整行的四分之一。單元的子集可以是鄰接單 元或每隔一個(gè)單元或每隔預(yù)定數(shù)目的單元的行程。因此,在優(yōu)選實(shí)施例中,由鄰接的一 行存儲(chǔ)器單元構(gòu)成一頁。在另一實(shí)施例中,在一行存儲(chǔ)器單元被分為多個(gè)頁的情況下, 提供頁多路復(fù)用器350以將讀取/寫入電路470多路傳輸?shù)絺€(gè)別頁。控制電路410與讀取/寫入電路470協(xié)作以對(duì)存儲(chǔ)器陣列400執(zhí)行存儲(chǔ)器操作。所述 控制電路410包括狀態(tài)機(jī)412、芯片上地址解碼器414和功率控制模塊416。所述狀態(tài)機(jī) 412提供對(duì)存儲(chǔ)器操作的芯片級(jí)控制。所述芯片上地址解碼器414在由主機(jī)或存儲(chǔ)器控 制器使用的地址與由解碼器330和370使用的硬件地址之間提供地址接口。所述功率控 制模塊416控制在存儲(chǔ)器操作期間供應(yīng)到字線和位線的功率和電壓。圖40B說明圖40A中所示的存儲(chǔ)器裝置的優(yōu)選配置。通過多個(gè)外圍電路對(duì)存儲(chǔ)器陣 列400的存取在所述陣列的相對(duì)側(cè)以對(duì)稱樣式實(shí)施,以便每一側(cè)的存取線和電路減半。 因此,行解碼器被分為行解碼器430A和430B,且列解碼器被分為列解碼器460A和460B。 在將一行存儲(chǔ)器單元?jiǎng)澐譃槎鄠€(gè)區(qū)塊的實(shí)施例中,頁多路復(fù)用器450被分為頁多路復(fù)用 器450A和450B。類似地,讀取/寫入電路被分為連接到來自陣列400底部的位線的讀取 /寫入電路470A和連接到來自陣列400頂部的位線的讀取/寫入電路470B。以此方式,讀 取/寫入模塊的密度,且因此所述系列的感測(cè)模塊480的密度,大體上減半。導(dǎo)引到位于陣列頂部的讀取/寫入模塊的數(shù)據(jù)將經(jīng)由頂部的i/o轉(zhuǎn)移。類似地,導(dǎo)引到位于陣列底部的讀取/寫入模塊的數(shù)據(jù)將經(jīng)由底部的I/O轉(zhuǎn)移。圖41更詳細(xì)地說明圖40A中所示的感測(cè)模塊。每一感測(cè)模塊480大體上包括用于感 測(cè)存儲(chǔ)器單元的傳導(dǎo)狀態(tài)的讀出放大器482、用于存儲(chǔ)所感測(cè)的數(shù)據(jù)或待編程的數(shù)據(jù)的 一組數(shù)據(jù)鎖存器484和用于與外部通信的I/O電路486。第2004-0109357-A1號(hào)美國(guó)專利 公開案中揭示了優(yōu)選的讀出放大器,所述專利公開案的整個(gè)揭示內(nèi)容以引用的方式并入 本文中。在編程操作期間,首先定址所選擇的字線和位線。之后經(jīng)由1/0端口向個(gè)別數(shù)據(jù)鎖 存器轉(zhuǎn)移待編程的數(shù)據(jù)。隨后,在將編程電壓施加到字線以開始編程之前將位線預(yù)充電。 實(shí)際施加編程電壓之前的步驟可被認(rèn)為是編程設(shè)置。當(dāng)頁尺寸相當(dāng)大時(shí),將編程數(shù)據(jù)轉(zhuǎn) 移到數(shù)據(jù)鎖存器所需的時(shí)間也會(huì)相當(dāng)多。在主機(jī)寫入期間,主機(jī)首先發(fā)送主機(jī)寫入命令,其向存儲(chǔ)器裝置指示其期望寫入的 數(shù)據(jù)單位的范圍。隨后是以逐數(shù)據(jù)單位的方式傳輸所述范圍內(nèi)的數(shù)據(jù)單位,直到到達(dá)所 述范圍的末端為止。視協(xié)議而定,有可能所述傳輸可能意外中斷,且在新的寫入命令中 發(fā)送剩余的數(shù)據(jù)單位。為了改進(jìn)寫入性能,將需要進(jìn)行管線操作,在所述管線操作中可在仍在接收數(shù)據(jù)單 位的同時(shí)進(jìn)行編程設(shè)置過程。然而,在可依據(jù)是否接收到特定數(shù)據(jù)單位而將數(shù)據(jù)單位記 錄到多個(gè)存儲(chǔ)裝置中的任一者的多流方案中,向給定存儲(chǔ)裝置記錄的定址將直到實(shí)際上 無中斷地接收到那些特定數(shù)據(jù)單位才確定。為了克服此問題,使用預(yù)示性管線方案。如果在由主機(jī)寫入命令指示的范圍內(nèi)找到 導(dǎo)致向給定存儲(chǔ)裝置進(jìn)行記錄的那些特定數(shù)據(jù)單位,那么所述給定存儲(chǔ)裝置將被立即設(shè) 置以用于編程。當(dāng)實(shí)際上接收到那些特定數(shù)據(jù)單位時(shí),所述給定存儲(chǔ)裝置將能夠編程所 述數(shù)據(jù)單位而不會(huì)由于編程設(shè)置而延遲。另一方面,如果那些特定數(shù)據(jù)單位由于中斷而 未能實(shí)現(xiàn),那么將放棄對(duì)所述給定存儲(chǔ)裝置的編程設(shè)定,且改為選擇另一存儲(chǔ)裝置進(jìn)行 設(shè)置和隨后的編程。圖42是說明根據(jù)優(yōu)選實(shí)施例的使用預(yù)示性管線方案的多流更新的流程圖。步驟500:提供用于記錄主機(jī)數(shù)據(jù)單位的第一和第二存儲(chǔ)裝置。舉例來說,所述第 一存儲(chǔ)裝置是更新區(qū)塊,其為專用于存儲(chǔ)更新數(shù)據(jù)的可擦除區(qū)塊,且所述第二存儲(chǔ)裝置 是高速暫存區(qū)塊,其為用于臨時(shí)緩沖正向更新區(qū)塊轉(zhuǎn)移的更新數(shù)據(jù)的另一可擦除區(qū)塊。
步驟510:接收指示待寫入的數(shù)據(jù)單位的范圍的主機(jī)寫入命令。步驟512:如果數(shù)據(jù)單位的所述范圍含有滿足對(duì)于將數(shù)據(jù)單位記錄到第一存儲(chǔ)裝置 的預(yù)定條件的數(shù)據(jù)單位,那么進(jìn)行到步驟520,否則進(jìn)行到步驟530。舉例來說,將可擦 除區(qū)塊組織為頁,每一頁能夠存儲(chǔ)可一起編程的多個(gè)數(shù)據(jù)單位。所述數(shù)據(jù)單位以邏輯上 循序次序存儲(chǔ)于頁中,以便每一數(shù)據(jù)單位具有預(yù)定的頁偏移。所述對(duì)于向更新區(qū)塊記錄 的預(yù)定條件是當(dāng)可記錄整頁時(shí)。充分條件是當(dāng)存在具有末尾頁偏移的數(shù)據(jù)單位時(shí),其中 如果需要,通過在頁中預(yù)填補(bǔ)任何先前數(shù)據(jù)單位來形成整頁。如果不滿足所述預(yù)定條件, 那么主機(jī)數(shù)據(jù)將被記錄到高速暫存區(qū)塊。步驟520:設(shè)置地址以準(zhǔn)備記錄到第一存儲(chǔ)裝置。舉例來說,如果所述范圍包括具有末尾頁偏移的數(shù)據(jù)單位,那么將假定將整頁記錄到更新區(qū)塊。在所述情況下,更新區(qū) 塊中的新的頁將被定址以用于記錄。步驟522:將所接收的數(shù)據(jù)載入數(shù)據(jù)鎖存器中,為向第一存儲(chǔ)裝置記錄作準(zhǔn)備。一旦從主機(jī)接收到數(shù)據(jù)單位,就將其載入到數(shù)據(jù)鎖存器以用于編程新的頁。步驟524:如果實(shí)際上接收到滿足所述預(yù)定條件的數(shù)據(jù)單位,那么進(jìn)行到步驟540, 否則進(jìn)行到步驟526。舉例來說,當(dāng)從主機(jī)實(shí)際上接收到具有末尾頁偏移的數(shù)據(jù)單位時(shí), 可明確地形成所預(yù)示的整頁。步驟526:中止用于記錄到第一存儲(chǔ)裝置的設(shè)置。進(jìn)行到步驟530。舉例來說,如果 所期望的具有末尾頁偏移的數(shù)據(jù)單位由于中斷而未到達(dá),那么整頁將被記錄到更新區(qū)塊 的預(yù)示不再為真。在所述情況下,將必須放棄對(duì)于更新區(qū)塊的編程設(shè)置。事實(shí)上,現(xiàn)將 設(shè)置高速暫存區(qū)塊以用于編程。步驟530:設(shè)置地址以準(zhǔn)備記錄到第二存儲(chǔ)裝置。舉例來說,當(dāng)不滿足對(duì)于將整頁 記錄到更新區(qū)塊的預(yù)定條件時(shí),主機(jī)數(shù)據(jù)將被記錄到高速暫存區(qū)塊。在所述情況下,將 定址高速暫存區(qū)塊中的新的頁以用于記錄。步驟532:將所接收的數(shù)據(jù)載入數(shù)據(jù)鎖存器中,為向第二存儲(chǔ)裝置記錄作準(zhǔn)備。一 旦從主機(jī)接收到數(shù)據(jù)單位,就將其載入到數(shù)據(jù)鎖存器以用于編程新的頁。步驟540:將數(shù)據(jù)鎖存器中的數(shù)據(jù)編程到所定址的存儲(chǔ)裝置。舉例來說,當(dāng)所接收 的數(shù)據(jù)單位確定向更新區(qū)塊或向高速暫存區(qū)塊進(jìn)行的所預(yù)示的記錄時(shí),可在無延遲的情 況下編程設(shè)置區(qū)塊。步驟550:結(jié)束當(dāng)前的主機(jī)寫入。視存儲(chǔ)器架構(gòu)而定,步驟520和530可處于不同次序,例如可在步驟522或步驟532
中對(duì)數(shù)據(jù)鎖存器進(jìn)行載入之后選擇地址。在另一優(yōu)選實(shí)施例中,在數(shù)據(jù)正被接收時(shí)且當(dāng)在將所接收的數(shù)據(jù)記錄到第一存儲(chǔ)裝 置還是第二存儲(chǔ)裝置方面初始存在不確定性時(shí),將所述接收的數(shù)據(jù)載入到編程電路的數(shù) 據(jù)鎖存器以用于第一與第二存儲(chǔ)裝置兩者。以此方式,數(shù)據(jù)將始終可立即用于編程第一 或第二存儲(chǔ)裝置。在特殊情況下,第一和第二存儲(chǔ)裝置共享相同組數(shù)據(jù)鎖存器。舉例來 說,當(dāng)?shù)谝缓偷诙鎯?chǔ)裝置處于相同存儲(chǔ)器平面中時(shí),其可由具有相同組的讀出放大器 和數(shù)據(jù)鎖存器的相同組的編程電路提供服務(wù)。在所述情況下,數(shù)據(jù)將被載入到一組默認(rèn) 的數(shù)據(jù)鎖存器,而與將編程第一存儲(chǔ)裝置還是第二存儲(chǔ)裝置無關(guān)。在第一和第二存儲(chǔ)裝置由不同組的數(shù)據(jù)鎖存器提供服務(wù)的情況下(例如,處于相同 平面的不同存儲(chǔ)器頁中或處于不同存儲(chǔ)器平面中的情況),可將數(shù)據(jù)載入到兩組數(shù)據(jù)鎖存 器。圖43是說明根據(jù)另一實(shí)施例的多流更新的流程圖,在所述多流更新中在發(fā)送正確目 的地地址之前載入編程數(shù)據(jù)。步驟600:提供第一和第二存儲(chǔ)裝置用于記錄主機(jī)數(shù)據(jù)單位。 步驟610:接收主機(jī)數(shù)據(jù)。步驟620:在接收到數(shù)據(jù)時(shí)將數(shù)據(jù)加載到用于對(duì)第一存儲(chǔ)裝置的數(shù)據(jù)鎖存器和用于 對(duì)第二存儲(chǔ)裝置編程的數(shù)據(jù)鎖存器。步驟630:視所接收的數(shù)據(jù)是否滿足預(yù)定條件而定,來定址第一或第二存儲(chǔ)裝置以供記錄。步驟640:將數(shù)據(jù)從其數(shù)據(jù)鎖存器編程到所定址的存儲(chǔ)裝置。 步驟650:結(jié)束當(dāng)前的主機(jī)寫入。盡管已參照各種示范性實(shí)施例描述本發(fā)明,但將了解,本發(fā)明享有在所附權(quán)利要求 書的整個(gè)范圍內(nèi)受保護(hù)的權(quán)利。
權(quán)利要求
1. 一種記錄來自主機(jī)的數(shù)據(jù)的方法,其包含(a) 提供第一和第二非易失性存儲(chǔ)裝置,其每一者用于循序地記錄數(shù)據(jù);(b) 保持所述第一和第二非易失性存儲(chǔ)裝置中的數(shù)據(jù)的至少一個(gè)索引; (C)接收來自所述主機(jī)的所述數(shù)據(jù);(d) 當(dāng)滿足預(yù)定條件時(shí),將所述數(shù)據(jù)記錄到所述第一存儲(chǔ)裝置;(e) 當(dāng)不滿足所述預(yù)定條件時(shí),將所述數(shù)據(jù)和所述至少一個(gè)索引記錄到所述第二 存儲(chǔ)裝置;以及(f) 重復(fù)(b)到(e),直到不再有數(shù)據(jù)需要記錄為止。
2. 根據(jù)權(quán)利要求l所述的方法,其中所述第一和第二存儲(chǔ)裝置中的每一者用于存儲(chǔ)可 一起擦除的存儲(chǔ)器單元的區(qū)塊。
3. 根據(jù)權(quán)利要求l所述的方法,其中來自所述主機(jī)的所述數(shù)據(jù)是用于數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一存儲(chǔ)裝置用于存儲(chǔ)所述更新數(shù)據(jù);以及所述第二存儲(chǔ)裝置用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一存儲(chǔ)裝置之前緩沖所 述更新數(shù)據(jù)。
4. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包含將所述數(shù)據(jù)組織成具有預(yù)定次序的數(shù)據(jù)單位;以及將所述第一和第二非易失性存儲(chǔ)裝置組織成頁,每一頁用于將具有預(yù)定頁偏移的 多個(gè)數(shù)據(jù)單位一起編程。
5. 根據(jù)權(quán)利要求4所述的方法,其中每一頁在擦除之后可一次編程。
6. 根據(jù)權(quán)利要求4所述的方法,其中所述預(yù)定條件是當(dāng)所述接收的數(shù)據(jù)單位中的一者具有頁末偏移時(shí);以及 所述將所述數(shù)據(jù)記錄到所述第一存儲(chǔ)裝置包括將所述頁末數(shù)據(jù)單位和所述頁中 的任何先前數(shù)據(jù)單位記錄到所述第一存儲(chǔ)裝置的頁。
7. 根據(jù)權(quán)利要求4所述的方法,其中將所述至少一個(gè)索引記錄到所述第二存儲(chǔ)裝置中 未被數(shù)據(jù)占用的頁的位置。
8. 根據(jù)權(quán)利要求4所述的方法,其中將所述至少一個(gè)索引記錄到所述第二存儲(chǔ)裝置中 具有頁末偏移的頁的位置。
9. 根據(jù)權(quán)利要求4所述的方法,其中所述將所述數(shù)據(jù)和所述至少一個(gè)索引記錄到所述 第二存儲(chǔ)裝置額外包括記錄指向所述第一存儲(chǔ)裝置的下一記錄位置的指針。
10. 根據(jù)權(quán)利要求1到9中任一權(quán)利要求所述的方法,其中所述第一和第二非易失性存 儲(chǔ)裝置由各自存儲(chǔ)一個(gè)數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
11. 根據(jù)權(quán)利要求1到9中任一權(quán)利要求所述的方法,其中所述第一和第二非易失性存 儲(chǔ)裝置由各自存儲(chǔ)一個(gè)以上數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
12. —種非易失性存儲(chǔ)器,其包含存儲(chǔ)器,其被組織成多個(gè)區(qū)塊,每一區(qū)塊是可一起擦除的多個(gè)存儲(chǔ)器單元,每一 存儲(chǔ)器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位;控制器,其用于控制所述區(qū)塊的操作;第一和第二區(qū)塊,其每一者用于循序地記錄來自主機(jī)的數(shù)據(jù); 所述第一和第二非易失性存儲(chǔ)裝置中的數(shù)據(jù)的至少一個(gè)索引; 緩沖器,其用于接收來自所述主機(jī)的所述數(shù)據(jù);以及當(dāng)滿足預(yù)定條件時(shí),所述控制器控制將所述數(shù)據(jù)記錄到所述第一區(qū)塊,或當(dāng)不滿 足所述預(yù)定條件時(shí),所述控制器控制將所述數(shù)據(jù)和所述至少一個(gè)索引記錄到所述第 二區(qū)塊。
13. 根據(jù)權(quán)利要求12所述的非易失性存儲(chǔ)器,其中所述非易失性存儲(chǔ)器采用可移除存 儲(chǔ)器卡的形式。
14. 根據(jù)權(quán)利要求12所述的非易失性存儲(chǔ)器,其中來自所述主機(jī)的所述數(shù)據(jù)是數(shù)據(jù)單位群組的更新數(shù)據(jù); 所述第一區(qū)塊用于存儲(chǔ)所述更新數(shù)據(jù);以及所述第二區(qū)塊用于在將所述更新數(shù)據(jù)轉(zhuǎn)移到所述第一區(qū)塊之前緩沖所述更新數(shù) 據(jù)。
15. 根據(jù)權(quán)利要求12所述的非易失性存儲(chǔ)器,其中所述數(shù)據(jù)被組織成具有預(yù)定次序的數(shù)據(jù)單位;以及所述第一和第二區(qū)塊被組織成頁,每一頁用于對(duì)具有預(yù)定頁偏移的多個(gè)數(shù)據(jù)單位 一起進(jìn)行編程。
16. 根據(jù)權(quán)利要求15所述的非易失性存儲(chǔ)器,其中每一頁在擦除之后可一次編程。
17. 根據(jù)權(quán)利要求15所述的非易失性存儲(chǔ)器,其中所述預(yù)定條件是當(dāng)所述接收的數(shù)據(jù)單位中的一者具有頁末偏移時(shí);以及 所述控制器控制將所述數(shù)據(jù)記錄到所述第一區(qū)塊包括將所述頁末數(shù)據(jù)單位和所 述頁中的任何先前數(shù)據(jù)單位記錄到所述第一區(qū)塊的頁。
18. 根據(jù)權(quán)利要求15所述的非易失性存儲(chǔ)器,其中所述至少一個(gè)索引被記錄到所述第 二存儲(chǔ)裝置中未被數(shù)據(jù)占用的頁的位置。
19. 根據(jù)權(quán)利要求15所述的非易失性存儲(chǔ)器,其中所述至少一個(gè)索引被記錄到所述第 二存儲(chǔ)裝置中具有頁末偏移的頁的位置。
20. 根據(jù)權(quán)利要求15所述的非易失性存儲(chǔ)器,其中所述控制器控制將所述數(shù)據(jù)和所述 至少一個(gè)索引記錄到所述第二區(qū)塊額外包括記錄指向所述第一存儲(chǔ)裝置的下一記 錄位置的指針。
21. —種非易失性存儲(chǔ)器,其包含-存儲(chǔ)器,其被組織成多個(gè)區(qū)塊,每一區(qū)塊是可一起擦除的多個(gè)存儲(chǔ)器單元,每一 存儲(chǔ)器單元用于存儲(chǔ)邏輯數(shù)據(jù)單位;第一和第二區(qū)塊,其每一者用于循序地記錄來自主機(jī)的數(shù)據(jù); 所述第一和第二非易失性存儲(chǔ)裝置中的數(shù)據(jù)的至少一個(gè)索引;緩沖器,其用于接收來自所述主機(jī)的所述數(shù)據(jù);以及記錄構(gòu)件,其用于當(dāng)滿足預(yù)定條件時(shí)將所述數(shù)據(jù)記錄到所述第一區(qū)塊,或當(dāng)不滿 足所述預(yù)定條件時(shí)將所述數(shù)據(jù)和所述至少一個(gè)索引記錄到所述第二區(qū)塊。
22. 根據(jù)權(quán)利要求12到21中任一權(quán)利要求所述的非易失性存儲(chǔ)器,其中所述第一和第 二非易失性存儲(chǔ)裝置由各自存儲(chǔ)一個(gè)數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
23. 根據(jù)權(quán)利要求12到21中任一權(quán)利要求所述的非易失性存儲(chǔ)器,其中所述第一和第 二非易失性存儲(chǔ)裝置由各自存儲(chǔ)一個(gè)以上數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
24. —種記錄來自主機(jī)的數(shù)據(jù)的方法,其包含提供組織成存儲(chǔ)器單元的可擦除區(qū)塊的非易失性存儲(chǔ)器,每一存儲(chǔ)器單元用于存 儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還被組織成一個(gè)或一個(gè)以上頁,其中每一頁中的所述 存儲(chǔ)器單元具有預(yù)定的頁偏移且在擦除之后可一起一次編程;接收來自主機(jī)的邏輯數(shù)據(jù)單位;提供用于記錄所述接收的數(shù)據(jù)的區(qū)塊;將數(shù)據(jù)的索引保持在所述區(qū)塊中;逐頁地將所述接收數(shù)據(jù)記錄到所述區(qū)塊,其中所述邏輯數(shù)據(jù)單位根據(jù)其頁偏移在 所述頁中對(duì)準(zhǔn),以及其中當(dāng)所述待記錄的頁具有未被數(shù)據(jù)占用的部分時(shí),所述記錄包括將所述索引記錄到所述未被占用的部分。
25. 根據(jù)權(quán)利要求24所述的方法,其中所述非易失性存儲(chǔ)器是快閃EEPROM。
26. 根據(jù)權(quán)利要求24所述的方法,其中來自所述主機(jī)的所述數(shù)據(jù)是用于邏輯數(shù)據(jù)單位群組的更新數(shù)據(jù);以及 所述區(qū)塊用于存儲(chǔ)所述更新數(shù)據(jù)。
27. 根據(jù)權(quán)利要求24所述的方法,其中將所述索引記錄到具有頁末偏移的所述頁的位 置。
28. 根據(jù)權(quán)利要求24到27中任一權(quán)利要求所述的方法,其中所述非易失性存儲(chǔ)器由各 自存儲(chǔ)一個(gè)數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
29. 根據(jù)權(quán)利要求24到27中任一權(quán)利要求所述的方法,其中所述非易失性存儲(chǔ)器由各 自存儲(chǔ)一個(gè)以上數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
30. —種非易失性存儲(chǔ)器,其包含非易失性存儲(chǔ)器,其被組織成存儲(chǔ)器單元的可擦除區(qū)塊,每一存儲(chǔ)器單元用于存 儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還被組織成一個(gè)或一個(gè)以上頁,其中每一頁中的所述 存儲(chǔ)器單元具有預(yù)定的頁偏移且在擦除之后可一起一次編程;控制器,其用于控制所述存儲(chǔ)器的操作; 緩沖器,其用于接收來自主機(jī)的數(shù)據(jù);區(qū)塊,其用于記錄所述所接收數(shù)據(jù); 所述區(qū)塊中的數(shù)據(jù)的索引;以及所述控制器控制逐頁地將所述所接收數(shù)據(jù)記錄到所述區(qū)塊,其中所述邏輯數(shù)據(jù)單 位根據(jù)其頁偏移在所述頁中對(duì)準(zhǔn),以及其中當(dāng)所述待記錄的頁具有未被數(shù)據(jù)占用的部分時(shí),所述記錄包括將所述索引記 錄到所述未被占用的部分。
31. 根據(jù)權(quán)利要求30所述的非易失性存儲(chǔ)器,其中所述非易失性存儲(chǔ)器是快閃 EEPROM。
32. 根據(jù)權(quán)利要求30所述的非易失性存儲(chǔ)器,其中來自所述主機(jī)的所述數(shù)據(jù)是用于邏 輯數(shù)據(jù)單位群組的更新數(shù)據(jù);以及所述區(qū)塊用于存儲(chǔ)所述更新數(shù)據(jù)。
33. 根據(jù)權(quán)利要求30所述的非易失性存儲(chǔ)器,其中所述非易失性存儲(chǔ)器采用可移除存 儲(chǔ)器卡的形式。
34. 根據(jù)權(quán)利要求30所述的非易失性存儲(chǔ)器,其中所述索引被記錄到具有頁末偏移的 所述頁的位置。
35. —種非易失性存儲(chǔ)器,其包含-非易失性存儲(chǔ)器,其被組織成存儲(chǔ)器單元的可擦除區(qū)塊,每一存儲(chǔ)器單元用于存 儲(chǔ)邏輯數(shù)據(jù)單位,且每一區(qū)塊還被組織成一個(gè)或一個(gè)以上頁,其中每一頁中的所述 存儲(chǔ)器單元具有預(yù)定的頁偏移且在擦除之后可一起一次編程;緩沖器,其用于接收來自主機(jī)的數(shù)據(jù); 區(qū)塊,其用于記錄所述接收的數(shù)據(jù); 所述區(qū)塊中的數(shù)據(jù)的索引;以及記錄構(gòu)件,其用于逐頁地將所述所接收數(shù)據(jù)記錄到所述區(qū)塊,其中所述邏輯數(shù)據(jù) 單位根據(jù)其頁偏移在所述頁中對(duì)準(zhǔn),以及其中當(dāng)所述待記錄的頁具有未被數(shù)據(jù)占用的部分時(shí),所述記錄步驟包括將所述索 引記錄到所述未被占用的部分。
36. 根據(jù)權(quán)利要求30到35中任一權(quán)利要求所述的非易失性存儲(chǔ)器,其中所述非易失性 存儲(chǔ)器由各自存儲(chǔ)一個(gè)數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
37. 根據(jù)權(quán)利要求30到35中任一權(quán)利要求所述的非易失性存儲(chǔ)器,其中所述非易失性 存儲(chǔ)器由各自存儲(chǔ)一個(gè)以上數(shù)據(jù)位的存儲(chǔ)器單元構(gòu)成。
全文摘要
可將到達(dá)非易失性存儲(chǔ)器的更新數(shù)據(jù)記錄在至少兩個(gè)交錯(cuò)的流中,例如根據(jù)預(yù)定條件記錄在更新區(qū)塊或高速暫存區(qū)塊中。所述高速暫存區(qū)塊用來緩沖最終指定去往更新區(qū)塊的更新數(shù)據(jù)。在優(yōu)選實(shí)施例中,每當(dāng)寫入所述高速暫存區(qū)塊時(shí),將存儲(chǔ)于所述高速暫存區(qū)塊中以及存儲(chǔ)于所述更新區(qū)塊中的數(shù)據(jù)的索引保存在所述高速暫存區(qū)塊的未使用部分中。
文檔編號(hào)G06F12/02GK101124556SQ200580048389
公開日2008年2月13日 申請(qǐng)日期2005年12月7日 優(yōu)先權(quán)日2004年12月16日
發(fā)明者彼得·約翰·史密斯, 瑟吉·阿納托利耶維奇·戈羅別茨, 艾倫·戴維·貝內(nèi)特 申請(qǐng)人:桑迪士克股份有限公司