TWI269154B - Non-volatile memory and method of storing data in a non-volatile memory - Google Patents

Non-volatile memory and method of storing data in a non-volatile memory Download PDF

Info

Publication number
TWI269154B
TWI269154B TW093141438A TW93141438A TWI269154B TW I269154 B TWI269154 B TW I269154B TW 093141438 A TW093141438 A TW 093141438A TW 93141438 A TW93141438 A TW 93141438A TW I269154 B TWI269154 B TW I269154B
Authority
TW
Taiwan
Prior art keywords
block
logical
update
memory
data
Prior art date
Application number
TW093141438A
Other languages
English (en)
Other versions
TW200601030A (en
Inventor
Sergey Anatolievich Gorobets
Original Assignee
Sandisk Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US10/750,155 external-priority patent/US7139864B2/en
Application filed by Sandisk Corp filed Critical Sandisk Corp
Publication of TW200601030A publication Critical patent/TW200601030A/zh
Application granted granted Critical
Publication of TWI269154B publication Critical patent/TWI269154B/zh

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • G11C16/14Circuits for erasing electrically, e.g. erase voltage switching circuits
    • G11C16/16Circuits for erasing electrically, e.g. erase voltage switching circuits for erasing blocks, e.g. arrays, words, groups
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0706Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment
    • G06F11/073Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation the processing taking place on a specific hardware platform or in a specific software environment in a memory management context, e.g. virtual memory or cache management
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • G11C16/10Programming or data input circuits
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/0223User address space allocation, e.g. contiguous or non contiguous base addressing
    • G06F12/023Free address space management
    • G06F12/0238Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory
    • G06F12/0246Memory management in non-volatile memory, e.g. resistive RAM or ferroelectric memory in block erasable memory, e.g. flash memory
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/72Details relating to flash memory management
    • G06F2212/7205Cleaning, compaction, garbage collection, erase control

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

1269154 九、發明說明: 【發明所屬之技術領域】 本發明一般有關非揮發性半導體記憶體,尤其有關具有 記憶體區塊管理系統的非揮發性半導體記憶體。 【先前技術】 能夠進行電荷之非揮發性儲存的固態記憶體,尤其是屬 於封裝成小型記憶卡之EEPR0M及快閃eeprom的形式,近 來已成為各種行動及手持裝置選擇的儲存裝置,特別是資 訊家電及消費性電子產品。不像也是固態記憶體的ram(隨 機存取g憶體),快閃記憶體係為非揮發性,即使在關閉電 源後仍能保留其健存的資料。還有,不像rqm(唯讀⑽ 體)’快閃記憶體和磁碟健存裝置一樣都是可再寫。儘管成 本較高’但在大量儲存應时,快閃記憶體的使用漸增。 基於旋轉磁性媒體的習用大量儲存裝4,如硬碟機及軟 碟,並不適合行動及手持環境。這是因為磁碟機傾向於體 積龐大’容易機械故障且具有高等待時間及高功率需求。 化些不想要的屬性使得基於磁碟的儲存裝置無法在大多數 的行動及可攜式應用中使用。另一方面,既為内後式且為 抽取式„己丨思卡之形式的快閃記憶體在理想上極為適用於行 動及手持環境’因其尺寸小、功率消耗低、高速 性等特性。 」罪 快閃EEPROM和eepr〇m(電子可抹除及可程式唯讀記憶 :)、才似處在於’其為能夠被抹除且能將新的資料寫入或 私式化」至其記憶體單元中的非揮發性記憶體。二者均 98705.doc 1269154 利用場效電晶體結構中,位在半導體基板中通道區之上且 在源極及祕區之間的浮動(未連接)導電㈣。接著在浮動 閘極之上提供控制閘極。浮動閉極所保留的電荷量可控制 電晶體的定限電壓特性。也就是說,就浮動間極上給定位 準的電荷而言’其中有必須在「開啟」電晶體之前施加於 控制閘極㈣應電壓(定限)’以允許在其源極錢極區之間 的導電。尤其’如快閃EEPR⑽的快閃記憶體允許同時抹 除記憶體單元的整個區塊。 浮動閘極可以保持某個電荷範圍,因此,可經程式化為 定限電壓窗内的任何定限電壓位準。定限電壓窗的尺寸受 限於裝置的最小及最大定限位準,而裝置的最小及最大: 限位準對應於可經程式化至浮動閘極上的電荷範圍。定限 窗一般根據記憶體裝置的特性、操作條件及記錄而定。原 則上,在此窗内,各有所不同的、可解析的定限電壓位準 範圍均可用於指定單元之明確的記憶體狀態。 通常會藉由兩種機制之一,將作為記憶體單元的電晶體 程式化為「已程式化」狀態。在「熱電子注入」中,施加 於汲極的高電壓可加速橫跨在基板通道區上的電子。同 時,施加於控制閘極的高電壓可吸引熱電子通過薄閘極介 電質到浮動閘極上。在「穿隧注入」中,會相對於該基板 施加一高電壓給該控制閘極。依此方式,可將基板的電子 吸引到中間的浮動閘極。雖然習慣使用用語「程式化」描 述藉由注入電子至記憶體單元的初始抹除電荷儲存單元來 寫入記憶體以改變記憶體狀態,現已和較為常見的用語, 98705.doc 1269154 如「寫入」或「記錄」交換使用。 可以利用下面數種機制來抹除該記憶體裝置。對 EEPROM而言,藉由相對於該控制閘極施加一高電壓給該 基板’致使可於δ亥浮動閘極中誘發出電子,使其穿随一薄 氧化物進入該基板通道區(也就是,F〇wler-N〇rdheim穿隧效 應),便可電抹除一記憶體單元。一般來說,EEpR〇M可以 逐個位元組的方式來抹除。對快閃EEPR0M而言,可每次 電抹除所有的記憶體或是每次電抹除一個以上最小可抹除 區塊,其中一最小可抹除區塊可能係由一個以上的區段所 組成且每個區段均可儲存5 12個位元組以上的資料。 該記憶體裝置通常包括可被安裝於一記憶卡上的一個以 上記憶體晶片。各記憶體晶片包含為周邊電路(如解碼器和 抹除、寫入及讀取等電路)所支援之記憶體單元陣列。較為 精密的記憶體裝置還附有執行智慧型和較高階記憶體操作 及介面連接的控制器。 現今已有許多市售成功的非揮發性固態記憶體裝置。該 些記憶體裝置可能係快閃EEPR0M,或是可採用其它類型 的非揮發性記憶體單元。快閃記憶體與系統及其製造方法 的範例揭示於美國專利案第5,070,032號、第5,〇95,344號、 第 5,315,541號、第 5,343,063號、第 5,661,053號、第 5,313,421 唬、以及第6,222,762號。明確地說,具NAND線串結構的 快閃記憶體裝置係描述於美國專利案第5,57〇,315號、第 5,903,495號、第6,046,935號之中。另外,亦可利用具有一 用來儲存電荷之介面層的記憶體單元來製造非揮發性記憶 98705.doc 1269154 體裝置。其係利用一介電層來取代前面所述的導電浮動閘 極元件。此等利用介電儲存元件的記憶體裝置已描述於
Eitan 等人於 2000 年 11 月在 IEEEElectr〇n Device Letters,第 21冊,第11號,第543-545頁中所發表的「NR〇M: A N〇vel
Localized Trapping,2-Bit Nonvolatile Memory Cell」一文 中。有一 ΟΝΟ介電層會延伸跨越源極與汲極擴散區間的通 道。其中一個資料位元的電荷會於靠近該汲極的介電層中 被局部化,而另一個資料位元的電荷會於靠近該源極的介 電層中被局部化。舉例來說,美國專利案第5,768,192號及 第6,011,725號便揭示一種於兩層二氧化矽層間夾放一陷捕 介電質的非揮發性記憶體單元。藉由分開讀取該介電質内 空間分離的電荷儲存區域的二進制狀態,便可實現多重狀 態的資料儲存。 為了提高讀取及程式化效能,會平行讀取或程式化陣列 中的多個電荷儲存元件或記憶體電晶體。因此,會一起讀 取或程式化記憶體元件@「頁面」。在現有的記憶體架構 中’-列通常含有若干交錯的頁面或一列可構成一個頁 面。-個頁面的所有記憶體元件會被一起讀取或程式化。 在快閃記憶體系統中,抹除操作可能需要多達長於讀取 及程式化操作的數量級。因此,希望能夠具有大尺寸的抹 除£塊。依此方式,即i卩夂彳她去 叭即可降低總數很大之記憶體單元上的 抹除時間。 依知、快閃§己憶體的性曾眘粗 Γ貝貝枓必須寫入已抹除的記憶體 位置。如果要更新主機之特定邏輯位址的資料,—個方式 98705.doc 1269154 是將更新資料再寫入相同的實體記憶體位置中。也就是 況’邏輯對實體位址映射不會變更。然而,這便表示必須 先抹除含有該實體位置的整個抹除區塊,然後再以更新資 料寫入。此更新方法很沒有效率,因其需要抹除及再寫入 整個抹除區塊,尤其在要更新的資料只佔用抹除區塊的一 小部分時。此外,還會造成比較頻繁之記憶體區塊的抹除 再循環,而這對此類型記憶體裝置的有限耐久性而言並不 理想。 另一個管理快閃記憶體系統的問題是必須處理系統控制 及目錄資料。各種記憶體操作的過程期間會產生且存取該 資料。因此,其有效處理及迅速存取將直接影響效能。由 於快閃記憶體是用來儲存且是非揮發性,因此希望能夠在 快閃記憶體中維持此類型的資料。然而,因為在控制器及 快閃記憶體之間有中間檔案管理系統,所以無法直接存取 資料。還有,系統控制及目錄資料傾向於成為作用中及成 為片段,而這對於具有大尺寸區塊抹除之系統中的儲存毫 無助盈。照慣例,會在控制器RAM中設定此類型的資料, 藉此允許由控制器直接存取。在開啟記憶體裝置的電源 後,初始化程序會掃描快閃記憶體,以編譯要放在控制器
Ram中的必要系統控制及目錄資訊。此程序既耗時又需要 控制器RAM容量,對於持續增加的快閃記憶體容量更是如 此。 US 6,567,307揭露-種在大抹除區塊中處理區段更新的 方法’ S包括在多㈣當作可用記憶區的抹除區塊中記錄更 98705.doc 1269154 新貝料’及最後在各種區塊中彙總有效區段,然後按邏輯 循序順序重新排列有效區段後再將其寫入。依此方式,在 母個最微小的更新時,不必抹除及再寫入區塊。 W0 03/027828及W〇 00/49488均揭露一種處理大抹除區 塊中更新的記憶體系統,其中包括以區域為單位分割邏輯 區段位址。小區域的邏輯位址範圍係保留用於和另一個用 於使用者資料之區域分開的作用中系統控制資料。依此方 式,在其自已區域中的系統控制資料操控便不會和另一區 域中關聯的使用者資料互相作用。更新屬於邏輯區段層 級,而且寫入指標會指向要寫入之區塊中的對應實體區 段。映射資訊會被緩衝在RAM中,且最後被儲存在主記憶 體的區段配置表中。邏輯區段的最新版本會淘汰現有區塊 中的所有先前版本,這些區塊因此變成部分淘汰。執行廢 棄項目收集可保持部分淘汰區塊為可接受的數量。 先前技術的系統傾向於使更新資料分布在許多區塊上或 更新資料會使許多現有的區塊受到部分淘汰。結果通常是 大量為部分淘汰之區塊所需的廢棄項目收集,這很沒有效 率且會造成記憶體提早老化。還有,和非⑽㈣相比, 更缺少有系統及有效的方式來處理循序更新。 因此’普遍需要而谷置及两效能的非播 此的非揮發性記憶體。尤 其’更需要有能夠在大區塊中執行#彳咅辦 w w 體刼作且沒有上述 問題的高容量非揮發性記憶體。 【發明内容】 一種非揮發性記憶體系統係按 照實體記憶體位置的實體 98705.doc -10- 1269154 組:各實體群組(中繼區塊)為可抹除的單元且能用 ==輯群組的資料,體管理系統允許藉由配 輯群:的次群’且之更新貢料專用的中繼區塊來更新-個邏 資料、,且2。^新中繼區塊按照所接收的順序記錄更新 '、 °己錄按照原始儲存的正確邏輯順序(循序)盥否 (混亂)並沒有限制。最後會關閉更新中繼區塊以進行立他纪 錄。會發生若干料之_,但最終會以按照正確順序完全 填滿之取代原始中繼區塊的中繼區塊結束。在混i的例子 中’會以有助於經常更新的方式將目錄資料維持在非揮發 杜°己隐體中。系統支援多個同時更新的邏輯群組。 本發明的-個特色允許以逐個邏輯群組的方式來更新資 料。因此’在更新邏輯群組時,會限制邏輯單元的分布(還 有更新淘汰之記憶體單元的散佈)範圍。這在邏輯群組通常 含在實體區塊内時更是如此。 在邏輯群組的更新期間,通常必須指派一或兩個緩衝已 更新之邏輯單元的區塊。因&,只需要在相對較少數量的 區塊上執行廢棄項目收集。藉由彙總或壓縮即可執行混亂 區塊的廢棄項目收集。 相車乂於循序區塊來說,更新處理的經濟效能於更新區塊 的一般處理中會愈加明顯,因而便無須為混亂(非循序)更新 配置任何額外的區塊。所有的更新區塊均被配置為循序的 更新區塊,而且任何的更新區塊均可被變更成混亂的更新 區塊。更確切地說,可任意地將一更新區塊從循序式變更 成混亂式。 98705.doc -11 - 1269154 有效使源允許同時進行更❹個邏輯群粗 可進一步增加效率及減少過度耗用。 分散在多個§己愫體平面上的記憶體對齊 根據本卷明的另一方面’對於一被組織成複數個可抹除 區塊且由多個記憶體平面所構成(因而可平行地讀取複數 個邏輯早70或是將複數個邏輯單元平行地程式化至該等多 個平面之中)的記憶體陣列,當要更新儲存於特定記憶體平 面中第-區塊的原始邏輯單元時,會供應所需以將已更新 的邏輯單元保持在和原始相同的平面中。這可藉由以下方 ^來完成:將已更新的邏輯單元記錄到仍在相同平面中之 第二區塊的下—個可用位置。較佳將邏輯單元儲存在平面 中和其中其他版本相同的位移位置,使得給定邏輯單元的 所有版本係由相同組的感測電路予以服務。 據此’在-項較佳具體實施例中,以邏輯單元的目前版 本來填補介於上一個程式化記憶體單元與下一個可用平面 對齊記憶體單元之間的任何中間間隙。將邏輯上位於該最 後被程式化之邏輯單元後面的該等邏輯單元的目前版本以 及邏輯上位於被儲存在該下一個可用的平面排列記憶體單 元中之邏輯單元|面的該等邏輯單元的目前版本填入間隙 中’便可完成該填補作業。 依此方式,可將邏輯單元的所有版本維持在具有和原始 相同位移的相同平面中,致使在廢棄項目收集操作中,不 必從不同平面擷取邏輯單元的最新版本,以免降低效能。 在一項較佳具體實施例中,可利用該等最新的版本來更新 98705.doc -12- 1269154 或真補忒平面上的每個記憶體單元。因此,便可從每個平 ® + —邏輯單元’其將會具有邏輯順序而無需 進一步重新排列。 田此方案精由允許平面上重新排列邏輯群組之邏輯單元的 最:版本’且不必收集不同記憶體平面的最新版本,而縮 多丑菜總亂區i兔的Η主、丄y
At 塊的時間。廷很有好處,其中主機介面的效 月b規七可疋義由.體系統完成區段寫人操作的最大 時間。 階段性程式錯誤處置 根據本發明的另一方面’在具有區塊管理系統的記憶體 I’在時間緊急的記憶體操作期間,區塊中的程式失敗可 藉由繼續中斷區塊(breakout block)中的程式化操作來處 置。猶後,在較不緊急的時間,可將中斷前記錄在失敗區 塊中的資料傳送到其他可能也是中斷區塊的區塊。接著即 可丟棄失敗的區塊。依此方式,在遇到缺陷區塊時,不合 因必須立㈣送缺陷區塊切存的諸而損失資料及超二 指定的時間限制,即可加以處理。此錯誤處置對於廢棄項 目收集操作尤其重要,因此在緊急時間期間不需要對二勒 新的區塊重複進行整個作業。其後,在適宜的時間,藉由 重新配置到其他區塊,即可挽救缺陷區塊的資料。3 程式失敗處置在彙總操作期間尤其重要。正常的彙油操 作可將常駐在原始區塊及更新區塊中之邏輯群組的所有邏 輯單S的目前版本彙總至彙總區塊。在囊總操作期間,如 果在彙總區塊中發生程式失敗,則會提供另—個當作中斷 98705.doc 1269154 彙總區塊的區塊,以接收其餘邏輟 弭早兀的茱總。依此方式, 不必複製邏輯單元一次以上,而仍 技 了在正吊茱總操作指定 的期間内完成例外處理的操作。A + 吊作在適宜的時間,將群組所 有未處理完成之邏輯單元彙總至中 塊中,即可完成彙 總操作。適宜的時間將是在目前 土機冩入刼作以外的一些 其他有時間執行㈣之期間的期間。—個此種適宜的時間 是在另-個其中有更新但無關聯之彙總操作之_寫 期間。 實質上’可將程式失敗處置的囊總視為以多階段來實 施。在第-階段中,在發生程式失敗後,會將邏輯單元二 總至一個以上區塊中,以避免彙總各邏輯單元一次以上。 在適宜的時間會完成最後階段,其中會將邏輯群組彙總至 一個區塊中,較佳藉由按循序順序將所有邏輯單元收集至 中斷彙總區塊中。 μ 非循序更新區塊索引 根據本發明的另一方面,在具有支援具非循序邏輯單元 之更新區塊之區塊管理系統的非揮發性記憶體中,非循序 更新區塊中邏輯單元的索引被緩衝儲存在Ram中,並定期 將其儲存至非揮發性記憶體中。在一項具體實施例中,將 索引儲存在專用於儲存索引的區塊中。在另一項具體實施 例中,將索引儲存在更新區塊本身中。在又另一項具體實 施例中’將索引儲存在各邏輯單元的標頭中。在另一方面 中’在上一個索引更新之後但在下一個索引更新之前寫入 的邏輯單元會將其索引資訊儲存在各邏輯單元的標頭中。 98705.doc -14- 1269154 依此方式’在電源中斷後,不必在初始化期間執行掃描, 即可決疋取近寫人之邏輯單元的位置。在又另—方面中, 將區塊理成部分循序及部分非循序指向—個以上邏輯子 群組。 控制資料完整性與管理 一根據本毛明的另一方面,如部分或全部控制資料的關鍵 貝料如果被維持在複製項巾,則保證額外等級的可靠性。 複製的執仃方式對於採用兩次編碼過程程式化 技術以連績程式/f卜^日pq 4 式化相同組記憶體單元之多位元的多重狀態 °己L體系、4而a ’第二次編碼過程中的任何程式化錯誤都 無法毁損第—次編碼過程建立的資料。複製還有助於偵測 :中止4貞/則誤/則(即,兩個複本有良好的ECC但資料不 同)且可牦加額外等級的可靠性。若干資料複製的技術均 已考慮。 在一項具體實施例中,在稍早程式化編碼過程中程式介 給定資料的兩個複本後,後續程式化編碼過程可避免程3 =於健存該等兩個複本中至少-個的記憶體單元。㈣ 7在後續程式化編碼過程在完成之前中止及毁湖 ::過程的資料時,該等兩個複本中至少一個也不會ο 在另一項具體實施例中,某 儲存於兩個不同的區塊中,而 其中一個的記憶體單元會於 式化。 一給定資料的兩個複本會被 且該等兩個複本中至多僅有 面的程式化編碼過程中被程 98705.doc 1269154 ;另、具體實施例中,於一程式化編碼過程中儲存某一 定貝料的兩個複本之後’便不再對用於儲存該等兩個複 =的記憶體單元組實施任何進—步的程式化。於該記憶體 抑一、、·的最、、冬%式化編碼過程中來程式化該等兩個複本便 可達成此目的。 j又另-項具體實施例中,可於二進制程式化模式中將 某-給^資料的該等兩個複本程式化至—多重狀態的記憶
一之中則吏不會對該等已程式化的記憶體單元進行任何 進一步的程式化。 在又另一項具體實施例中,對於採用兩次編碼過程程式 :技術以連續程式化相同組記憶體單元之多位元的多重狀 ^己憶體糸統而言,會採用容錯碼以編碼多個記憶體狀 恶’使稱早程式化編碼過程所建立的資料不會受到後續程 式化編碼過程中錯誤的影響。 根據本發明的另_方 方面在具有區塊管理系統的非揮
性記憶體中,可實雜^卜立骑 、 、 貰也。己丨思體區塊的「控制廢棄項目收集 或先佔式重新配置,以 窗 避免發生大1的更新區塊均恰巧 _要進^重新配置的情形。例如,在更新詩控制區 B里系讀作的控制資料時會發生此情況。控制資料類 的層級可和不同_疮Μ $ & , X的更新乂數共存,導致其關聯的更 G塊需要不同速率的底·^ 的苽茶項目收集或重新配置。會有一 以上控制資料類型之廢睾 尾棄項目收集操作同時發生的特定 數。在極端的情沉Φ ^ . t 中,所有控制資料類型之更新區塊的 新配置階段會進行聲_, 頓導致所有的更新區塊都需要同i 98705.doc -16 - 1269154 重新配置。 參考本發明以下結合附圖之較佳具體實施例的說明,即 可瞭解本發明的其他特色及優點。 【實施方式】 圖1以示意圖顯示適於實施本發明之記憶體系統的主要 硬體組件。記憶體系統20通常透過主機介面以主機操 作。記憶體系統通常形式為記憶卡或内嵌式記憶體系統 記憶體系統20包括由控制器100控制操作的記憶體2〇〇。記 憶體2 0 〇包含分布於一或多個積體電路晶片上的一或多個 陣列的非揮發性記憶體單元。控制器1〇〇包括:介面11〇、 處理器120、選用性副處理器121、職122(唯讀記憶體)、 RAM 13G(隨機存取記憶體)、及選用性可程式非揮發性記憶 體124。介面110有一個連接控制器和主機的組件及另一個 連接至記憶體200的組件。儲存於非揮發性尺〇]^ 122及/或選 用!·生非揮發性s己憶體124中的韌體可提供處理器12〇程式碼 以實施控制器100的功能。處理器12〇或選用性副處理器i2i 可處理錯誤校正碼。在—㈣代性具體實施例中,控制器 可藉由狀怨機器(未顯示)來實施。在又另一項具體實施 例中’控制器100可在主機内實施。 邏輯與實艘區塊結構 圖2為根據本發明一較佳具體實施例的記憶體,其係被组 2成㈣實體區段群組(或中繼區塊)並且由該控制器的記 1體S理$來官理。該記憶體扇會被組織成數個中繼區 、中每個中繼區塊係一群組之可一起抹除的實體區段 98705.doc •17- 1269154 主機10可在檔案系統或作業系統下執行應用程 次Μ股2〇〇。一般來說,該主機會以邏輯區段為單位來定址 =、碑/、中,例如,各區段可含有5 i 2位元組的資料。還有, 主機通常亦會以邏輯叢集為單位來讀取或寫人該記憶體系 、為,各邏輯叢集由一或多個邏輯區段所組成。在部分主機 系統中,可存在選用性主機端記憶體管理器,以執行主機 的較低階記憶體管理。在大部分的例子中,在讀取或寫入 細作期間,主機1〇實質上會對記憶體系統2〇發出指令,以 頃取或寫入含有一串具連續位址之資料邏輯區段的程式 段。 一記憶體端記憶體管理器被實施在該記憶體系統2〇的控 制器100之中,用以管理於該快閃記憶體200的複數個中繼 區塊中儲存與擷取主機邏輯區段的資料。於該較佳的具體 實施例中,該記憶體管理器含有數個軟體模組,用於管理 該等中繼區塊的抹除作業、讀取作業、以及寫入作業。該 記憶體管理器還會於該快閃記憶體200及該控制器RAM 13 0之中維護和其作業相關的系統控制與目錄資料。 圖3 A⑴-3 A(iii)為根據本發明一較佳具體實施例介於一 邏輯群組與一中繼區塊間之映射的概略示意圖。該實體記 憶體的該中繼區塊具有N個實體區段,用於儲存一邏輯群組 的N個邏輯區段資料。圖3A(i)所示的係來自邏輯群組LGi 的資料,其中該等邏輯區段呈現連續的邏輯順序〇、丨、…、 N-1。圖3A(ii)所示的係正以相同的邏輯順序被儲存於該中 98705.doc -18· 1269154 繼區塊中的相同資料。當依此方式儲存時,該中繼區塊便 係所謂的「循序式」。一般來說,該中繼區塊可能會具有以 不同順序儲存的資料,於該情況中,該中繼區塊則係所謂 的「非循序式」或「混亂式」。 在邏輯群組的最低位址及其映射之中繼區塊的最低位址 之間會有位移。此時,邏輯區段位址會於該中繼區塊内以 環狀的方式從該邏輯群組的底部反繞回至頂端。例如,在 圖3A(iii)中,該中繼區塊會在其始於邏輯區段k之資料的第 一位置中進行儲存。在到達最後邏輯區段N-1時,中繼區塊 會繞回至區段G,最後在其最後實體區段中儲存和邏輯區段 k-Ι關聯的資料。在較佳具體實施例中,會使用頁面標記來 識別任何位移,例如,識別在中繼區塊之第一實體區段中 所儲存之資料的起始邏輯區段位址。當兩個區塊僅相差一 頁面彳不。己時,則會認為該等兩個區塊係以相同的順序來 儲存其邏輯區段。 囷B為;I於複數個邏輯群組與複數個中繼區塊間之映射 的概略示意圖。每個邏輯群組均映射至—唯—的中繼區 塊。除了其中的資料正在被更新的少數邏輯群組以外。一 α輯群組在被更新之後,其可能會映射至一不同的中繼區 鬼可將映射貝汛維持在一組邏輯對實體目錄中,稍後將 會詳細說明。 亦考慮其匕類型的邏輯群組至中繼區塊映射關係。舉例 ★、·由Aian Sinclair於和本發明同一天提出之共同待審及 /、同擁有的美國專利申請案,標題為「Adaptive Metabl〇cks」 98705.doc -19- 1269154 之中便揭不具有可變大小的中繼區塊。本文以引用的方式 併入該共同待審申請案全部的揭示内容。 本發明的一個特色在於系統以單一邏輯分割操作,及記 體系統的整個邏輯位址範圍中的邏輯區段群組均以相同 的方式來處理。例如,可將含有系統資料的區段及含有使 用者貧料的區段分布在邏輯位址空間中的任何地方。 不像先岫技術的系統,並無系統區段(即,有關檔案配置 表、目錄或子目錄的區段)的特別分割或分區,以局部化在 可能含有高次數及小尺寸之更新資料的邏輯位址空間區段 中。而是,更新區段之邏輯群組的本方案會有效處理為系 統區段典型且為檔案資料典型的存取模式。 圖4顯示中繼區塊和實體記憶體中結構的對齊。快閃記憶 體包含可當作一個單元一起抹除之記憶體單元的區塊。此 種抹除區塊為快閃記憶體之最小的抹除單元或記憶體的最 小可抹除單元(MEU)。最小抹除單元是記憶體的硬體設計 參數,不過,在一些支援多個MEU抹除的記憶體系統中, 也可以設定包含一個以上MEU的「超級MEU」。對於快閃 EEPROM,一個MEU可包含一個區段,但較佳包含多個區 段。在所示的範例中,其具有Μ個區段。在較佳具體實施 例中,各區段可以儲存5 12位元組的資料且具有使用者資料 部分及用於儲存系統或附加項資料的標頭部分。如果中繼 區塊係以Ρ個MEU所構成且各MEU含有Μ個區段,則各中繼 區塊將具有N = Ρ*Μ個區段。 在系統層級,中繼區塊代表記憶體位置的群組,如,可 98705.doc -20 - 1269154 -起抹除的區段。快閃記憶體的實體位址空間會被處理成 -組中繼區塊’其中中繼區塊是最小的抹除單元。於本份 說明書内,「中繼區塊」與「區塊」等詞語係同義詞,用來 定義媒體管理於系統層級的最小抹除單位,而「最小抹除 單位」或MEU-詞則係用來表示快閃記憶體的最小抹除單 位。 連結數個最小抹除單位(MEU)以構成中繼區塊 為了最大化程式化速度及抹除速度,會儘可能利用平行 方式,其係藉由配置多個要平行程式化的頁面資訊(位在多 個MEU中),及配置多個要平行抹除的MEU。 在快閃記憶體中,一個頁面是可在單一操作中一起程式 化之記憶體單元的群組。一個頁面可包含一或多個區段。 還有,可將記憶體陣列分割成一個以上平面,其中一次只 能程式化或抹除一個平面内的一個MEU。最後,可在一咬 多個記憶體晶片中分布各平面。 在快閃記憶體中,MEU可包含一或多個頁面。可將快閃 記憶體晶片内的數個MEU按平面來組織。由於可同時程式 化或抹除各平面的一個MEU,因此有利於從各平面選擇一 個MEU以形成多個MEU中繼區塊(請見下文圖5B)。 圖5 A顯示從連結不同平面之最小抹除單元所構成的中繼 區塊。各中繼區塊(例如MBO、MB1、…)均係以記憶體系統 之不同平面的數個MEU所構成,其中不同平面可分布在一 或多個晶片中。圖2所示的中繼區塊連結管理器ι7〇可管理 各中繼區塊之MEU的連結。如果MEU之一沒有失敗,在初 98705.doc -21 - 1269154 始格式化程序期間設定各中繼區塊,並在整個系統壽命中 保留其組成的MEU。 圖5B顯示從各平面選擇一最小抹除單元(meu)以連結成 中繼區塊的一項具體實施例。 圖5C顯示其中從各平面選擇一個以上MEu以連結成中繼 區塊的另一項具體實施例。在另一項具體實施例中,可從 各平面選擇一個以上MEU以形成一超級MEU。例如,舉例 來說,一超級MEU可能係由兩個MEU所構成的。此時,會 採取一次以上編碼過程以進行讀取或寫入操作。 由Carlos Gonzales等人於和本發明同一天提出之共同待 審及共同擁有的美國專利申請案,標題為「Adaptive Deterministic Grouping of Blocks into Multi-Block Structures」之中亦揭示將複數個MEU連結及再連結成中繼 區塊。本文以引用的方式併人該共同待審巾請案全部的揭 示内容。 中繼區塊管理 圖6為如控制器及快閃記憶體中實施之中繼區塊管理系 統的示意方塊圖。中繼區塊管理系統包含實施於控制器1〇〇 中的各種功能模組,並在依階層式分布於快閃記憶體 及控制器RAM 130的表格及清單中維持各種控制資料(包括 目錄資料)。實施於控制器1〇〇中的功能模組包括:介面模 組11〇、邏輯對實體位址轉譯模組140、更新區塊管理器模 組15〇、抹除區塊管理器模組16〇及中繼區塊連結管理器 170。 98705.doc -22- 1269154 介面110允許中繼區塊管理系統介接主機系統。邏輯對實 體位址轉譯模組140將主機的邏輯位址映射至實體記憶體 位置。更新區塊管理器模組丨5 0管理記憶體中給定之資料邏 輯群組的資料更新操作。已抹除區塊管理器160管理中繼區 塊的抹除操作及其用於儲存新資訊的配置。中繼區塊連結 官理器170管理區段最小可抹除區塊之子群組的連結以構 成給定的中繼區塊。這些模組將在其個別段落中詳細說明。 於作業期間,該中繼區塊管理系統會產生且配合控制資 料(例如位址、控制與狀態資訊)來運作。由於許多控制資料 傾向於是經常變更的小型資料,因此無法在具有大型區塊 結構的快閃記憶體中予以隨時有效儲存及維持。為了在非 揮I f生陕閃5己憶體中儲存比較靜態的控制資料,同時在控 制器RAM中尋找數量較少之比較有變化的控制資料,以進 行更有效的更新及存取,會採用階層式與分散式的方案。 在發生電源關機或故障時,此方案允許掃描非揮發性記憶 體中一小組的控制資料,以在揮發性控制器ram中快速重 建控制資料。這之所以可行是因為本發明可限制和給定邏 輯群組之資料之可能活動關聯的區塊數量。依此方式,即 可限制掃描。此外,會將部分需要持久性的控制資料儲^ 在按區段更新的非揮發性中繼區塊中,其中各更新將會呓 錄取代先前區段的新區段。控制資料會採用區段索引;= 以在中繼區塊中記錄按區段的更新。 〃 非揮發性快閃記憶體2_存大量相對較靜態的控制資 料。這包括:群組位址表(GAT)21〇、混亂區塊索引 98705.doc -23- 1269154 (CBI)220、已抹除的區塊清單(EBl)230及MAP 240。GAT 210可記錄區段之邏輯群組及其對應中繼區塊之間的映 射。除非更新,否則該等映射關係不會改變。CBI 220可記 錄更新期間邏輯上非循序區段的映射。EBL 23 0可記錄已經 抹除之中、%區塊的集區。MAP 240是顯示快閃記憶體中所 有中繼區塊之抹除狀態的位元對映。 揮發性控制器RAM 13 0儲存一小部分經常變更及存取的 控制資料。這包括配置區塊清單(ABL)134及清除區塊清單 (CBL)136。ABL 134可記錄中繼區塊用於記錄更新資料的 配置’而CBL136可記錄已解除配置及已抹除的中繼區塊。 在較佳具體實施例中,RAM 130可當作儲存在快閃記憶體 200之控制資料的快取記憶體。 更新區塊管理器 更新區塊管理器150(如圖2所示)處理邏輯群組的更新。 根據本發明的一方面,會配置進行更新之區段的各邏輯群 組一用於記錄更新資料的專用更新中繼區塊。在較佳具體 實施例中,會將邏輯群組之一或多個區段的任何程式段記 錄在更新區塊中。可管理更新區塊以接收按循序順序或非 循序(又稱為「混亂」)順序的更新資料。混亂更新區塊允許 邏輯群組内按任何順序更新區段資料,並可任意重複個別 區段。尤其,不必重新配置任何資料區段,循序更新區塊 可變成混亂更新區塊。混亂資料更新不需要任何預定的區 塊配置;任何邏輯位址的非循序寫入可被自動納入。因此, 不像先前技術的系統,和先前技術系統不同的係,並不必 98705.doc -24- 1269154 特別處置該邏輯群組之各個更新程式
較佳將區段之完整邏輯群組的資料按邏輯 存在單一中繼 上循序順序儲
區段的索引。 的所有區段時,其可說是Γ =邏輯上循序順序填滿更新f料時,則更新區塊將成為 隨時可取代原始中繼區塊之已更新的完整中繼區塊。另一 方面如果更新區塊按邏輯上和完整區塊的不同順序填滿 更新資料,更新區塊為非循序或混亂更新區塊,則必須進 一步處理順序紊亂的程式段,以便最後能按和完整區塊相 同的順序來儲存邏輯群組的更新資料。在較佳的例子中, 其在單一中繼區塊中係按照邏輯上循序的順序。進一步的 處理涉及將更新區塊中已更新的區段和原始區塊中未變更 的區ί又莱總至又另一個更新中繼區塊。然後彙總的更新區 塊將按照邏輯上循序的順序並能夠用來取代原始區塊。在 一些預定條件下,彙總程序之前會有一或多個壓縮程序。 壓知私序只是將混IL更新區塊的區段重新記錄成取代的混 亂更新區塊,同時除去任何已由相同邏輯區段的後續更新 淘汰的複製邏輯區段。 更新方案允許同時執行多個多達預定極大值的更新執行 98705.doc •25- 1269154 各執㈣為使用其專用更新中繼區塊進行更新的邏輯 群組。 循序資料更新 在先更新屬於邏輯群組的資料時,會配置中繼區塊及將 其專用為邏輯群組之更新資料的更新區塊。當從主機接收 寫入邏輯群組之一或多個區段之程式段的指令時(現有的 :繼區塊已經儲存所有完整區段),會配置更新區塊。對於 第一主機寫入操作,會將第一程式段的資料記錄在更新區 鬼上由於各主機寫入是具有連續邏輯位址之一或多個區 段的一個程式段,因此會遵循第—更新在特性上永遠循 序。在後續的主機寫入中,會按照從主機接收的順序將相 同邏輯群組内的更新程式段記錄在更新區塊中。一個區塊 繼續接受管理為循序更新區塊,而關聯邏輯群組内由主機 更新的區段維持邏輯上循序。在此邏輯群組中更新的所有 區段會被寫入此循序更新區塊,直到區塊關閉或轉換為混 亂更新區塊。 圖7Α顯示由於兩個分開的主機寫入操作而按循序順序寫 入循序更新區塊之邏輯群組中之區段的範例,而邏輯群組 之原始區塊中對應的區段變成淘汰。在主機寫入操作Η 中’會更新邏輯區段LS5-LS8的資料。更新成為LS5,_ls8, 的資料會被記錄在新配置的專用更新區塊中。 為了方便,會將邏輯群組中要更新的第一區段記錄在始 於第一實體區段位置的專用更新區塊中。一般而古, σ 要更 新的第一邏輯區段不一定是群組的邏輯第一區 ^ 啦仅,因此, 98705.doc -26- 1269154 在邏輯群組的起點及更新區塊的起點之間會有位移。此位 移稱為「頁面標記」,如先前結合圖3 A所述。後續區段將按 照邏輯上循序的順序加以更新。在寫入邏輯群組的最後區 段時,群組位址會繞回及寫入序列會從群組的第一區段繼 續。 在主機寫入操作#2中,會更新邏輯區段LS9-LS12中資料 的私式段。更新成為LS9f-LS 12’的資料會被記錄在直接在最 後寫入結束處之後之位置中的專用更新區塊。圖中顯示兩 個主機寫入如下:按邏輯上循序順序記錄在更新區塊中的 更新資料,即LS5,-LS12,。更新區塊可視為循序更新區塊, 因其已按邏輯上循序的順序填入。記錄在更新區塊中的更 新資料可淘汰原始區塊中對應的資料。 混亂資料更新 當關聯的邏輯群組内由主機更新的任何區段為邏輯上非 循序時,可為現有的循序更新區塊啟始混亂更新區塊管 理。混亂更新區塊是資料更新區塊的形式,其中關聯邏輯 群組内的邏輯區段可按任何順序進行更新並可重複任意 次。其建立可藉由以下方式:在主機寫人的區段是邏輯上 非循序時,從循序更新區塊轉換成受更新之邏輯群組内先 前寫入的區段。所有其後在此邏輯群組中更新的區段會被 寫入混亂更新區塊中的下—個可用區段位置,無論其在群 組内的邏輯區段位址為何。 圖7B顯示由於五個分開的主機寫入操作而按混i順序寫 入混亂更新區塊之邏輯群組之區段的範例,而邏輯群組之 98705.doc -27- 1269154 原始區塊中被取代的區段及混亂更新區塊中被複製的區段 變成淘汰。在主機寫入操作#1中,會更新儲存於原始中繼 區塊之給定邏輯群組的邏輯區段LS 10-LS 11。已更新的邏輯 區段LSI O’-LSir會被儲存到新配置的更新區塊中。此時, 更新區塊為循序的更新區塊。在主機寫入操作#2中,會將 邏輯區段LS5-LS6更新成為LS5’-LS6,及將其記錄在緊接上 一個寫入之後之位置的更新區塊中。這可將循序的更新區 塊轉換為混亂的更新區塊。在主機寫入操作# 3,再次更新 邏輯區段L S 10及將其記錄在更新區塊的下一個位置成為 LSI0”。此時,更新區塊中的LSI0,,可取代先前記錄中的 LS10’,而LSI0’又可取代原始區塊中的LS10。在主機寫入 操作#4中,再次更新邏輯區段LS10的資料及將其記錄在更 新區塊的下一個位置中成為LS10’’’。因此,LS10,,,現在是邏 輯區段LS10的最後且唯一有效的資料。在主機寫入操作#5 中,會更新邏輯區段LS30的資料及將其記錄在更新區塊中 成為LS30’。因此,此範例顯示可以按照任何順序及任意重 複’將一邏輯群組内的複數個邏輯區段寫入至一混亂更新 區塊中。 強制循序更新 圖8顯示由於兩個在邏輯位址有中斷之分開的主機寫入 操作而在邏輯群組中按循序順序寫入循序更新區塊之區段 的範例。在主機寫入#1中,將邏輯區段LS5-LS8的更新資料 記錄在專用更新區塊中成為LS5,-LS8,。在主機寫入#2中, 將邏輯區段LS14-LS16的更新資料記錄在上一個寫入之後 98705.doc -28- 1269154 的更新區塊中成為LS14,-LS16,。^,在㈣及LS14之間 有位址跳躍,及主機寫入㈣常會使更新區塊成為非循 序。由於位址跳躍不是报多,—個選項是在執行主機寫入 #2之前將原始區塊之中間區段的資料複製到更新區塊,以 先執行填補操作(#2A)。依此方式,即可保存更新區塊的循 序特性。 圖9顯示根據本發明的一般具體實施例,更新區塊管理器 更新-個邏輯群組之資料的程序流程圖。更新程序包含以 下步驟·· 步驟260 :該記憶體被組織成複數個區塊,每個區塊均被 分割成可一起抹除的複數個記憶體單元,每個記憶體單元 係用於儲存一邏輯單元的資料。 步驟262:該資料被組織成複數個邏輯群組,每個邏輯群 組均被分割成複數個邏輯單元。 步驟264·•在標準的例子中,根據第一指定順序,較佳為 邏輯上循序的順序,將邏輯群組的所有邏輯單元儲存在原 始區塊的記憶體單元中。依此方式,即可得知存取區塊中 個別邏輯單元的索引。 步驟270 :對於給定邏輯群組(如,LGx)的資料,請求更 新LGX内的邏輯單元。(邏輯單^新係為舉例說明°。一般 而言’更新將是由LGx内-或多個連續邏輯單元所組成的程 式段。) 步驟272 :請求的更新邏輯單元將會儲存在專用於記錄 LGX之更新的第二區塊中。記錄順序係根據第二順序,通常 98705.doc -29- 1269154 是更新請求的順序。太 F 本&明的一個特色允許設定初始對按 Μ邏輯上循序或混亂 I只斤圮錄的貧枓為一般的更新區塊。 因此根據第二順序,筮广 、 弟—區塊可以是循序更新區塊或混亂 更新區塊。 步驟274 ·•當兹&m 私序迴圈返回到步驟27〇時,第二區塊繼續 記錄所請求的邏轾罝 早凡。在關閉的預定條件成形時將會關 閉第二區塊,以技你 接收進一步更新。此時,程序繼續進行至 步驟276。 步驟276 :判斷今* ρ ^ 關閉之第二區塊是否以和原始區塊相 同的順序來記錄其f靳s _ . ^ 八文新邏輯早兀。當該等兩個區塊記錄邏 °單元僅相差頁面標記時,該等兩個區塊便會被視為具 有相同的順序’如結合圖3Α所述。如果這兩個區塊具有相 同的順序耘序龜續進行至步驟28〇,否則,必須在步驟 執行廢棄項目收集。 ν驟280 ·由於第二區塊具有和第一區塊相同的順序,因 此其可用來取代原始的第_區塊。然後,更新程序結束於 步驟299。 步驟290 ··從第二區塊(更新區塊)及第一區塊(原始區塊) 收木給定邏輯群組之各邏輯單元的最新版本。然後按照和 第一區境相同的順序將給定邏輯群組之已彙總的邏輯單元 寫入第三區塊。 步驟292:由於第三區塊(彙總的區塊)具有和第一區塊相 同的順序,因此其可用來取代原始的第一區塊。然後,更 新程序結束於步驟299。 98705.doc -30- 1269154 步驟299 ··當結束程序建立完整的更新區塊時,該區塊會 變成給定邏輯群組的新標準區塊。將會終止此邏輯群組的 更新執行緒。 圖10顯示根據本發明的一項較佳具體實施例,更新區塊 官理器更新一個邏輯群組之資料的程序流程圖。更新程序 包含以下步驟·· 步驟310 :對於給定邏輯群組(如,LGx)的資料,會請求 更新LGX内的邏輯區段。(區段更新係為舉例說明。一般而 吕,更新將是由LGX内一或多個連續邏輯區段所組成的程式 段。) 步驟312 :如果LGX專用的更新區塊尚未存在,繼續進行 至步驟41 0以啟始邏輯群組之新的更新執行緒。這可藉由以 下方式來完成:配置記錄邏輯群組之更新資料專用的更新 區塊。如果已經有開啟的更新區塊,則繼續進行至步驟 3 14,開始將更新區段記錄至更新區塊上。 步驟3 14 :如果目前更新區塊已經混亂(即,非循序卜則 直接繼續進行至步驟5丨〇,以將請求的更新區段記錄至混亂 更新區塊上。如果目前更新區塊為循序,則繼續進行至步 驟3 16,以處理循序更新區塊。 步驟316:本發明的一項特點係允許於初始時將一更新區 塊設置成通用於以邏輯循序或混亂順序的方式來記錄資 料。不過,因為該邏輯群組最終會將其資料以邏輯循序的 順序儲存於一中繼區塊之中,所以,因此希望儘可能保持 該更新區塊的循序狀態。接著,當關閉一更新區塊以進行 98705.doc -31 · 1269154 因為並不需要進行 進一步更新時’將會需要較少的處理 廢棄項目收集。 因此,判斷所請求的更新是 Φ遷循更新區塊的目前循序 順序。如果更新循序遵循,則繼綠、仓> 、、fe、,進仃至步驟510以執行循 序更新,A更新區塊將維持循序。另-方面,如果更新未 循序遵循(混1L更新)’則其會在未採取任何動作時將循序更 新區塊轉換成混亂更新區塊。 έ進行任何動作來挽救此情 在一項具體實 ·「/·、U,| 月 況’然後程序直接進行至步驟37Q,其中允許更新將更新區 塊變成混亂更新區塊。 選用性強制循序程序 在另-項具體實施例中,會選用性執行強制循序程序步 驟320,以儘可能因顧及懸置的混亂更新而保存循序更新區 塊。其中有兩個情況,這兩個情況都需要複製原始區塊的 遺失區段,以維持更新區塊上記錄之邏輯區段的循序順 序。第一個情況是其中更新可建立短的位址跳躍。第二個 情況是提早結束更新區塊以將其保持循序。強制循序程序 步驟320包含以下子步驟: 步驟330 ·•如果更新建立的邏輯位址跳躍未大於預定的數 ΐ cB ’則程序繼續進行至步驟35〇的強制循序更新程序,否 則程序繼續進行至步驟34〇,以考慮其是否適合進行強制循 序結束。 步驟340 :如果未填充的實體區段數量超過預定的設計參 數Cc(其代表值為更新區塊尺寸的一半),則更新區塊為相 98705.doc -32 - 1269154 對未被使用,因此不會提早關閉。程序繼續進行至步驟 370,及更新區塊會成為混亂。另一方面,如果實質上已填 充更新區塊,則將其視為已經充分利用,因此進入步驟36〇 以進行強制循序結束。 步驟350 ··只要位址跳躍未超過預定的數量Cb,強制循序 更新允許目前循序更新區塊維持循序。實質上,會複製更 新區塊之關聯原始區塊的區段,以填充位址跳躍跨越的間 隙。因此,在繼續進行至步驟51〇之前,會以中間位址的資 料填補循序更新區塊,以循序記錄目前的更新。 步驟360 ·如果目前循序更新區塊在實質上已經被填充, 而非由懸置的混亂更新轉換為混亂更新區塊,則強制循序 結束允許目前循序更新區塊成為關閉狀態。混亂或非循序 更新的定義是具有以下項目的更新:不為上述位址跳躍例 外所涵蓋的正向位址轉變、反向位址轉變、或位址重複。 為了防止循序更新區塊為混亂更新所轉換,會藉由複製更 新區塊之關聯之原始部分淘汰區塊的區段來填充更新區塊 的未寫入區段位置。然後完全淘汰及抹除原始區塊。現在, 目前的更新區塊具有完整組的邏輯區段,然後結束成為取 代原始中繼區塊的完整中繼區塊。然後,程序繼續進行至 步驟43 0以在其位置配置更新區塊,以接受在步驟3 1 0先請 求之懸置區段更新的記錄。 轉換成混亂更新區塊 步驟370 :當懸置的更新未按循序順序且可有可無時,如 果無法滿足強制循序條件,則在程序繼續進行至步驟5工〇 98705.doc -33- 1269154 時,藉由允許在更新區塊上記錄具有非循序位址的懸 新區段’以允許循序更新區塊轉換為絲更新區塊。如果 最大數量的錢更新區塊存在,射允許㈣進行之前, 必須關閉最久未存取的混亂更新區塊;因而不會超過最大 數量的混亂區塊。最久未存取之混亂更新區塊的識別和步 驟420所述的一般例子相同,但僅限於混亂更新區塊。此時 關閉混亂更新區塊可藉由如步驟别所述的彙總來達成。 配置受系統限制的新更新區塊 步驟410:將抹除中繼區塊配置為更新區塊的程序始於決 定是否超過預定的系統限制。由於資源有限,記憶體管理 系統通常允許可同時存在之更新區塊的預定最大數量Ca。 此限制是循序更新區塊及混亂更新區塊的總數,也是設計 參數。在一項較佳具體實施例中,此限制為例如最大8個更 新區塊。還有,由於系統資源的較高需求,在可同時開啟 之混亂更新區塊的最大數量上還有對應的預定限制(如,4)。 因此,在已經配置Ca個更新區塊時,則只有在關閉現有 的配置請求之一後,才能滿足下一個配置請求。程序繼續 進行至步驟420。當開啟的更新區塊數量小於Ca時,程序直 接進行至步驟430。 步驟420:在超過更新區塊的最大數量Ca時,關閉最久未 存取的更新區塊及執行廢棄項目收集。最久未存取的更新 區塊會被識別為和最久未存取之邏輯區塊關聯的更新區 塊。為了決定最久未存取的區塊,存取包括邏輯區段的寫 入及選擇性讀取。會按照存取的順序維持開啟更新區塊的 98705.doc -34 - Ϊ269154 月單’初始化時,不會假設任何存取順序。更新區塊的關 閉在更新區塊為循序時,將按照結合步驟36〇及步驟530所 迷的相同程序,在更新區塊為混亂時,將按照結合步驟540 所述的相同程序。此關閉可挪出空間以在步驟43〇配置新的 更新區塊。 步驟430·•配置一新的中繼區塊作為該給定邏輯群組乙。 專屬的更新區塊便可滿足該配置要求。接著,程序繼續進 行至步驟5 1 〇。 在更新區塊上記錄更新資料 步驟510:將請求的更新區段記錄在更新區塊的下一個可 用實體位置上。然後,程序繼續進行至步驟52〇,決定更新 區塊是否準備結束就緒。 更新區塊結束 步驟520 :如果更新區塊還有接受附加更新的空間,則繼 績進行至步驟522。否則繼續進行至步驟57〇以結束更新區 塊。在目前請求的寫入嘗試寫入多於區塊所有空間的邏輯 區段時,有兩項填滿更新區塊的可能實施例。在第一實施 例中’會將寫入請求分成兩個部分,其中第一部分可寫入 直到區塊的最後實體區段。然後關閉區塊及將寫入的第二 部分處理為下一個請求的寫入。在另一個實施例中,會在 區塊填補其餘區段時保留請求的寫入,然後再將其關^。 清求的寫入會被處理為下一個請求的寫入。 步驟522 :如果更新區塊為循序,則繼續進行至步驟 以進行循序關閉。如果更新區塊為混亂’則繼續進行至步 98705.doc -35· 1269154 驟540以進行混亂關閉。 循序更新區塊結束 步驟530 :由於更新區塊為循序且已完全填充,因此其中 储存的邏輯群組為完整。中繼區塊為完整且能取代原始的 中繼區塊。此時,會完全淘汰原始區塊及將其抹除。然後 程序繼續進行至步驟570,其中給定邏輯群組的更新執行緒 結束。 混亂更新區塊結束 步驟540 :由於更新區塊為非循序填充,可能含有一些邏 輯區段的多個更新,因此會執行廢棄項目收集以挽救其中 的有效資料。混亂更新區塊可為已經壓縮或彙總。在步驟 542將會決定執行的程序。 步驟542 :要執行壓縮或彙總將根據更新區塊的退化而 定。如果邏輯區段已更新多次,其邏輯位址將高度退化。 記錄在更新區塊上的將有相同邏輯區段的多個版本,而只 有最後記錄的版本為該邏輯區段的有效版本。在含有多個 版本之邏輯區段的更新區塊中,有所區分之邏輯區段的數 量會比邏輯群組的少很多。 在較佳具體實施例中,當更新區塊中有所區分之邏輯區 段的數量超過預定的設計參數CD(其代表值為邏輯群組尺 寸的一半)時,結束程序會在步驟55〇執行彙總,否則程序 會繼續進行至步驟560的壓縮。 步驟550 ··如果要彙總混亂更新區塊,則將以含有彙總資 料之新的標準中繼區塊取代原始區塊及更新區塊。彙總 98705.doc -36- 1269154 後’更新執行緒將結束於步驟570。 步驟560 :如果要壓縮混亂更新區塊,則將以載有壓縮資 料之新的更新區塊取代之。壓縮後,已壓縮更新區塊的處 理將結束於步驟57〇。或者,可將壓縮延遲直到再次寫入更 新區塊’因此排除壓縮之後為沒有中間更新之彙總的可能 性。然後,當步驟502中出現下一個要求於LGx中進行更新 時,在給定邏輯區塊的進一步更新中使用新的更新區塊。 步驟570 :當結束程序建立完整的更新區塊時,該區塊會 變成給定邏輯群組的新標準區塊。此邏輯群組的更新執行 緒將會終止。在結束程序建立取代現有更新區塊之新的更 新區塊時’會使用新的更新區塊記錄為給定邏輯群組請求 的下個更新。在更新區塊未結束時,處理會在步驟3 1 〇 中出現下一個要求於LGX中進行更新時時繼續。 攸上述転序可知,在關閉混IL更新區塊時,會進一步處 理其上記錄的更新資料。尤其,其有效資料的廢棄項目收 集係藉由以下程序:壓縮至另一個混亂區塊的程序,或和 其關聯之原始區塊彙總以形成新的標準循序區塊的程序。 圖11A為詳細顯示關閉圖1〇所示之混亂更新區塊之彙總 程序的流程圖。混亂更新區塊彙總是執行於結束更新區塊 時(如當更新區塊已填滿其寫入的最後實體區段位置時)的 兩個可旎私序之一。區塊中寫入之有所區分的邏輯區段數 量超過預定的設計參數〇^時,將選擇彙總。圖1〇所示的彙 總程序步驟5 5 0包含以下子步驟: 步驟551 :在混亂更新區塊被關閉時,會配置可取而代之 98705.doc -37 - 1269154 的新中繼區塊。 步驟552 :在混亂更新區塊及關聯之原始區塊中,收集各 邏輯區段的最新版本並忽略所有的淘汰區段。 步驟554 :將所收集的有效區段按邏輯上循序順序記錄在 新的中繼區塊上,以形成完整區塊,即,按循序順序記錄 之邏輯群組之所有邏輯區段的區塊。 步驟556 :以新的完整區塊取代原始區塊。 步驟558 :抹除已結束的更新區塊及原始區塊。 圖11B為詳細顯示關閉圖1 〇所示之混亂更新區塊之壓縮 程序的流程圖。區塊中寫入之有所區分的邏輯區段數量低 於預疋的设计參數C d時’將選擇壓縮。圖1 〇所示的壓縮程 序步驟560包含以下子步驟: 步驟5 61 :在混亂更新區塊被壓縮時,會配置取而代之的 新中繼區塊。 步驟562 :在要壓縮之現有的混亂更新區塊中,收集各邏 輯區段的最新版本。 步驟5 64 :將所收集的區段記錄在新的更新區塊上,以形 成具有壓縮區段之新的更新區塊。 步驟566 :以具有壓縮區段之新的更新區塊取代現有的更 新區塊。 步驟568 :抹除已結束的更新區塊。 邏輯與中繼區塊狀態 圖12 A顯示邏輯群組的所有可能狀態,及其間在各種操作 下的可能轉變。 98705.doc -38- 1269154 之可能狀態的表格。邏輯群組狀態 圖UB為列出邏輯群組 的定義如下: 1.完# 序)被寫入 式0 1邏輯群組中的所有邏輯區段已依照邏輯循序順 早一中繼區塊之中’其可能利用頁面標記捲繞方 未專八·邏輯群組中未曾寫入任何邏輯區段。邏輯群 :,群、、且位址表中會會標示為未寫入且沒有任何配置的中 繼區塊。返回狀的資料模式,以回應此群組内每個區段 的主機讀取。 播序憑舞·邏輯群組内的一些區段已經按邏輯上循序 順序被寫入中繼F治士 、、 甲、、1 £塊中,可能使用頁面標記,因此其可取 代群、、且中任何S前完整狀態之對應的邏輯區段。 藏憑舞·邏輯群組内的一些區段已經按邏輯上非循 序貝序被寫人中繼區塊中,卩能使用頁面標記,因此其可 取^群組巾任何先前完整狀態之對應的邏輯H段。群組内 的區奴可被寫入一次以上,其中最新版本將取代所有先前 的版本。 圖13 A顯7F中繼區塊的所有可能狀態,及其間在各種操作 下的可能轉變。 圖13B顯不中繼區塊的所有可能狀態,及其間在各種操作 下的可能轉變: 1.己#綮:中繼區塊中的所有區段已被抹除。 。2.潜序$ _ :中繼區塊已經被部份寫入,其區段呈現邏 輯循序順序,彳能使用頁面標記。所有區段均屬於相同的 98705.doc -39· 1269154 邏輯群組。 3·滿農龙新··該中繼區塊已經被部份或完全寫入,其區 段呈現邏輯非循序順序。任何區段均可被寫入一次以上。 所有區段均屬於相同的邏輯群組。 4·完# :中繼區塊已經以邏輯循序的順序被完全寫入, 可能使用頁面標記。 5·及始:中繼區塊先前為完整但至少一區段已因主機資 料更新而淘汰。 胃 圖14(A)-14(J)為顯示邏輯群組狀態上及實體中繼區塊上 各種操作效果的狀態圖。 圖14(A)顯示對應於第一寫入操作之邏輯群組及中繼區 塊轉變的狀悲圖。主機按邏輯上循序順序將先前未寫入之 邏輯群組的一或多個區段寫入至新配置的已抹除中繼區 塊。邏輯群組及中繼區塊進入循序更新狀態。 圖14(B)顯不對應於第一完整操作之邏輯群組及中繼區 塊轉變的狀態圖。先前未寫入的循序更新邏輯群組因主機 循序寫入所有區段而變成完整。如果記憶卡以預定的資料 模式填充其餘未寫入的區段來填滿群組,則也會發生轉 變。中繼區塊變成完整。 圖14(c)顯不對應於第一混亂操作之邏輯群組及中繼區 塊轉變的狀態圖。先前未寫入的循序更新邏輯群組在主機 非循序寫入至少一區段時變成混亂。 圖14(D)顯示對應於第一壓縮操作之邏輯群組及中繼區 塊轉變的狀態圖。從舊區塊將先前未寫入之混亂更新邏輯 98705.doc -40- 1269154 群組内的所有有效區段複製到新的混亂中繼區塊,然後再 將其抹除。 圖14(E)顯示對應於第一彙總操作之邏輯群組及中繼區 塊轉變的狀態圖。從舊的混亂區塊移動先前未寫入之混亂 更新邏輯群組内的所有有效區段,以按邏輯上循序順序填 充新配置的已抹除區塊。主機未寫入的區段會以預定的資 料模式加以填充。然後抹除舊的混亂區塊。 圖14(F)顯示對應於循序寫入操作之邏輯群組及中繼區 塊轉變的狀態圖。主機按邏輯上循序順序將完整邏輯群組 的一或多個區段寫入新配置的已抹除中繼區塊。邏輯群組 及中繼區塊成為循序更新狀態。先前完整的中繼區塊變成 原始中繼區塊。 圖14(G)顯示對應於循序填充操作之邏輯群組及中繼區 塊轉變的狀態圖。循序更新邏輯群組在主機循序寫入所有 其區段時變成完整。這也可發生於以原始區塊的有效區段 填充循序更新邏輯群組以使其完整的廢棄項目收集期間, 在此之後會抹除原始區塊。 圖14(H)顯示對應於非循序寫入操作之邏輯群組及中繼 區塊轉變的狀態圖。循序更新邏輯群組在主機非循序寫入 至少一區段時變成混亂。非循序區段寫入可造成更新區塊 或對應原始區塊中的有效區段變成淘汰。 圖14(1)顯示對應於壓縮操作之邏輯群組及中繼區塊轉變 的狀態圖。從舊區塊將混亂更新邏輯群組内的所有有效區 段複製到新的混亂中繼區塊,然後再將其抹除。原始區塊 98705.doc -41 - 1269154 不會受到影響。 圖1 4(J)顯示對應於彙總操作之邏輯群組及中繼區塊轉變 的狀態圖。從舊的混亂區塊複製混亂更新邏輯群組内的所 有有效區段,以按邏輯上循序順序填充新配置的已抹除區 塊。然後抹除舊的混亂區塊及原始區塊。 更新區塊追蹤及管理 圖1 5顯示用於追蹤已開啟及已關閉之更新區塊與已抹除 區塊以進行配置的配置區塊清單(ABL)的結構的較佳具體 實施例。該配置區塊清單(ABL)610會被保存於控制器ram 130之中,以允許管理已抹除區塊之配置、配置的更新區 塊、關聯的區塊及控制結構,以啟用正確的邏輯對實體位 址轉譯。在較佳具體實施例中,ABL包括:已抹除區塊的 清單、開啟的更新區塊清單614、及關閉的更新區塊清單 616° 開啟的更新區塊清單614是ABL中具有開啟更新區塊之 屬性的區塊項目組。開啟的更新區塊清單具有目前開啟之 各資料更新區塊的一個項目。各項目保有以下資訊。LG是 目前更新中繼區塊專用的邏輯群組位址。循序/混亂是代表 以循序或混亂更新資料填充更新區塊的狀態。MB是更新區 塊的中繼區塊位址。頁面標記是在更新區塊之第一實體位 置記錄的起始邏輯區段。寫入的區段號碼代表目前在更新 區塊上寫入的區段號碼。MB〇是關聯之原始區塊的中繼區 塊位址。Page Tag〇是關聯之原始區塊的頁面標記。 關閉的更新區塊清單616是配置區塊清單(ABL)的子集。 98705.doc -42- 1269154 其為胤中具有關閉更新區塊之屬性的區塊項目組。關閉 的更新區塊清單具有一個已關閉之各資料更新區塊的項 目’但其項目在邏輯對主實體目錄中並未更新。各項目保 有以下資訊。LG是目前更新區塊專用的邏輯群組位址。MB 是更新區塊的中繼區塊位址。頁面標記是在更新區塊之第 一實體位置記錄的起始邏輯區段。MB〇是關聯之原始區塊 的中繼區塊位址。 混亂區塊索引 循序更新區塊具有按邏輯上循序順序儲存的資料,因此 很容易尋找區塊中的任何邏輯區段。混亂更新區塊具有其 未按順序儲存的邏輯區段並可儲存一個邏輯區段的多個更 新世代。必須維持附加資訊,以記錄各有效邏輯區段被配 置在亂更新區塊中的位置。 在較佳具體實施例中,混亂區塊索引資料結構允許追蹤 及决速存取混亂區塊中的所有有效區段。混亂區塊索引獨 立官理小型區域的邏輯位址空間,並可有效處理系統資料 及使用者資料的熱區。索引資料結構實質上允許在快閃記 fe、體中維持具有不常更新需求的索引資訊,以免效能明顯 又到景々響。另一方面,會將混亂區塊中最近寫入區段的清 單保留在控制器RAM的混亂區段清單中。還有,會將快閃 記憶體之索引資訊的快取記憶體保留在控制器RAM中,以 減少位址轉譯之快閃區段存取的數量。各混亂區塊的索引 係儲存於快閃記憶體的混亂區塊索引(CBI)區段中。 圖16A顯示混亂區塊索引(CBI)區段的資料攔位。混亂區 98705.doc 1269154 塊索引區段(CBI區段)含有邏輯群組中各區段映射至混亂 更新區塊的索引,可定義邏輯群組各區段在混亂更新區塊 或其關聯之原始區塊内的位置。CBI區段包括:記錄混亂區 塊内有效區段的混亂區塊索引欄位、記錄混亂區塊位址參 數的混亂區塊資訊欄位、及記錄儲存CBI區段之中繼區塊 (CBI區塊)内有效CBI區段的區段索引欄位。 圖16B顯示記錄於專用中繼區塊中之混亂區塊索引(cbi) 區段的範例。專用的中繼區塊可稱為CBI區塊620。在更新 CBI區段時,會將其寫入CBI區塊620中下一個可用的實體 區段位置。因此,CBI區段的多個複本可存在CBI區塊中, 其中只有最後寫入的複本為有效。例如,已經利用有效版 本的最新版本將邏輯群組]^01的CBI區段更新三次。區塊中 最後寫入之CBI區段的一組索引可識別CBI區塊中各有效 區段的位置。在此範例中,區塊中最後寫入的CBI區段是 LGi%的CBI區段,及其索引組是取代所有先前索引組的有 效索引組。當CBI區塊最後變成以CBI區段予以完全填充 時’會將所有有效區段再寫入新的區塊位置,以在控制寫 入操作期間壓縮區塊。然後抹除整個區塊。 CBI區段内的混亂區塊索引攔位含有邏輯群組内各邏輯 區段的索引項目或映射至混亂更新區塊的子群組。各索引 項目代表對應邏輯區段之有效資料所在之混亂更新區塊内 的位移。保留的索引值代表混亂更新區塊中沒有邏輯區段 的有效資料,及代表關聯之原始區塊中的對應區段為有 效。一些混亂區塊索引攔位項目的快取記憶體會被保留在 98705.doc •44- 1269154 控制器RAM中。 CBI區段内的混亂區塊資訊欄位含有關於存在於系統中 各混亂更新區塊的一個項目,以記錄區塊的位址參數資 訊。此欄位中的資訊只在CBI區塊的最後寫入區段中有效。 此資訊也會出現在RAM的資料結構中。 各混IL更新區塊的項目包括三個位址參數。第一個參數 是和混亂更新區塊關聯之邏輯群組(或邏輯群組數)的邏輯 位址。第二個參數是混亂更新區塊的中繼區塊位址。第三 個參數是寫入混亂更新區塊中最後區段的實體位址位移。 位移資訊設定初始化期間混亂更新區塊的掃描起點,以在 RAM中重建資料結構。 區段索引欄位含有關於CBI區塊中各有效CBI區段的項 目。其可定義CBI區塊内有關各許可之混亂更新區塊之最近 寫入的CBI區段所在的位移。索引中位移的保留值代表許可 的混iL更新區塊並不存在。 圖16C為顯示存取正在進行混亂更新之給定邏輯群組之 邏輯區段之資料的流程圖。在更新程序期間,會將更新資 料記錄在混亂更新區塊中,而未變更的資料則留在和邏輯 群組關聯的原始中繼區塊中。在混亂更新下存取邏輯群級 之邏輯區段的程序如下: 步驟650 :開始尋找給定邏輯群組的給定邏輯區段。 步驟652 :在CBI區塊中尋找最後寫入的CBI區段。 步驟654 ··藉由查詢最後寫入之CBI區段的混亂區塊資訊 欄位’尋找和給定邏輯群組關聯的混亂更新區塊或原始區 98705.doc -45- 1269154 塊。此步驟可在步驟662前的任何時間執行。 步驟658 :如果最後寫入的CBI區段係指向給定的邏輯群 組’則可尋找CBI區段。繼續進行至步驟662。否則,繼續 進行至步驟66〇。 步驟660 :藉由查詢最後寫入之CBI區段的區段索引攔 位’尋找給定邏輯群組的CBI區段。 步驟662 :藉由查詢所尋找到之CBI區段的混亂區塊索引 欄位’尋找混亂區塊或原始區塊中的給定邏輯區段。 圖16D顯示根據其中已將邏輯群組分割成子群組的替代 性具體實施例,存取正在進行混亂更新之給定邏輯群組之 邏輯區段之資料的流程圖。CBI區段的有限容量只能記錄預 定最大數量的邏輯區段。當邏輯群組具有多於單一 CBI區段 所能處理的邏輯區段時,會將邏輯群組分割成多個具有指 派給各子群組之CBI區段的子群組。在一個範例中,各CBI 區段具有足夠追縱由2 5 6區段所組成及多達8個混亂更新區 塊之邏輯群組的容量。如杲邏輯群組具有超過256區段的尺 寸,則存在用於邏輯群組内各256區段子群組之分開的CBI 區段。CBI區段可存在用於邏輯群組内多達8個子群組,以 支援尺寸多達2048區段的邏輯群組。 在較佳具體實施例中,會採用間接索引方案以促進索引 的管理。區段索引的各項目具有直接及間接攔位。 直接區段索引可定義CBI區塊内有關特定混i更新區塊 之所有可能CBI區段所在的位移。此欄位中的資訊只在有關 該特定混亂更新區塊之最後寫入的CBI區段中有效。索引中 987〇5.d0· -46- 1269154 位移的保留值代表CBI區段並不存在,因為對應之有關混亂 更新區塊的邏輯子群組或是不存在,或是由於已配置更新 區塊而未更新。 間接區段索引可定義有關各許可的混亂更新區塊之最近 寫入之CBI區段所在之CBI區塊内的位移。索引中位移的保 留值代表許可的混亂更新區塊並不存在。 圖16D顯示在混亂更新下存取邏輯群組之邏輯區段的程 序,其步驟如下: 步驟670 ·將各邏輯群組分割成多個子群組及指派cBI區 段給各子群組。 步驟680 :開始尋找給定邏輯群組之給定子群組的給定邏 輯區段。 步驟682 :在CBI區塊中尋找最後寫入的CBI區段。 步驟684 :藉由查詢最後寫入之CBI區段的混亂區塊資訊 搁位尋找和給定子群組關聯的混亂更新區塊或原始區 塊。此步驟可在步驟696前的任何時間執行。 步驟686 :如果最後寫入的區段係指向給定的邏輯群 組,則繼續進行至步驟691。否則,繼續進行至步驟69〇。 步驟690 :藉由查詢最後寫入之CBI區段的間接區段索引
攔位,哥找給定邏輯群組之多個CBI區段中最後寫入的cBI 區段 〇 步騍691 : 關聯的至少 步驟692 : 已經尋找到和給定邏輯群組之子群組其中之一 一 CBI區段。繼續。 如果所尋找到的CBI區段指向給定子群組,則 98705.doc -47- 1269154 可尋找給定子群組的CBI區段。繼續進行至步驟696。否則, 繼續進行至步驟694。 步驟694 :藉由查詢目前尋找之CBI區段的直接區段索引 搁位’尋找給定子群組的CBI區段。 步驟696 :藉由查詢給定子群組之CBI區段的混亂區塊索 引欄位’尋找混亂區塊或原始區塊中的給定邏輯區段。 圖16E顯示在其中將各邏輯群組分割成多個子群組的具 體實施例中,混亂區塊索引(CBI)區段及其功能的範例。邏 輯群組700原來將其完整的資料儲存在原始中繼區塊7〇2 中。接著’邏輯群組配合配置專用的混亂更新區塊7〇4進行 更新。在本範例中,將邏輯群組7〇0分割成子群組,這些子 群組八、:6、(:、0各具有256個區段。 為了尋找子群組B中的第i個區段,會先尋找CBI區塊620 中最後寫入的CBI區段。最後寫入之CBI區段的混亂區塊資 訊攔位可提供尋找給定邏輯群組之混亂更新區塊7〇4的位 址。同時’其還可提供寫入混亂區塊中之最後區段的位置。 此負吼在掃描及重建索引時很有用。 如果最後寫入之CBI區段結果是給定邏輯群組的四個 CBI區段之一,則會進一步決定其是否正是含有第丨個邏輯 區段之給定子群組B的CBI區段。如果是,則^趴區段的混 亂區塊索引會指向儲存第丨個邏輯區段之資料的中繼區塊 位置。區段位置會在混亂更新區塊7〇4中或在原始區塊7〇2 中〇 如果最後寫入之CBI區段結果是給定邏輯群組之四個 98705.doc -48- 1269154 CBI區段之一但卻非屬於子群組b,則會查詢其直接區段索 引’以尋找子群組B的CBI區段。在尋找此確切的CBI區段 後’會查詢混亂區塊索引,以在混亂更新區塊704及原始區 塊702中尋找第i個邏輯區段。 如果最後寫入之CBI區段結果不是給定邏輯群組之四個 CBI區段的任一個,則會查詢間接區段索引以尋找四個區段 中的一個。在圖16E所示的範例中,會尋找子群組c的CBI 區段。然後,子群組C的此CBI區段查詢其直接區段索引, 以尋找子群組B之確切的CBI區段。此範例顯示在查詢混亂 區塊索引時,將發現第i個邏輯區段為未變更及會在原始區 塊中尋找到其有效資料。 在給定邏輯群組的子群組C中尋找第j個邏輯區段時也會 做出同樣的考慮。此範例顯示最後寫入之CBI區段結果不是 給定邏輯群組之四個CBI區段的任何一個。其間接區段索引 指向給定群組之四個CBI區段之一。所指向之四個中的最後 寫入結果也正是子群組C的CBI區段。在查詢其混亂區塊索 引時,將發現第j個邏輯區段被尋找在混亂更新區塊7〇4中 的指定位置。 控制器RAM中存在系統中之各混亂更新區塊的混亂區段 清單。每份清單均含有一份自快閃記憶體中最後被更新的 相關C BI區段開始至目前區段為止被寫入該混亂更新區塊 之中的區段的記錄。特定混亂更新區塊之邏輯區段位址(可 保留在混亂區段清單中)的數量是8至16之代表值的設計參 數。^單的最佳尺寸可決定為其對混亂資料寫入操作之過 98705.doc -49- 1269154 度耗用的作用及初始化期間之區段掃描時間之間的權衡。 在系統初始化期間,為了識別自其關聯之CBI區段之一的 先前更新後所寫入的有效區段,必須掃描各混亂更新區 塊。在控制器RAM中,會構成各混亂更新區塊的混亂區段 清單。只需要在最後寫入的CBI區段中,從各區塊之混亂區 塊資訊攔位中定義的最後區段位址開始掃描各區塊即可。 在配置混亂更新區塊時,會寫入CBI區段以對應於所有的 更新邏輯子群組。混亂更新區塊的邏輯及實體位址會被寫 入區段中可用的混亂區塊資訊攔位,其中空值項目在混亂 區塊索引欄位中。會在控制器RAM中開啟混亂區段清單。 在關閉混亂更新區塊時,會以從區段中混亂區塊資訊襴 位移除的區塊邏輯及實體位址寫入CBI區段。RAM中對應 的混亂區段清單變成未使用。 可修改控制器RAM對應的混亂區段清單,以包括寫入混 亂更新區塊之區段的記錄。當控制器RAM中的混亂區段清 單沒有寫入混亂更新區塊之其他區段記錄的任何可用空間 時,會為有關清單中區段的邏輯子群組寫入已更新的CBI 區段,然後清除清單。 當CBI區塊620變滿時’會將有效的CBI區段複製到已配 置的已抹除區塊中,然後抹除先前的CBI區塊。 位址表 圖2所示的邏輯對實體位址轉譯模組14〇負責關聯快閃記 憶體中主機的邏輯位址和對應的實體位址。邏輯群組及實 體群組(中繼區塊)間的映射係儲存於非揮發性快閃記憶體 98705.doc -50- 1269154 200及揮發性卻較為敏捷之RAM 130(見圖1)中分布的一組 表格及清單中。位址表係維持在含有記憶體系統中每個邏 輯群組之中繼區塊位址的快閃記憶體中。此外,最近寫入 區段的邏輯對實體位址記錄會暫時保留在ram中。在系統 啟動後進行初始化時,可從快閃記憶體中的區塊清單及資 料區段標頭中重新構成這些揮發性記錄。因此,快閃記憶 體中的位址表只需要偶而更新,以降低控制資料之過度耗 用寫入操作的百分比。 邏輯群組之位址記錄的階層包括:在RAM中之開啟的更 新區塊清單、關閉的更新區塊清單及維持在快閃記憶體中 的群組位址表(GAT)。 開啟的更新區塊清單是控制器RAM中目前開啟用於寫入 已更新之主機區段資料之資料更新區塊的清單。區塊的項 目在區塊關閉時會被移至關閉的更新區塊清單。關閉的更 新區塊清單是控制器RAM中已經關閉之資料更新區塊的清 單。清單中項目的子集在控制寫入操作期間會被移至群組 位址表中的區段。 群組位址表(GAT)是記憶體系統中主機資料所有邏輯群 組之中繼區塊位址的清單。GAT含有根據邏輯位址循序排 序之各邏輯群組的-個項目eGAT中的第讀項目含有具位 址η之邏輯群組的巾繼區塊位址。在較佳具體實施例中, ㈣是快閃記憶體中的表格,其中包含—組具定義記憶體 系統中每個邏輯群組之中繼區塊位址之項目的區段(稱為 GAT區段)。在快閃記憶體中,會將⑽區段尋找在一或多 98705.doc 1269154 個專用的控制區塊(稱為GAT區塊)中。 圖17A顯示群組位址表(GAT)區段的資料欄位。GAT區段 可如具有足夠含有一組128個連續邏輯群組之GAT項目的 容量。各G AT區段包括兩個成分,即:一組用於範圍内各 邏輯群組之中繼區塊位址的GAT項目,及GAT區段索引。第 一成分含有用於尋找和邏輯位址關聯之中繼區塊的資訊。 第二成分含有用於尋找G AT區塊内所有有效G AT區段的資 訊。各GAT項目有三個欄位,即:中繼區塊號碼、如先前 結合圖3 A(iii)所述的頁面標記、及代表中繼區塊是否已經 重新連結的旗標。GAT區段索引列出GAT區塊中有效GAT 區段的部分。此索引會在每個GAT區段中但會被GAT區塊中 下一個寫入之G AT區段的版本所取代。因此只有最後寫入 之GAT區段中的版本為有效。 圖17B顯示記錄在一或多個GAT區塊中之群組位址表 (GAT)區段的範例。GAT區塊是記錄GAT區段專用的中繼區 塊。在更新GAT區段時,會將其寫入GAT區塊720中下一個 可用的實體區段位置。因此,G AT區段的多個複本可存在 G AT Εΐ塊中,其中只有表後寫入的複本為有效。例如,at 區段25 5(含有邏輯群組LG3%8 · LG4098的指標)至少已經使 用有效版本的最新版本更新兩次。區塊中最後寫入之G AT 區段的一組索引可識別GAT區塊中各有效區段的位置。在 此範例中,區塊中最後寫入的GAT區段是GAT區段236,及 其索引組疋取代所有先前索引組的有效索引組。當gat區 塊隶後變成以G AT區段完全填充時,會將所有有效區段再 98705.doc -52- 1269154 寫入新的區塊位置’以在控制寫入操作期間壓縮區塊。然 後抹除整個區塊。 如上述’ G AT區塊在邏輯位址空間的區域中含有邏輯上 連續組之群組的項目。GAT區塊内的GAT區段各含有128個 連續邏輯群組的邏輯對實體映射資訊。在GAT區塊所跨越 的位址範圍内,儲存所有邏輯群組項目所需的GAT區段數 僅佔用區塊内總區段位置的一小部分。因此,在區塊中下 一個可用區段位置將GAT區段寫入,即可將其更新。GAT 區塊中所有有效GAT區段及其位置的索引係維持在最近寫 入之GAT區段中的索引攔位中。GAT區塊中有效GAT區段所 佔用之總區段的一小部分係為系統設計參數,其通常為 25 /〇。然而,母個GAT區塊中最多有64個有效GAT區段。在 大邏輯容量的系統中,可能必須在一個以上的⑽區塊中 儲存G AT區段。此時’各G Ατ區塊係和固定範圍的邏輯群組 關聯。 可將G AT更新執行作為控制寫入操作的部&,此操作會 在ABL用盡配置的區塊時受到觸發(見圖18)。其執行和皿 填充及CBL清空操作同時進行。在⑽更新操㈣間,一個 G AT區段具有以關閉之更新區塊清單中對應項目所更新的 項目。GAT項目被更新時’會從關閉的更新區塊清單⑴狐) 移除任何制的項目。例如,會根據關閉㈣ 中的第-項目選擇要更新的⑽區段。可將更新區段寫入 GAT區塊中的下一個可用區段位置。 當》又有任何區段位番 置可供一已更新的GAT區段使用時, 98705.doc -53 - 1269154 於控制寫入操作期間便會發生GAT再寫入操作。將會配置 新的GAT區塊及從完整的GAT區塊按循序順序複製GAT索 引所定義的有效GAT區段。然後抹除整個GAT區塊。 GAT快取記憶體是控制器ram 130中,GAT區段之128個 項目之子分割之項目的複本。GAT快取記憶體項目的數量 -是一項系統設計參數,代表值為32。每次從GAT區段讀取 一個項目時’即可建立相關區段子分割的GAT快取記憶 體。將會維持多個GAT快取記憶體。其數量是代表值為4的修 設計參數。GAT快取記憶體會根據最久未使用以不同區段 子分割的項目來覆寫。 抹除的中繼區塊管理 圖2所示的抹除區塊管理器ι6〇可使用一組維持目錄及系 統控制資訊的清單來管理抹除區塊。這些清單係分布於控 制器RAM 130及快閃記憶體2〇〇中。當必須配置已抹除的中 繼區塊以儲存使用者資料或儲存系統控制資料結構時,會 選擇保留在控制器RAM中的配置區塊清單(ABL)中的下一鲁 個可用中繼區塊號碼(見圖丨5)。同樣地,在撤出中繼區塊後 而將其抹除時,會將其號碼新增至同樣保留在控制器RAM 中的清除區塊清單(CBL)。相對較靜態的目錄及系統控制資 料係儲存於快閃記憶體中。這些包括列出快閃記憶體中所 有中繼區塊之抹除狀態的已抹除區塊清單及位元對映 (map)。已抹除的區塊清單及MAp係儲存於個別區段中, 且έ。己錄在稱為r MAp區塊」的專用中繼區塊中。這些分 布於控制器RAM及快閃記憶體中的清單可提供已抹除區塊 98705.doc -54- 1269154 記錄的層級以有效管理已抹除中繼區塊的使用。 圖18為顯示使用及再循環已抹除區塊之控制及目錄資訊 之分布及流程的示意方塊圖。控制及目錄資料係維持在被 保留在常駐於快閃記憶體200之控制器RAM 130或在MAP 區塊750中的清單。 在較佳具體實施例中,控制器RAM 130會保留配置區塊 清單(ABL)610及清除區塊清單(CBL)740。如先前結合圖15 所述’配置區塊清單(ABL)可記錄最近已配置哪個中繼區塊 以儲存使用者資料或儲存系統控制資料結構。在必須配置 新的已抹除中繼區塊時,會在配置區塊清單(ABL)中選擇下 一個可用的中繼區塊號碼。同樣地,會使用清除區塊清單 (CBL)記錄已經解除配置及抹除的更新中繼區塊。在控制器 RAM 130(見圖1)中會保留ABL及CBL以在追蹤相對作用中 更新區塊時進行快速存取及簡易操控。 配置區塊清單(ABL)可記錄即將成為更新區塊之已抹除 中繼區塊的集區及已抹除中繼區塊的配置。因此,各個這 些中繼區塊可由指定其是否為ABL懸置配置中的已抹除區 塊、開啟的更新區塊、或關閉的更新區塊之屬性來說明。 圖18顯示ABL含有:已抹除ABL清單612、開啟的更新區塊 清早614、及關閉的更新區塊清单616。此外,和開啟的更 新區塊清單614關聯的是關聯的原始區塊清單6丨5。同樣 地,和關閉的更新區塊清單關聯的是關聯的已抹除原始區 塊清單617。如先前圖15所示,這些關聯的清單分別是開啟 的更新區塊清單6 14及關閉的更新區塊清單616的子集。已 98705.doc -55 - 1269154 抹除的ABL區塊清單612、開啟的更新區塊清單614、及關 閉的更新區塊清單616均為配置區塊清單(ABL)610的子 集,各清單中的項目分別具有對應的屬性。 MAP區塊750是儲存快閃記憶體200中之抹除管理記錄專 用的中繼區塊。MAP區塊儲存MAP區塊區段的時間序列, 其中各MAP區段不是抹除區塊管理(EBM)區段760,就是 MAP區段780。當已抹除區塊在配置用盡且在撤出中繼區塊 時再循環時,關聯的控制及目錄資料較佳含在可在MAP區 塊更新的邏輯區段中,其中會將更新資料的各例項記錄在 新的區塊區段中。EBM區段760及MAP區段780的多個複本 可存在MAP區塊7 5 0中,其中只有最新版本為有效。有效 MAP區段之位置的索引係含在EMB區塊的攔位中。有效的 EMB區段總是在控制寫入操作期間最後被寫入MAP區塊 中。當MAP區塊750已滿時,會在控制寫入操作期間將所有 有效區段再寫入新的區塊位置而將其壓縮。然後抹除整個 區塊。 各EBM區段760含有已抹除的區塊清單(EBL)770,此清單 是已抹除區塊總體之子集位址的清單。已抹除的區塊清單 (EBL)770可當作含有已抹除之中繼區塊號碼的緩衝器,從 此缓衝器中會定期取用中繼區塊號碼以重新填充ABL,並 定期將中繼區塊號碼新增至此緩衝器中以重新清空CBL。 EBL 770可當作用於以下項目的緩衝器:可用的區塊緩衝器 (ABB)772、已抹除的區塊緩衝器(EBB)774及已清除的區塊 緩衝器(CBB)776。 98705.doc -56- 1269154 可用的區塊緩衝器(ABB)772含有緊接先前ABL填充操作 之後之ABL 6 10之項目的複本。其實際上是正在ABL填充操 作之後之ABL的備份複本。 已抹除的區塊緩衝器(EBB)774含有先前從MAP區段780 或CBB清單776傳送之已抹除的區塊位址(說明如下),且該 等位址可用在ABL填充操作期間傳送至ABL 610。 已清除的區塊緩衝器(CBB)776含有在CBL清空操作期間 已從CBL 740傳送及其後會被傳送至MAP區段780及EBB清 單774之已抹除區塊的位址。 各個MAP區段780含有稱為「MAP」的位元對映結構。 MAP會使用快閃記憶體中各中繼區塊的一位元,以用來表 示各區塊的抹除狀態。對應於EBM區段中ABL、CBL或已 抹除的區塊清單所列之區塊位址的位元在MAP中不會被設 為抹除狀態。 區塊配置演算法永遠不會使用在MAP、已抹除的區塊清 單、ABL或CBL内,任何未含有有效資料結構及未被指定 為已抹除區塊的區塊,因此無法存取此類區塊用於儲存主 機或控制資料結構。這可提供從可存取的快閃記憶體位址 空間排除具有缺陷位置之區塊的簡單機制。 圖1 8所示之階層可有效地管理已抹除區塊記錄,並且對 被儲存於該控制器之RAM中的該等區塊位址清單提供完整 的安全性。可以不頻繁的方式在該些區塊位址清單及一個 以上的MAP區段780之間交換已抹除的區塊項目。可於電源 關閉之後的系統初始化期間,透過被儲存於快閃記憶體中 98705.doc -57- 1269154 複數個區段中該等已抹除區塊清單及位址變換表中的資 訊,以及有限地掃描快閃記憶體中少量被參照的資料區 塊,來重建該些清單。 用於更新已抹除中繼區塊記錄之階層所採用的該等演算 法可以下面的順序來配置使用已抹除區塊··將來自該MAP 區塊750的區塊叢於位址順序中交錯來自該CBL 740的區塊 位址叢’其反映的係區塊被該主機更新的順序。對大部份 的中繼區塊大小與系統記憶體容量而言,單一 MAP區段可 針對該系統中的所有中繼區塊提供一位元對映。於此情況 中,已抹除的區塊必定會以和被記錄於此MAP區段中相同 的位址順序來配置使用。 抹除區塊管理操作 如上述,ABL 610是具有以下位址項目的清單:可經配置 使用的已抹除中繼區塊,及最近已配置為資料更新區塊之 中繼區塊。ABL中區塊位址的實際數量介於為系統設計變 數之最大及最小限制之間。在製造期間,格式化之ABL項 目的數量是記憶卡類型及容量的函數。此外,由於可用之 已抹除區塊的數量會因壽命期間的區塊故障而縮減,也會 縮減ABL中項目的數量接近系統壽命終點。例如,在填充 操作後,ABL中的項目可指定可用於以下用途的區塊。每 個區塊具有一個項目之部分寫入資料更新區塊的項目不超 過糸統對同時開啟之最大更新區塊的限制。用於配置為資 料更新區塊之抹除區塊的一至二十個項目之間。配置為控 制區塊之已抹除區塊的四個項目。 98705.doc -58- 1269154 ABL填充操作 由於ABL 610會因為配置而變成耗盡,因此需要進行重新 填充。填充ABL的操作發生於控制寫入操作期間。此係觸 發於以下情況時:必須配置區塊,但ABL含有不足用於配 置為資料更新區塊或一些其他控制資料更新區塊的已抹除 區塊項目。在控制寫入期間,ABL填充操作係和gat更新 操作同時進行。 在ABL填充操作期間會發生以下動作。 1·保留具有目前資料更新區塊之屬性的ABL項目。 2·保留已關閉資料更新區塊之屬性的ABL項目,除非該 區塊的某個項目正於該同時進行的GAT更新作業中被寫 入,於此情況中則會從該ABL中移除該項目。 3·保留用於未配置之抹除區塊的ABL項目。 4.壓縮概以移除因移除項目所產生的間隙,以維持項 目的順序。 、 5·藉由附加來自該EBB清單中下次可用的項目,以完全 填充該ABL。 ^ $ 利用α亥ABL中该等目前的項目來覆寫該abb清單。 CBL清空操作 CBL是控制器RAM中已抹除區塊位址的清單,對 區塊項目數量的 牙、 的限制和ABL相同。清空CBL的操作發 控制寫入操作期n m4 卩知玍於 ⑽區塊h i ABL填充/GAT更新操作或
°° 細作同時進行。在CBL清空操作中,會從cB 740移除項目並將其寫人CBB清單776。 θ 98705.doc -59- 1269154 MAP交換操作 當EBB清單774已為清空時,在MAp區段78〇之抹除區塊 資訊及EBM區段760間的MAP交換操作可定期發生於控制 寫入操作期間。如果系統中的所有已抹除中繼區塊均記錄 在EBM區段760中,將無任何MAP區段78〇存在及不會執行 任何MAP交換。在MAP交換操作期間,用於將已抹除區塊 饋送給EBB 774的MAP區段被視為來源MAP區段782。相反 地,用於從CBB 776接收已抹除區塊的MAP區段被視為目的 地MAP區段784。如果只有一個MAP區段,則可當作來源及 目的地MAP區段,其定義如下。 在MAP交換期間會執行以下動作。 1 ·以遞增指標的方式為基礎,選擇一來源map區段。 2.以不在該來源MAP區段中之第一 CBB項目中的區塊位 址為基礎來選擇一目的]VIAP區段。 3 _如該CBB中相關項目所定義的方式來更新該目的map 區段,並且從該CBB中移除該等項目。 4.將該已更新的目的MAP區段寫入至該MAP區塊之中, 除非沒有分離的來源MAP區段存在。 5 ·如该CBB中相關項目所定義的方式來更新該來源map 區段,並且從該CBB中移除該等項目。 6·將該CBB中剩餘的項目附加至該EBB之中。 7.利用該來源MAP區段所定義之已抹除區段位址盡可能 地填充該EBB。 8 ·將該已更新的來源MAP區段寫入至該MAP區塊中。 98705.doc -60- 1269154 9_將一已更新的EBM區段寫入至該MAP區塊中。 清單管理 圖18顯示各種清單間控制及目錄資訊的分布與流程。為 了方便,在清單元件間移動項目或變更項目屬性的操作, 在圖1 8中識別為[A]至[〇],說明如下。 [A] 在將抹除區塊配置為主機資料的更新區塊時,會 將其在ABL中的項目屬性從已抹除的ABL區塊變更為開啟 的更新區塊。 [B] 在將已抹除的區塊配置為控制區塊時,會移除其在 ABL中的項目。 [C] 在建立一具有開啟更新區塊屬性的ABL項目時,會 將關聯的原始區塊欄位新增至項目,以記錄被更新之邏輯 群組的原始中繼區塊位址。從GAT可獲得此資訊。 [D] 關閉更新區塊時,其在ABL中的項目屬性會從開啟 的更新區塊變更為關閉的更新區塊。 [E] 關閉更新區塊時,會抹除其關聯的原始區塊,及會 將其在ABL中項目之關聯原始區塊欄位的屬性變更為已抹 除的原始區塊。 [F] 在ABL填充操作期間,任何其位址在相同控制寫入 操作期間於GAT中更新的已關閉更新區塊會從胤中移除 其項目。 [G] 在ABL填充操作期間,在從胤移除已關閉更新區 塊的項目時’會將其關聯之已抹除原始區塊的項目移至 CBL 〇 98705.doc 1269154 [Η] 在抹除控制區塊時,會將其所用項目新增至CBL。 [I] 在ABL填充操作期間,會從EBB清單將已抹除區塊 項目移至ABL,且被賦以已抹除之ABL區塊的屬性。 [J] 在ABL填充操作期間修改所有相關的ABL項目後, ABL中的區塊位址將取代ABB清單的區塊位址。 [K] 和控制寫入期間的ABL填充操作同時進行,將CBL 中已抹除區塊的項目移至CBB清單。 [L] 在MAP交換操作期間,從CBB清單將所有相關項目 移至MAP目的地區段。 [M] 在MAP交換操作期間,從CBB清單將所有相關項目 移至MAP來源區段。 [N] 在MAP交換操作期間的[L]與[M]之後,從CBB清單 將所有其餘項目移至EBB清單。 [O] 在MAP交換操作期間的[N]之後,如果可能,從MAP 來源區段移動除了在[Μ]中移動之項目以外的項目,以填充 EBB清單。 邏輯對實體位址轉譯 為了在快閃記憶體中尋找邏輯區段的實體位置,圖2所示 的邏輯對實體位址轉譯模組140可執行邏輯對實體位址轉 譯。除了最近已更新的邏輯群組外,可以使用常駐在控制 器RAM 130中快閃記憶體200或GAT快取記憶體的群組位址 表(GAT)執行大多數的轉譯。最近已更新之邏輯群組的位址 轉譯會需要查詢主要常駐在控制器RAM 130中之更新區塊 的位址清單。因此,邏輯區段位址之邏輯對實體位址轉譯 98705.doc -62- 1269154 的程序端視和區段所在之邏輯群組關聯之區塊的類型而 定。區塊的類型如下:完整區塊、循序資料更新區塊、混 亂資料更新區塊、關閉的資料更新區塊。 圖19為顯示邏輯對實體位址轉譯程序的流程圖。實質 上’先使用邏輯區段位址查詢各種更新目錄(例如,開啟的 更新區塊清早及關閉的更新區塊清單),即可尋找對靡的中 繼區塊及實體區段。如果關聯的中繼區塊並不屬於更新程 序的部分,則由GAT提供目錄資訊。邏輯對實體位址轉譯 包括以下步驟: 步驟8 0 0 ··給定一邏輯區段位址。 步驟810:查詢控制器RAM中開啟之更新區塊清單614的 給定邏輯位址(見圖15與18)。如果查詢失敗,繼續進行至步 驟82〇’否則繼續進行至步驟83〇。 步驟820 :在關閉的更新區塊清單616中查詢給定的邏輯 位址。如果查詢失敗,則給定的邏輯位址並不屬於任何更 新程序的部分;繼續進行至步驟87〇,以進行gat位址轉 譯。否則繼續進行至步驟86〇,以進行關閉的更新區塊位址 轉譯。 步驟830:如果含有給定邏輯位址的更新區塊為循序,則 繼續進行至步驟840,以進行循序更新區塊位址轉譯。否則 繼續進行至步驟85〇,以進行混亂更新區塊位址轉譯。 γ驟840 ·使用循序更新區塊位址轉譯來取得中繼區塊位 址。繼續進行至步驟880。 y驟8 5 0 ·使用混亂更新區塊位址轉譯來取得中繼區塊位 98705.doc 1269154 址。繼續進行至步驟880。 步驟860 :使用關閉的更新區塊位址轉譯來取得中繼區塊 位址。繼續進行至步驟88〇。 步驟870 ·•使用群組位址表(GAT)轉譯來取得中繼區塊位 址。繼續進行至步驟8 8 0。 步驟880 :將中繼區塊位址轉換為實體位址。轉譯方法端 視中繼區塊是否已經重新連結而定。 步驟890·•已取得實體區段位址。 下文將更詳細說明該等各種位址轉譯處理: 循序更新區塊位址轉譯(步驟84〇) 從開啟之更新區塊清單614 (圖15及ι8)的資訊即可直接 7G成和循序更新區塊關聯之邏輯群組中目標邏輯區段位址 的位址轉譯,說明如下。 1 ·從清單的「頁面標記」及「寫入的區段號碼」欄位可 決定目標邏輯區段是否已經配置在更新區塊或其關聯的原 始區塊中。 厶從清單中可讀取適合目標邏輯區段的中繼區塊位址。 3 ·從合適的「頁面標記」攔位可決定中繼區塊内的區段 位址。 混亂更新區塊位址轉譯(步驟85〇) 和此亂更新區塊關聯之邏輯群組中目標邏輯區段位址的 位址轉譯序列如了。 •如果彳疋RAM中的混亂區段清單決定區段是最近寫入的 Q段’則直接從其在此清單中的位置即可完成位址轉譯。 98705.doc 1269154 2. 在CBI區塊中最近寫入的區段在其混亂區塊資料攔位 内含有和目標邏輯區段位址相關之混亂更新區塊的實體位 址。其在間接區段索引欄位内也含有有關此混亂更新區塊 最後寫入之CBI區段之CBI區塊内的位移(見圖16A-16E)。 3. 該些欄位中的資訊均被快取儲存於RAM之中,而不需 要於後續的位址轉譯期間來讀取該區段。 4·讀取步驟3由間接區段索引欄位所識別的CBI區段。 5. 將最近被存取之混亂更新子群的直接區段索引欄位快 取儲存於RAM之中,而不需要實施步驟4處的讀取以重複存 取相同的混亂更新區塊。 6. 在步驟4或步驟5讀取的直接區段索引欄位接著可識別 有關含有目標邏輯區段位址之邏輯子群組的CBI區段。 7·從步驟6中識別的CBI區段讀取目標邏輯區段位址的混 亂區塊索引項目。 8·該最近被讀取之混亂區塊索引欄位可被快取儲存於控 制器RAM之中,而不需要實施步驟4與步驟7處的讀取以重 複存取相同的邏輯子群。 9·混亂區塊索引項目可定義目標邏輯區段在混亂更新區 塊或關聯之原始區塊中的位置。如果目標邏輯區段的有效 複本係在原始區塊中,則可使用原始中繼區塊及頁面標記 資訊將其尋找。 關閉的更新區塊位址轉譯(步驟860) 從關閉之更新區塊清單的資訊即可直接完成和關閉之更 新區塊關聯之邏輯群組中目標邏輯區段位址的位址轉譯 98705.doc -65- 1269154 (參見圖18),說明如下。 1·從清單中可讀取指派給目標邏輯群組的中繼區塊位 址。 、 2·從清單中的「頁面標記」欄位可決定中繼區塊内的區 段位址。 GAT位址轉譯(步驟87〇) 如果邏輯群組不會受到開啟或關閉之區塊更新清單的參 考,則其在GAT中的項目為有效。由GAT所參考之邏輯群組 中目標邏輯區段位址的位址轉譯序列如下。 1·評估RAM中可用GAT快取記憶體的範圍,以決定目標 邏輯群組的項目是否含在GAT快取記憶體中。 2·如果在步驟1發現目標邏輯群組,則gat快取記憶體含 有完整的群組位址資訊,包括中繼區塊位址及頁面標記, 因此允許轉譯目標邏輯區段位址。 3·如果目標位址不在GAT快取記憶體中,則必須讀取目 標GAT區塊的GAT索引,以識別有關目標邏輯群組位址之 G AT區段的位置。 4·最後存取之GAT區塊的GAT索引會保留在控制器RAM 中,且不用從快閃記憶體讀取區段即可存取。 5. 將一份由每個GAT區塊之中繼區塊位址及被寫入每個 GAT區塊之中的區段數量所組成的清單保存在控制器raM 之中。假使步驟4處無法取得必要的GAT索引,則可立刻從 快閃記憶體之中讀取。 6. 從步驟4或步驟6處所獲得的GAT索引所定義的gat區 98705.doc -66 - 1269154 塊中的區段位置中讀取有關目標邏輯群組位址的gat區 段。以含有目標項目之區段的子分割來更新gat快取記憶 7·從目標GAT項目内的中繼區塊位址及「頁面標記」攔 位取得目標區段位址。 中繼區塊對實體位址轉譯(步驟880) 如果和中繼區塊位址關聯的旗標代表中繼區塊已經被重 新連結,則會從BLM區塊讀取相關的LT區段,以決定目標 區段位址的抹除區塊位址。否則,會從中繼區塊位址決直 接定抹除區塊位址。 控制資料管理 圖20顯示在記憶體管理的操作過程中,在控制資料結構 上執行的操作階層。資料更新管理操作可對常駐在raM中 的各種清單發生作用。控制寫入操作可對快閃記憶體中各 種控制資料區段及專用區塊發生作用,並還能和RAM中的 清單交換資料。 貧料更新管理操作會於RAM中針對ABL、cbl、以及該 混iL區段、士 ^丄 塊或控制 ABL 〇 當: 的某個項 被寫入— 清單。
ABL 〇 控制寫入操作會使得來自 RAM中之控制資料結構的資訊 98705.doc 1269154 被寫入快閃記憶體中的控制資料結構之中,必要時會隨之 更新快閃記憶體與RAM之中其它支援的控制資料結構。當 該ABL不含欲被配置為更新區塊的已抹除區塊的任何其它 項目時,或是再寫入該CBI區塊時,便會觸發控制寫入操作。 在較佳具體實施例中,會在每個控制寫入操作期間執行 ABL填充操作、CBL清空操作、及EBM區段更新操作。當 含有EBM區段的MAP區塊已滿時,會將有效的EBM及MAP 區段複製至已配置的已抹除區塊,然後抹除先前的MAP區 塊。 在每個控制寫入操作期間,寫入一個GAT區段,也會隨 著修改關閉的更新區塊清單。當GAT區塊已滿時,將執行 G AT再寫入操作。 如上述,經過幾次的混亂區段寫入作業之後,便會寫入 一 CBI區段。當CBI區塊變滿時,會將有效的CBI區段複製 到已配置的抹除區塊中,然後抹除先前的CBI區塊。 如上述,MAP交換操作係執行於EBM區段的EBB清單中 沒有其他已抹除的區塊項目時。 每次再寫入MAP區塊時,會在專用的μAPA區塊中寫入用 於記錄MAP區塊之目前位址的MAP位址(ΜΑΡΑ)區段。當 ΜAPA區塊已滿時,會將有效的μAPA區段複製至已配置的 已抹除區塊,然後抹除先前的ΜΑΡΑ區塊。 每次再寫入ΜΑΡΑ區塊時,會將啟動區段寫入目前的啟動 區塊中。當啟動區塊已滿時,會將目前版本之啟動區塊的 有效啟動區段複製至備份版本,然後該版本再變成目前的 98705.doc -68- 1269154 版本。先前的目前版本會被抹除並變成備份版本,並會將 有效的啟動區段寫回其中。 分散在多個記憶體平面上之記憶體的對齊 如先前結合圖4及圖5A-5C所述,為了增加效能,會平行 操作多個記憶體平面。基本上,各平面有其自己的感測放 大器組作為讀取及程式電路的部分,以平行服務跨越平面 之纪憶體單70的對應頁面。在結合多個平面時,可平行操 作多個頁面,使得效能更為提高。 根據本發明的另__方面,對於—被組織成複數個可抹除 區塊且由多個記憶體平面所構成(因而可平行地讀取複數 個邏輯單元或是將複數個邏輯單元平行地程式化至該等多 個平面之+)的記龍㈣,f要更㈣存於料記憶體平 面中第-區塊的原始邏輯單元時’會供應所需以將已更新 的邏輯單元保持在和原始相同的平面中。這可藉由以下方 式來完成:將已更新的邏輯單元記錄到仍在相同平面中之 第二區塊的下一個可用位置。較佳將邏輯單元儲存在平面 中和其中其他版本相同的位移位置,使得給定邏輯單 所有版本係由相同組的感測電路予以服務。 、 ------- e w n τ,以邏輯單元的目 本來填補介於上—個程式化記憶體單元與下—個 對齊記憶體單元之間的任何中間間隙。將邏輯上位 後被程式化之邏輯單元後㈣該等邏輯單元的期 及邏輯上位於被儲存在該下一個 一 1固可用的平面排列記作 凡中之邏輯單元前面的該等邏輟 *、 、饵早兀的目前版本填少 98705.doc -69- 1269154 中’便可完成該填補作業。 依此方式,可將邏輯單元的所有版本維持在具有和原始 相同位移的相同平面中,致使在廢棄項目收集操作中,不 必從不同平面擷取邏輯單元的最新版本,以免降低效能。 在一項較佳具體實施例中,可利用該等最新的版本來更新 或填補該平面上的每個記憶體單元。因此,便可從每個平 面中平行地讀出一邏輯單元,其將會具有邏輯順序而無需 進一步重新排列。 此方案藉由允許平面上重新排列邏輯群組之邏輯單元的 最新版本,且不必收集不同記憶體平面的最新版本,而縮 短彙總混亂區塊的時間。這很有好處,其中主機介面的效 能規格可定義由記憶體系統完成區段寫入操作的最大等待 時間。 圖21顯示以多個記憶體平面所構成的記憶體陣列。記憶 體平面可以來自相同的記憶體晶片或多個記憶體晶片。各 平面910具有其自己的讀取及程式電路912以平行服務記憶 體單兀的頁面914。在不失一般性之下,在所示的範例中, 記憶體陣列具有四個平行操作的平面。 一般而g,邏輯單元是主機系統存取的最小單元。通常 一個邏輯單元是尺寸512位元組的區段。頁面是平面中平行 項取或程式化的最大單元。通常一個邏輯頁面含有一或多 個邏輯單兀。因此,在結合多個平面時,可將平行讀取或 程式化的最大總數單元視為記憶體單元的中繼頁面,其中 中繼頁面係由多個平面中之各平面的頁面所構成。例如, 98705.doc -70- 1269154 如MP〇之中繼頁面具有四個頁面,即來自各平面P0、P1、 p2、及P3的頁面,其中平行儲存邏輯頁面Lp〇、Μ、%、 LP3。因此,和僅在—個平面中的操作相比,記憶體的讀取 及寫入效能增加四倍。 圯k體陣列會進一步組織成複數個中繼區塊,如 ° MBj,其中各中繼區塊内的所有記憶體單元可成 為個早70 -起抹除。如MB〇的中繼區塊係以多個記 位置所構成,以儲存資料的邏輯頁面914,如LIVlPn 乂中 ㈣塊中的邏輯頁面係根據其填充於中繼區塊的順序,按 預定的序列分布於四個平面p〇、pi、p2&p3卜例如,在 按邏輯^循序順序填充邏輯頁面時,會以第-平面中第一 頁面弟一平面中第二頁面等等的循環順序造訪平面。在 到達最後的平面後,填充會以循環的方式返回, 個中繼頁面的第一芈而舌如叫D 下 平㈣成工開依此方式,即可在所有 千面均為平行㈣時平行存取連續的邏輯頁面。 二般^ ’如果有W個平面平行操作中及中繼 循相序進行填充,射㈣Μ” 面 常:在平面X中’其中x = _w。例如,有四=將 W 4 ’在按邏輯循序順序填充 將常駐在一4給定的平面中,二;:頁_ 夂印柃雜τ 即千面丨,如圖21所示。 各3己隐體平面中的記憶體操 912夾勃;^ , 、、且嗔取/寫入電路 ㈣批。 讀取/寫人電路的資料係透過在控制器 之工制下的t料匯流排93G進行傳二ς 衝器922可妳i次』丨 & K為920中的緩 了'…料匯流排93〇協助緩衝資料的傳送。尤其 98705.doc 1269154 在第-平面的操作需要存取第二平面的資料時,將*要兩 =驟的程序。控制器會先讀出第二平面的資料,二經 由貝料匯流排及緩衝器傳送至第一平面。事實上, 夕 數的記憶體架構中,在兩個不同的 ,在大多 U幻诅70線之間傳送資料也 舄要透過資料匯流排920交換資料。 至少,這涉及在-平面中從—組讀取/寫人電路傳送出 去’然後進入另一平面中的另一組讀取/寫入電路。在盆中 平面係來自不同晶片的例子中,冑需要在晶片之間傳送。 本發明可提供記憶體區塊管理的結構及方案,以避免一個 平面從另一個平面存取資料,以便將效能最大化。 如圖21所示,一中繼頁面係由多個邏輯頁(各位於其中一 個平面之中)所構成。每個邏輯頁可能係由—個以上的邏輯 單元所組成。當資料欲以逐個邏輯單元的方式被記錄於一 跨越該等平面的區塊中日寺,每個邏輯單元便將會落在該等 四個自己憶體平面之一中。 在更新邏輯單元時會發生平面對齊的問題。在目前的範 例中,為了便於解說,將邏輯單元視為512位元組的邏輯區 段,一個邏輯頁面也是一個邏輯單元寬。由於快閃記憶體 不允許未先抹除整個區塊而再寫入區塊的一部分,因此不 會將邏輯頁面的更新寫入現有的位置之上,而是將其記錄 在區塊未使用的位置中。然後會將邏輯單元的先前版本視 為/匈汰在一些更新後’區塊可含有一些由於已經更新因 此變成、/匈次的邏輯單元。然後此區塊可以說是「不乾淨」, 而廢棄項目收集操作會忽略不乾淨的邏輯單元而收集各個 98705.doc -72- 1269154 璲輯單元的最新版本並按邏輯上循序順序將其重新記錄在 或多個新的區塊中。然後抹除及再循環不乾淨的區塊。 田忒已更新邏輯單元被記錄於某一區塊中下個未被使用 的位置之中時,其通常不會被記錄於和先前版本相同的記 憶體平面之中。當要進行廢棄項目收集操作時,如彙總或 壓縮,一邏輯單元的最新版本便會被記錄於和原來相同的 平面之中,以維持原來的順序。然而,如果必須從另一個 平面擷取最新版本,效能將會降低。 因此,根據本發明的另一方面,給定平面之第一區塊的 原:邏輯單元。這可藉由以下方式來完成:將已更新的邏 輯單元記錄到仍在相同平面中之第二區塊的下一個可用位 置。在一項較佳具體實施例中,會以和原始區塊中原始邏 輯單元的相同相對位置之邏輯單元的目前版本,填補(即, 藉由複製來填充)任何在上一個程式化記憶體單元和下一 個可用平面對齊記憶體單元之間的中間間隙。 圖22A顯示根據本發明的一般實施例,具有平面對齊之更 新之方法的流程圖。 步驟950 ·於-被組織成複數個區塊的非揮發性記憶體之 一每個區塊均被分割成可一起抹除的複數個記憶體單 疋,母個記憶體單元係用於儲存一邏輯單元的資料。 /驟952 ·以多個記憶體平面構成記憶體,各平面具有一 組用於平行服務記憶體頁面的感測電路,該記憶體頁面含 有一或多個記憶體單元。 步驟954:依照第—順序將邏輯單元的第_版本儲存於一 98705.doc -73- 1269154 第一區塊的複數個記情轉留- , 炎㈣》己u體早疋之中,每個第—版 几均被儲存於該等記憶體平面之一中。 、輯早 步驟956 :依照不同於第_ 丨貝序的弟一順序將邏輟 後續版本儲存於一第二區 ^ 輯早兀的 於和Μ 免之中,母個後續版本均被儲存 瓦和遺弟一版本相同的記悴 廿 置一 ^ 士 心體千面中下一個可用的記情體 早兀之中,以便可剎用兮鉍α U丨心篮 …六 相同的感測電路從該相同的平 面中來存取__邏輯單元的所有的版本。 圖22Β顯示在圖22Α所示之流程 較佳具體實施例。 子更新之步驟的 步驟956,包括步驟957、步驟㈣及步驟959。 步驟957:將各區塊分割成中繼頁面,各 平面的一頁面所構成。此牛 、、,頁面係以各 執行。 #成Λ步驟可在儲存步驟的任-項之前 步驟958··根據和第一順序 後續版本儲存至第·^ /㈣-順序將邏輯單元的 頁面中和第一版本相同位銘沾τ , 有Ϋ繼 …個可用記憶體單元中。 γ驟9 5 9 ·和儲在溫絲一 ,..輯早兀的後續版本同時 一順序複製邏輯單元的 予進订根據第 來填補在竹/以逐個中繼頁面的方式 术異補在该下—個可用記憶 體單元。 乏引的任何未使用記憶 圖23Α顯示不顧平面對齊按 塊之邏輯單元& 貝斤冩入至循序更新區 、铒早兀的乾例。該 係一侗、器祐广W ^母個邏輯頁的大小均 係個邏輯區段,例如ls〇、LSi. 每個區抽,加L Λ ; °亥四平面的範例中, 鬼(例如ΜΒ〇)均可視為被分 ~攸刀割成複數個中繼頁面 98705.doc 74· 1269154 MP〇、MP!、…,其中每個中繼頁面(例如MP〇)均含有四個 區段(例如LSO、LSI、LS2、以及LS3),每個區段分別來自 平面P0、P1、P2、以及P3。所以,該區塊會以循環順序逐 個區段地被填入平面P0、PI、P2、以及P3中的邏輯單元之 中0 在主機寫入操作#1中,正在更新邏輯區段LS5-LS8中的資 料。會將更新成為LS5’-LS8’的資料記錄在始於第一可用位 置之新配置的更新區塊中。 在主機寫入操作#2中,正在更新邏輯區段LS9-LS12中資 料的程式段。會將更新成為LS9,-LS12,的資料記錄在緊接在 最後寫入結束處之後之位置中的更新區塊中。圖中顯示兩 次主機寫入的方式係以邏輯循序方式將該更新資料記錄於 該更新區塊之中,即LS5,-LS12,。更新區塊可視為循序更新 區塊,因其已按邏輯上循序的順序被填補。記錄在更新區 塊中的更新資料可淘汰原始區塊中對應的資料。 然而,更新邏輯區段係根據下一個可用位置但卻不顧平 面對齊而記錄在更新區塊中。例如,區段LS5原來是記錄在 平面P1中,但已更新的LS5,現在則記錄在?〇中。同樣地, 其他更新區段全部無法對齊。 圖2 3 B顯示不顧平面對齊按非循序順序寫人混亂更新區 塊之邏輯早元的範例。 在主機寫入操作# 1中,合爭 曰更新儲存於原始中繼區塊之乡 疋邏輯群組的邏輯區段τ 干斗匕仅Uio-Lsii。已更新的邏輯區名 LSlO’-LSll’會被儲存到新配 罝的更新區塊中。此時,更系 98705.doc 1269154 區塊為循序的更新區塊。在主機寫入操作,會將邏輯 區I又LS5-LS6更新成為LS5f-LS6’及將其記錄在緊接上一個 寫入之後之位置的更新區塊中。這可將循序的更新區塊轉 換為混亂的更新區塊。在主機寫入操作#3,再次更新邏輯 區段LS 10’及將其記錄在更新區塊的下一個位置中成為 LS10”。此時,更新區塊中的!^1〇”可取代先前記錄中的 LS10’ ’而LS10’又可取代原始區塊中的Lsl〇。在主機寫入 操作#4中,再次更新邏輯區段LS10的資料及將其記錄在更 新區塊的下一個位置中成為LS10”’。因此,LS10,,,現在是邏 輯區段LS10的最後且唯一有效的版本。LS10的所有先前版 本現在均已淘汰。在主機寫入操作# 5中,會更新邏輯區段 L S 3 0的資料及將其§己錄在更新區塊中成為l s 3 0f。在此範例 中’可按任何順序及以任何重複將邏輯群組内的邏輯單元 寫入至混亂更新區塊。 同樣地’更新邏輯區段係根據下一個可用位置但卻不顧 平面對齊而記錄在更新區塊中。例如,區段LS 10原來是記 錄在平面P2(即,MP2、第三平面)中,但更新LSI 0,現在卻 記錄在P0(即,MP(/’第一平面)中。同樣地,在主機寫入#3 中’會再次將邏輯區段LS10更新成為LS10”並被放在結果 也在平面Pi^MPi’的第一平面)的下一個可用位置中。因此, 一般而言,從圖中可見’將更新區段記錄至區塊的下一個 可用位置會使更新區段被儲存在和其先前版本不同的平面 中〇 具有以填補填充之中間間隙之平面對齊的循序更新區塊 98705.doc -76- 1269154 圖24A顯示根據本發明的一項較佳具體實施例,具有平面 對齊及填補之圖23A的循序更新範例。 在主機寫入操作#1中,會將更新成為LS5I-LS8,的資料記 錄在始於第一可用平面對齊位置之新配置的更新區塊。在 此例中,LS5原來在P1中,?1是中繼頁面的第二平面。因此, 會在更新區塊之第—可用中繼頁面Mp。的對應平面中程式 化LS5 LS7 a夺,會以原始區塊中繼頁面中在[μ前之 邏輯區段LS4的目前版本填補Μρ〇ι中未使用之第一平面的 間隙。然後將原始LS4處理成淘汰的資料。然後將剩餘的 LS8’記錄在下一個中繼頁面Μρι,的第一個平面中並已平面 對齊。 在主機寫入操作#2中,會將更新成資料記 錄在下-個可用平面對齊位置的更新區塊中。因此,、會將 LS9’記錄在下一個可用的平面對齊記憶體單元中,即⑽丨| 的第二平面。此時,不會造成任何間隙:,也不需要任何填 補。更新區塊可視為循序更新區塊,因其已按邏輯上循序 的順序填人。此外,其將因各更新邏輯單元和其原始的— 樣都在相同平面中而已平面對齊。 具中間間隙之平面對齊的混亂更新區塊 圖24B顯示根據本發明的一項較佳具體實施例,具有平面 對齊及不具有任何填補之圖23B的混亂更新範例。 在主機寫入操作#1中,將已更新的邏輯區段⑶^川, 儲存在新配置的更新區塊中。並不會將其儲存在下一個可 用的記憶體單元中,而是將其儲存在下一個可用的平面對 98705.doc 1269154 齊記憶體單元中。由於LSI 0,及LSI 1,原來係分別儲存在平面 P2及P3(原始區塊之MP2的第三及第四平面),下一個可用的 平面對齊記憶體單元將在更新區塊之MP〇,的第三及第四平 面中。此時,更新區塊為非循序,其中將按「未填充」、「未 填充」、LS 10’及LSI Γ的順序填充中繼頁面MP〇的頁面。 在主機寫入操作#2中,會將邏輯區段LS5-LS6更新成為 LS5LLS61及將其記錄在下一個可用之平面對齊的更新區塊 中。因此,會將原始區塊中在ΜΡι之第二(ρι)及第三(p2)平 面或記憶體單元的LS5,及LS6,程式化至更新區塊中下一個 可用中繼頁面MP!’之對應的平面中。這會在ΜΡι,中留下在 前面之未使用的第一平面。 在主機寫入操作#3,再次更新邏輯區段LS1〇,及將其記錄 在更新區塊的下一個平面對齊位置中成為LS丨〇”。因此,會 將其寫入下一個可用的第三平面,即在Μιγ中。這會在 的最後平面及MP/的前兩個平面中留下位在前面的間隙。 這將會淘汰在MP〇,中的LS10,。 在主機寫入操作#4中,會再次更新邏輯區段1^1〇"中的資
料並將其記錄在更新區塊中中繼頁面MP〆的下一個可用第 二=面中成為LS10",。因此,Lsl〇,,,現在是邏輯區段lsi〇 的最後且唯-有效的版本。這會留下由MP?之最後平面及 MP’之前兩個平面所組成的間隙。 在主機寫入操作#5中’會更新邏輯區段LS30的資料及將 ,、己錄在更新區塊中成為LS3G,。由於原始的^㈣常駐於中 繼頁面❹2或第三平面巾,因此會將其寫人更新區塊中下 98705.doc -78- 1269154 一個可用的第二平面。,士拄 ^ 乐一十面此時,其將是MP4,的第三平面。將 因mp3’的最後平面與Μιγ的前兩個平面而產生間隙。因 此範例顯示可以平面對齊的方式,按照任何順序及任 意重複’將—邏輯群組内的複數個邏輯區段寫人至-混亂 更新區塊中。在後續的廢棄項目收集操作中,將便利地由 相同組的感測電路來服務給定邏輯區段的所有版本,尤其 是最新版本。 具有以填補填充之中間間隙之平面對齊的混亂更新區塊 圖24C顯示根據本發明的另一項較佳具體實施例,具有平 面對齊及填補之圖23Β的混亂更新範例。 此操作和圖24Β所示的相同,但中間間隙會先以填補加以 填充。在主機寫入操作#1中,會先以常駐在原始區塊之LS8 及LS9的目前版本,來填補由中繼頁面Μιγ之第一及第二未 使用的平面所產生的間隙。這會使原始區塊中的^^8及9 淘汰。此時,更新區塊是循序的更新區塊,其中中繼頁面 MP〇’的填充順序為 LS8、LS9、LS10,及 LS11,。 在主機寫入操作#2中,將因MPi,中在前面之未使用的第 平面而產生間隙’其將先以L s 4進行填補。這將使原始區 塊中的LS4淘汰。和之前一樣,第二寫入可將循序更新區塊 轉換為混亂更新區塊。 在主機寫入操作#3中,將因MPi,中未使用的最後平面及 MP/的前兩個平面而產生間隙。會先以在上一個程式化之 LS6之後的LS7來填補MP〗’的最後平面,然後以在l§ 1 〇之前 的邏輯單元(即LS8&LS9)來填補Μΐγ的前兩個平面。這會 98705.doc •79- 1269154 淘汰MP〇,中的LS10,及原始區塊中的LS7-LS9。 在主機寫入操作#4中,將產生由MP2,的最後平面及MIV 的前兩個平面所組成的間隙。ΜΡ2,的最後平面可由中繼頁 面MIV中在最後寫入之LS1〇"之後之邏輯單元目前版本的 LS11進行填補。Mp3’的-兩個平面分別可藉由[Μ及[μ 進行填補,和中繼頁面MP3,中在LS10”,之前的邏輯單元一 樣。 在主機寫入操作#5中,也會跟著分別以LS11,、LS28及 LS29來填補從ΜΙγ之最後平面至MJV前兩個平面之間的間 隙。因此,此範例顯示可以平面對齊的方式,按照任何順 序及任意重複,將一邏輯群組内的複數個邏輯區段寫入至 一混亂更新區塊中。 在較佳具體實施例中,—個中繼頁面含有來自個別平面 的循袠頁面。由於中繼頁面可以平行進行讀取或程式化, 因此以中繼頁面的粒度實施主機更新會很方便。在有任何 填補時,其可和按中繼頁面的更新邏輯單元一起記錄。 在圖24Α及圖24C之範例顯示的具體實施例中,在各主機 寫入期間,會在要程式化更新之平面對齊記憶體單元之前 j使用的,己fe體單元上執行填補。在下一個主機寫入之 則’會延後在上一個程式化之記憶體單元後之任何未使用 記憶體單元的動作。一般而言,會在各中繼頁面的邊界内 ,補任何在前面之未使用的記憶體單元。換言之,如果在 則面的間隙跨越於兩個中繼頁面之上,則按各中繼頁面合 k的L輯上循序順序在各中繼頁面上執行填補,但不顧橫 98705.doc -80 - 1269154 跨邊界的連續性 如為部分寫入, 。在彙總區塊時,最後寫人的中繼頁面 可藉由填補進行完整填充。 在另-項具體實施财,任何部分填充的中繼頁面可在 移至下一個中繼頁面之前進行完全填補。 記憶體單元粒度 根據個別記憶體架構所支援的彈性,讀取或程式化的單 兀可以有各種變化。個別平面的獨立特性允許獨立讀取及 程式化中繼頁面中個別平面的各頁面。上述範例具有成為 各平面中頁面的程式化最大單元。在中繼頁㈣,可以有 小於所有頁面的局部中繼頁面程式化。例如…程式化 中繼頁面的前三個頁面,然後再程式化第四個頁面。 j有,在平面層級,一個實體頁面可含有一或多個記憶 體單元如果各圯憶體單元可以儲存一個區段的資料,則 :個實體頁面可儲存一或多個區段。一些記憶體架構可支 板局部頁面程式化,其中藉由抑制頁面内選定記憶體單元 的知式化,可在多個程式化編碼過程上,在不同的時間個 別程式化選定的邏輯單元。 在s己愧體平面内用於邏輯群組之混亂更新的邏輯單元對齊 在區塊記憶體管理系統中,按邏輯上循序順序將邏輯單 7C的邏輯群組儲存於原始區塊中。在更新邏輯群組時,會 將邏輯單元的後續版本儲存於更新區塊中。如果將邏輯單 7L混亂地(即,非循序)儲存於更新區塊中,最後會執行廢棄 項目收集以收集原始區塊及更新區塊中邏輯單元的最新版 本’以循序將其整合為新的原始區塊。如果將給定邏輯單 98705.doc •81- 1269154 元的更新版本全部儲存在和其原始區塊中原始版本對齊的 更新區塊中,致使相同組的感測電路可以存取所有版本, 則廢棄項目收集操作會更有效。 根據本發明的另一方面,在上述區塊記憶體管理系統 中’在將記憶體組織成一系列的記憶體頁面時(其中記憶體 單元的各頁面係由一組感測電路進行平行服務),如果給定 邏輯單元的所有版本在所儲存的頁面中全部具有相同的位 移位置,則所有版本均已對齊。 圖25顯示其中各頁面含有兩個用於儲存兩個邏輯單元 (如兩個邏輯區段)之記憶體單元的範例記憶體組織。在原始 區塊中,由於邏輯區段係按邏輯上循序順序加以儲存,會 將邏輯區段LSO及LSI儲存於頁面p〇中,將邏輯區段LS2及 LS3儲存於頁面卩丨中,及將邏輯區段LS4及LS5儲存於頁面 P3中等。可以看出在此兩個區段的頁面中,左邊算起第一 個區段的頁位移為「〇」,而第二個區段的頁位移為「1」。 在更新循序儲存於原始區塊中之邏輯區段的邏輯群組 時會將已更新的邏輯區段記錄在更新區塊中。例如,邏 輯區段LS2常駐在原始區塊中具有位移「〇」的頁面p〇中。 如果在第一寫入中,如果將LS2更新為LS2,,則會將其儲存 於具有相同頁面位移「〇」之更新區塊的第一可用位置。這 會是在頁面P0,的第一記憶體單元中。如果在第二寫入中, 將LS5更新為LS5’,則會將其儲存於具有相同頁面位移「工」 ^更新區塊的第一可用位置。這會是在具有頁面ρι,之位移 「1」的第二記憶體單元中。然而,在儲存LS5,之前,會在 98705.doc 1269154 其中複製至少在各頁面中將會維持邏輯循序順序之邏輯區 段的最新版本,以先填補P0,中具有位移「〗」的未使用記 憶體單元及P1’中的位移「〇」。此時,會將LS3複製至p〇,中 位移「1」位置及將LS4複製至ΡΓ中位移「〇」位置。如果 在第三寫入中,再次將LS2,更新為LS2,,,則會將其儲存在 P2’的位移「〇」中。如果在第四寫入中,分別將^^及^^ 更新為LS22,及LS23’,則會分別將其儲存在p3,的位移「〇」 及「1」中。然而,在那之前,會以LS3填補在P2,中具有位 移「1」的未使用記憶體單元。 上述更新序列假設可以在頁面内程式化個別區段。對於 一些其中不支援局部頁面程式化的記憶體架構,必須一起 程式化頁面内的區段。在匕時,在第一寫入中,會將LS2,及 LS3 —起程式化至po’中。在望— 仕弟一寫入中,會將LS4及LS5, 一起程式化至ΡΓ中。在第二宜λ ▲ a 乐—罵入中,會將LS2,,及LS3—起 程式化至Ρ2’中等等。 中繼頁面内的平面對齊 或者,程式化的單元可具有中 ^ ’〒、、塵頁面的粒度。如果寫入 混亂更新區塊的粒度變成中繼 又甲、、板頁面,則結合圖16Α及16Β所 述之CBI區塊中的項目將和中 τ、、’頁面有關,而非和區段有 關。增加的粒度會減少必須Α、、Η 、馬此亂更新區塊所記錄之項目 的數量,並允許直接消除索引 、
1及母個中繼區塊使用單一 CBI 區段。 Τ ± 圖26Α和圖21的記憶體結構相同 段而非一個。因此,從圖中可見中 ’只是各頁面含有兩個 繼頁面ΜΡ〇現在各有其 能 98705.doc -83 - 1269154 夠儲存兩個邏輯單元之資料的頁面。如果各邏輯單元是一 個區段,則將邏輯區段循序儲存於平面p〇tLS〇及LS1及平 面P1中LS2及LS3等的MP〇之中。 圖26B顯示圖26A所示之具有以線性圖方式布局之記憶 體單元的中繼區塊。和圖21的單一區段頁面相比,邏輯區 段係以循環的方式儲存於各頁面中具有兩個區段的四個頁 面中。
-般而言,如果有W個平行操作的平面及每個頁面有〖個 記憶體單元,且按邏輯上循序順序填充中繼區塊,則中繼 區塊中第_輯頁面將常駐於平面父中,其中x = k,M〇D 有四個平面,W==4,每個 W,其中 k’ = INT(k/K)。例如 則對於k = 5,即指第五個邏輯區段
頁面2個區段,K 4所給定的平面中,即平面2, 同原理適用於實施上述的平面 LS5,其將常駐於由2 m〇d 如圖24A所示。一般而言,相 對齊。 上述範例係用於多重平 卞卸木構中千面和頁面的對齊。在 具有多個區段之頁面的例子中, J 丁甲也維持頁面内的區段對齋 會很有利。依此方#,你 弋使用相同組的感測電路有利於相同 峰輯區段的不同版本。可有 J百效執订如區段之重新配置及「祷 取·修改-寫入」的操作。/ 口貝 、 ^背頁面内的區段順序時,可以 採用和對齊頁面盘承 而定,叮 千面的㈣技術。還有根據具體實施例 以填補也可以不填補任何中間間隙。 不用填補的邏輯單元平面對冑 圖2 7顯示的替代性方案如: “ /、下.不用填補要從一個位置複 98705.doc -84 - 1269154 製到另一個的邏輯單元,即可在更新區塊中 ^ r進行平面對 齊。可將和更新區塊交叉之四個平面的部公 刀说為四個收集 接收自主機之平面對齊的已更新邏輯單元的緩衝器。八 在合適緩衝器的下一個可用記憶體單元中埴 开简,即可程式 化各接收自主機的邏輯單元。依照接收自該主機的邏輯單 元位址的序列,可能會有不同數量的邏輯單元被程式化於 每個平面之中。 混亂更新區塊MB’ i可含有邏輯中繼頁面之所有邏輯單元 的已更新版本,如用於MP,〇的。其還可含有小於中繼頁面 的所有邏輯單元,如用於^«^的。在撾卩^的例子中,可從 對應的原始區塊MB〇取得遺失的邏輯單元lS4。 此替代性方案在記憶體架構可支援平行讀取各平面的任 意邏輯頁面時尤其有效。依此方式,可在單一平行讀取操 作中讀取一個中繼頁面的所有邏輯頁面,即使個別邏輯頁 面並非來自相同列。 階段性程式錯誤處置 當區塊中有程式失敗時,則通常會將所有要儲存至區塊 的資料移至另一個區塊並將失敗的區塊標示為不良。根據 其中遇到失敗之操作的時序規格,可能沒有足夠的時間可 另外將儲存的資料移至另一個區塊。最壞的情況是在正常 廢棄項目收集操作期間的程式失敗,其中需要另一個相同 廢棄項目收集操作以將所有資料重新配置至另一個區塊。 於此情況中,可能會違反一給定主機/記憶體裝置所規定的 寫入等待時間限制,其該限制通常係被設計成容納一次(而 98705.doc -85 - 1269154 非兩次)廢棄項目收集操作。 圖28顯示其中缺陷區塊在彙總操作期間發生程式失敗時 會在另一個區塊上重複彙總操作的方案。在此範例中,區 塊1是按邏輯上循序順序儲存邏輯群組之完整邏輯單元的 原始區塊。為了便於解說,原始區塊含有區段A、b、c、 及D’各儲存一個子群組的邏輯單元。當主機更新群組的特 定邏輯單元時,會將邏輯單元的較新版本記錄在更新區塊 中,即區塊2。如先前結合更新區塊所述,根據主機而定, 此更新可按循序或非循序(混亂)順序記錄邏輯單元。最後, 會因更新區塊已滿或一些其他原因而關閉更新區塊以接收 進一步更新。當更新區塊(區塊2)關閉時,會將常駐於更新 區塊或原始區塊(區塊1)上之邏輯單元的目前版本彙總在新 的區塊(區塊3)上,以形成邏輯群組之新的原始區塊。此範 例顯示更新區塊在區段B及D中含有邏輯單元的較新版 本。為了方便,圖中將區段B及D顯示在區塊2中未必是其 記錄的位置,而是對齊其在區塊1中原始位置的位置。 在彙總操作中,會按循序順序將原來常駐於區塊1之邏輯 群組之所有邏輯單元的目前版本記錄於彙總區塊(區塊3) 中。因此,會先從區塊1將區段A的邏輯單元複製至區塊3, 接著再從區塊2將區段B複製至區塊3。在此範例中,在從區 塊1將區段C的邏輯單元複製至區塊3時,區塊3的缺陷將導 致程式失敗。 一種處置程式失敗的方式是在全新的區塊(區塊4)上重 新啟動彙總程序。因此,會將區段A、B、C、D複製在區塊 98705.doc -86 - 1269154 外上,然後丟棄缺 ^ ^ 小巩仃兩個举聪 的菜總操作’結果造成複製多達兩個充滿邏輯單元的區塊。 記憶體裝置具有完成特錢作的特㈣間容限。例如, 寫入記憶體裝置時’會預計寫入操作在指 ^成’已知為「寫人等待時間」。當記憶體裝置,如記憶 能二於!二機的資料時’會發信「busy(忙碌)」狀 r 果sy」狀態持續超過寫入等待時間的長 =主機會使寫人操作逾時,然後對寫人操作登錄例外或 =9以示意圖顯示具有允許足㈣間完成寫 作及菜總操作之時序或寫入等待時間的主機寫入操作。主 機以操作具有寫入等待時間L,其可提供足夠完成寫入 2機貧料^更新區塊之更新操作972的時_29(A))。如先 則在區塊管理系統所述,對更新區塊的主機寫入可觸發彙 2作。因此,時序亦允許在更新操作972之外的彙總操作 I圖29⑽。然而’必須重新啟動彙總操作以回應失敗的 菜總操作將會花費太多時間並超過指定的寫人等待時間。 根據,發明的另一方面’在具有區塊管理系統的記憶體 #在%間緊急的記憶體操作期間,區塊令的程式失敗可 、fe β中斷區塊(break〇ut bl〇ck)中的程式化操作來處 稍後在車又不緊急的時間,可將中斷前記錄在失敗區 塊中的資料傳送到其他可能也是中斷區塊的區塊。接著即 可丢棄失敗的區塊。依此方式,在遇到缺陷區塊時,不會 ''、頁傳:¾缺陷區塊中錯存的資料而損失資料及超過 98705.doc -87- 1269154 二:::=’即可加以處理。此錯誤處置對於廢棄項 /…、一重要,因此在緊急時間期間不需要對_勒 新的區塊重溏推/-龄/ 卜而要對薪 絲 複進仃整個作業。其後,在適宜的時間,藉由 ’配置到其他區塊,即可挽救缺陷區塊的資料。 圖糊示根據本發明一般方案之程式失敗處置的流程 圖。 步驟1002:將非揮發性記憶體組織成區塊,將各區塊名
割成可—起抹除的記憶體單元,各記憶體單it可儲存-遇 輯單元的資料。 程式失敗處置(第一階段) 乂驟1012·在第一區塊中儲存一連串邏輯單元的資料。 /驟014· & 了回應儲存一些邏輯單元後在第一區塊的 儲存失敗,在作為第—區塊之中斷區塊的第二區塊中儲存 後續的邏輯單元。 程式失敗處置(最後階段) 步驟1020 ·為了回應預定的事件,將儲存在第一區塊的 邏輯單元傳送至第三區力,其中第彡區塊和第r區塊可以 相同或不同。 步驟1022 :丟棄第一區塊。 圖3 1A顯示程式失敗處置的一項具體實施例,其中第三 (最後的重新配置)區塊和第二(中斷)區塊不同。在階段工期 間,會在第一區塊上記錄一連串的邏輯單元。如果邏輯單 凡是來自主機寫入,則可將第一區塊視為更新區塊。如果 邏輯單7L是來自壓縮操作的彙總,則可將第一區塊視為重 98705.doc -88- 1269154 新配置區塊。如果在某個點在區塊1中遇到程式失敗,則可 提供當作中斷區塊的第二區塊。在區塊丨及後續邏輯單元中 記錄失敗的邏輯單元會被記錄在中斷區塊上。依此方式, 不需要額外的時間來取代失敗的區塊丨及常駐其上的資料。 在中間階段II中,可在區塊1及區塊2之間取得序列中所 有的已記錄邏輯單元。 在最後階段III中,會將邏輯單元重新配置至可當作重新 配置區塊的區塊3,以取代失敗的區塊1及常駐其上的資 料。因此,可挽救已失敗區塊中的資料,然後再丟棄失敗 的區塊。會排定最後階段的時間,使其不會和任何同時之 δ己憶體彳呆作的時序衝突。 在此具體實施例中,重新配置區塊3和中斷區塊2有所區 分。這在中間階段期間已經以附加的邏輯單元記錄中斷區 塊時會很方便。因此,中斷區塊已經變成更新區塊,可能 不適於將缺陷區塊1的邏輯單元重新配置至其中。 圖3 1Β顯示程式失敗處置的另一項具體實施例,其中第三 (最後的重新配置)區塊和第二(中斷)區塊相同。階段 和圖31Α所示的第一具體實施例相同。然而,在階段m中, 會將缺陷區塊1的邏輯單元重新配置至中斷區塊2。這在未 以先前寫入操作之原始序列以外的附加邏輯單元記錄中斷 區塊2時會很方便。依此方式,儲存所論邏輯單元所需的區 塊最小。 在囊總期間之程式失敗處置的具艘實施例 程式失敗處置在彙總操作期間尤其重要。正常的彙總操 98705.doc -89- 1269154 其他有 是在另 期間。 作可將常駐在原始區塊及更新區塊中之邏輯群組的所有邏 輯單元的目前版本彙總至彙總區塊。在彙總操作期間,如 二在彙總區塊中發生程式失敗,則會提供另一個當作中斷 彙總區塊的區塊,以接收其餘邏輯單元的彙總。依此方式, 不必複製邏輯單i次以上,而仍可在正常彙總操作指定 的期間内完成例外處理的操作。在適宜的_,將群植所 有未處理完成之邏輯單元彙總至中斷區塊中,即可完成囊 總操作。適宜的時間將是在目前主機寫人操作以外的一此 時間執行彙總之期間的期 一個其中有更新但無關聯 間。一個此種適宜的時間 之彙總操作之主機寫入的 實質上,可將程式失敗處置的彙總視為以多階段來實 施。在第-階段中,在發生程式失敗後,會將邏輯單元囊 總至一個以上區塊中以避免彙總各邏輯單元一次以上。在 適宜的時間會完成最後階段’其中會將邏輯群組彙總至— 個區塊中’較佳藉由按循序順序將所有邏輯單元收集至中 斷莱總區塊中。 圖32A顯示&成彙總操作之初始更新操作的流程圖。 步驟1102 ··將非揮發性記憶體組織成區塊,將各區塊分 割成可-起抹除的記憶體單元,各記憶體單元可儲存 輯單元的資料。 v驟1104 ·將資料組織成複數個邏輯群組,各邏輯群組 為可儲存在區塊中之邏輯單元的群組。 v驟1112 ·接收封裝在邏輯單元中的主機資料。 98705.doc -90- 1269154 步驟1114 ·根據第—順库A楚 ^ |貝斤在第一區塊中儲存邏輯群組之 邏輯單元的第一版本,以建立邏輯群組的原始區塊。 步驟1116 :根據第二順序在第二區塊中儲存包括邏輯群 組之邏輯單元的後續版本,以建立邏輯群組的更新區塊。 步驟1119 :在上述部分的預定事件,執行廢棄項目收集 以在各種區塊中收集邏輯單元的目前版本,及將其重新記 錄至新的區塊。 圖32B顯示根據本發明一項較佳具體實施例之多階段彙 總插作的流程圖。 彙總失敗處置(階段I) 錯誤處置的彙總,階段I操作1120包含步驟1122及步驟 1124 〇 步驟1122 :以和第一順序相同的順序,在第三區塊中儲 存該邏輯群組之邏輯單元的目前版本,以建立邏輯群組的 彙總區塊。 步驟1124 ··為了回應彙總區塊的儲存失敗,以和第一順 序相同的順序,在第四區塊中儲存該第三區塊所沒有之邏 輯群組的邏輯單元,以提供中斷彙總區塊。 由於已將區塊1及區塊2中的資料傳送至區塊3及區塊4, 因此可抹除區塊1及區塊2以釋放空間。在較佳具體實施例 中’可立即釋放區塊2至EBL(已抹除的區塊清單,見圖18) 再予以使用。區塊1只能在以下的條件下釋放··如果其為關 閉的更新區塊及其中有對應的GAT項目指向的另一個區 塊0 98705.doc -91 · 1269154 實質上,區塊3會變成邏輯群組的原始區塊,而區塊4變 成區塊3的取代循序更新區塊。 在完成階段I彙總後,記憶體裝置藉由釋放BUS Y信號來 發信給主機。 中間操作(階段II) 階段II,即中間操作1130,可在階段m彙總操作114〇之 前發生。如步驟1132、1134、1136中任一者所提出般,可 能會有數種可能的情況。 步驟1132:或是在邏輯群組的寫入操作中,寫入作為更 新區塊的第四區塊(中斷彙總區塊)。 如果主機寫入所論邏輯群組,則區塊4(其為中斷彙總區 塊且其至此已是取代循序更新區塊)將用作正常更新區 塊。根據主機寫入而定,其可維持循序或變成混亂狀態。 作為更新區塊’其將在某個點觸發關閉另一個混亂區塊, 如先前的較佳具體實施例所述。 如果主機寫入另一個邏輯群組,則直接進行至階段ΠΙ操 作。 、 步驟1134 :或是在讀取操作中,讀取其中第三區塊為邏 輯群組原始區塊及第四區塊為更新區塊的記憶體。 此時,會從為邏輯群組之原始區塊的區塊3讀取區段八及 Β的邏輯單元,及從為群組之更新區塊的區塊4讀取區段c 及D的邏輯單元。由於從區塊3只能讀取區段α&β,將無法 存取其中程式化失敗的頁面,且無法存取其後未寫入的部 分。雖然尚未更新快閃記憶體中的GAT目錄及其仍指向為 98705.doc -92- 1269154 原始區塊的區塊卜但不會從中讀取任何資料,且此區塊本 身已於稍早抹除。 另一種可能性是主機讀取邏輯群組中邏輯單元。此時, 會從為邏輯群組之原始區塊的區塊3讀取區段入及6的邏輯 單元,及從為群組之循序區塊的區塊4讀取區段c&D的邏 輯單元。 步驟1136 :或在電源開啟初始化中,藉由掃描其中内容 以重新識別第一至第四區塊中的任一項。 中間階段的另一個可能性是關閉記憶體裝置的電源,然 後重新啟動。如上述,在電源開啟初始化期間,會掃描配 置區塊清單中的區塊(要使用的抹除集區區塊,見圖15及圖 18)以識別邏輯群組中已成為特殊狀態原始區塊(區塊3)及 關聯之循序更新區塊(區塊4)的缺陷彙總區塊。中斷區塊(區 塊4)之第一邏輯單元中的旗標將指示關聯的區塊為已遭遇 私式錯誤的原始區塊(區塊3)。藉由查閱區塊目錄(gat), 即可尋找區塊3。 在一項具體實施例中,會將旗標程式化至中斷彙總區塊 (區塊4)的第一邏輯單元。這可協助指示邏輯群組的特殊狀 態:即,其已經彙總成兩個區塊,即,區塊3及區塊4。 使用旗標以識別具缺陷區塊之邏輯群組的一個替代方法 是,利用不像原始區塊應為已滿的特性(除非錯誤發生在最 後頁面,及最後頁面沒有ECC錯誤)偵測在掃描期間為缺陷 的區塊。還有,根據實施例而定,其中會有有關儲存在快 閃3己憶體中控制資料結構之失敗群組/區塊的資訊記錄,而 98705.doc -93 - 1269154 區段之標頭區中 不/、疋在寫入中斷彙總區塊(區塊4)之第一 的旗標。 袭總完成(階段III) V驟1142 ·為了回應預定的事件,對於自階段〗後未進一 步錢第四區塊時的第-種情況,以和該第—順序相同的 順序,在其中儲存該邏輯群組之所有未處理完成之邏輯單 =的目前版本;對於自階段〗後已進一步記錄第四區塊時的 第一種^况,將第三及第四區塊彙總為第五區塊。 &步驟1144:之後,對於第一種情況,操作記憶體時,以 彙總的第四區塊作為邏輯群組的原始區塊;對於第二種情 況,操作記憶體時,以第五區塊作為邏輯群組的原始區塊。 只要有任何不會違反任何指定時間限制的機會,即可執 行階段III中的最後彙總。一個較佳情況是,在其中有另一 個未附帶彙總操作之邏輯群組之更新操作時,「掛附 (piggy-back)」在下一個主機寫入時槽上。如果另一個邏輯 群組的主機寫入觸發本身的廢棄項目收集,則將使階段出 彙總延後。 圖33顯示多階段彙總操作之第一及最後階段的範例時 序。主機寫入等待時間是具有持續期間丁〜之各主機寫入時 槽的寬度。主機寫入1是簡單的更新,及邏輯群組LGi中第 一組邏輯單元的目前版本會被記錄在關聯的更新區塊上。 在主機寫入2,會在邏輯群組乙^上發生更新,致使更新 區塊被關閉(如,已滿)。會提供新的更新區塊以記錄其餘的 更新。提供新的更新區塊會觸發廢棄項目收集,而導致關 98705.doc -94- 1269154 於LG*的彙總操作,以便再循環要再使用的區塊。LG4群組 的目前邏輯單元會按循序順序記錄在彙總區塊上。彙總操 作可繼續進行直到在彙總區塊中遭遇缺陷為止。然後叫用 階段I彙總,其中彙總操作在中斷彙總區塊上繼續。同時, LG4(階段III)的最後彙總會等待下一個機會。 在主機寫入3,也會發生邏輯群組LG2之邏輯單元的寫入 以觸發LG2的彙總。這表示已經完全利用時槽。 在主機寫入4 ’操作只是將LG2的一些邏輯單元記錄至其 更新區塊。時槽中剩餘的時間可提供執行LG*之最後彙總的 機會。 未將中斷彙總區塊轉換為更新區塊的具艘實施例 圖34A及圖34B分別顯示圖28及圖31之範例適用之多階 段彙總之階段I及階段III操作的第一案例。 圖34A顯示其中中斷彙總區塊並非用作更新區塊而是用 作其彙總操作已經中斷之彙總區塊的例子。尤其,圖3 4 A 是指圖33所示的主機寫入#2,其中主機寫入屬於邏輯群組 LG1之邏輯單元的更新,及在此期間,此操作也會觸發和另 一個邏輯群組LG4關聯之區塊的彙總。 原始區塊(區塊υ及更新區塊(區塊2)的形成方式和圖28 的範例相同。同樣地,在彙總操作期間,已知彙總區塊(區 塊3)在彙總區段C的邏輯單元時有缺陷。然而,不像圖“ 所示的重新彙總方案,本多階段方案可在新提供之可當作 :斷彙總區塊的區塊(區塊4)上繼續彙總操作。因此,在階 段I彙總操作中’已在彙總區塊(區塊3)中彙總區段Α及Β: 98705.doc 1269154 的邏輯單元。當彙總區塊中發生程式失敗時,會循序將區 段C及D中其餘的邏輯單元複製至中斷彙總區塊(區塊4)。 · 如果主機原來在第一邏輯群組中寫入更新會觸發和第二 · 邏輯群組關聯之區塊的彙總操作,則會將第一邏輯群組的 . 更新記錄至第一邏輯群組的更新區塊(通常為新的更新區 · 塊)。此時,中斷彙總區塊(區塊4)不會用來記錄彙總操作之 外的任何更新資料且會維持必須完成的中斷彙總區塊。 由於區塊1及區塊2中的資料現在完全含在另一個區塊 _ (區塊3及區塊4)中,因此可將其抹除以便再循環。位址表 (GAT)會被更新以指向區塊3,作為邏輯群組的原始區塊。 更新區塊的目錄資訊(在ACL中,見圖15及圖18)也會被更 新,以指向已成為邏輯群組(如,LG*)之循序更新區塊的區 塊4 〇 結果,彙總的邏輯群組並未侷限在一個區塊中,而是分 布在缺陷彙總區塊(區塊3)及中斷彙總區塊(區塊4)之上。此 方案的重要特色是群組中的邏輯單元只會在此階段期間彙鲁 總一次,但卻將彙總散布在一個以上區塊之上。依此方式, 可在正常指定的時間内完成彙總操作。 圖34B顯示始於圖34A之多階段彙總的第三及最後階 段。如結合圖33所述’會在第一階段後的適宜時間(例如在 後續不會觸發隨附彙總操作的主播宜 ·
^ F W王機冩入期間)執行階段III 莱總。尤其’圖3 4 B是指其中挤决‘闽”— · 七生如圖33所示之主機寫入#4 的時槽。在該期間+,主機寫人可更新屬於邏輯群組LG2 的邏輯單元而不會觸發另一個額外的囊總操作。因此,有 98705.doc -96- 1269154 利於將時槽中剩餘的時間用於階段ΠΙ操作,以完成邏輯群 組lg4的彙總。 此操作可將還不在中斷區塊中之LG#之所有未處理完成 之邏輯單元彙總至中斷區塊。在此範例中,這表示會從區 塊3按邏輯上循序順序將區段八及B複製至中斷區塊(區塊 4)。由於區塊中邏輯單元的繞回方案及使用頁面標記(見圖 3A),即使範例顯示在區塊4中,區段a及b會被記錄在區段 C及D之後,但仍會將已記錄的序列考慮為等同於A、B、匸、 D的循序順序。根據實施例而定,較佳從區塊3取得要複製 之未處理完成之邏輯單元的目前版本,因其已經是彙總的 形式,不過也可從尚未被抹除的區塊1及區塊2中收集。 在中斷區塊(區塊4)上完成最後彙總後,會將其指定為邏 輯群組的原始區塊並跟著更新合適的目錄(如,gAT,見圖 17A)。同樣地,會將失敗的實體區塊(區塊3)標示為不良並 將其排除。其他區塊’區塊1及區塊2,將被抹除及再循環。 同時,會將LG2的更新記錄在和lg2關聯的更新區塊中。 將中斷彙總區塊變成更新區塊的具體實施例 圖35A及圖35B分別顯示圖28及圖33之範例適用之多階 段彙總之階段I及階段III操作的第二案例。 圖3 5 A顯示其中維持中斷彙總區塊為接收主機寫入之更 新區塊而非彙總區塊的例子。這適用於如更新邏輯群組lG4 的主機寫入,及在此程序中,也會觸發相同邏輯群組的彙 總。 和圖34A的案例一樣,將區塊1與區塊2彙總於區塊3中會 98705.doc •97- 1269154 、’k、、、ί進行,直到在處理區段c時遇到程式失敗。然後會在中 斷彙總區塊(區塊4)上繼續彙總。在中斷區塊(區塊4)中彙總 未處理完成之邏輯單元(如,在區段〇及〇中)後,並不在階 段III中等待完成其中的邏輯群組彙總,而是維持中斷區塊 為更新區塊。此案例尤其適於其中主機寫入可更新邏輯群 組及觸發相同邏輯群組之彙總的情況。在此範例中,這可 將邏輯群組LG*之主機更新的記錄記錄在中斷彙總區塊(區 塊4)中,而非記錄至新的更新區塊。此更新區塊(先前為中 斷彙總區塊(區塊4))可根據其中記錄的主機資料而為循序 或變成混亂。在所示的範例中,區塊4已變成混亂,因區段 C中邏輯單元的後續較新版本使得區塊4中的先前版本被淘 汰。 在中間階段期間,會將區塊3視為LG4的原始區塊,及區 塊4會是關聯的更新區塊。 圖35B顯示始於第二例中圖35八之多階段彙總的第三及 隶後階段。如結合圖3 3所述,會在第一階段後的適宜時間 執行階段III彙總,如在後續不會觸發隨附彙總操作的主機 寫入期間。在該期間中,主機寫入可更新屬於邏輯群組的 邏輯單兀而不會觸發另一個額外的彙總操作。因此,有利 於將時槽中剩餘的時間用於階段m操作,以完成邏輯群組 lg4的彙總。 然後從區塊3及區塊4將邏輯群組lg4的廢棄項目收集至 新的彙總區塊(區塊5)。然後將區塊3標示為不良,將區塊4 再循環,及新的彙總區塊(區塊5)將變成邏輯群組[仏之新 98705.doc -98- 1269154 的原始區塊。其他區塊,區塊1及區塊2,也會被抹除及再 循環。 階段性程式失敗處置的其他具體實施例 圖31A、31B、34A、34B、35A及35B中所述的範例適用 於較佳的區塊管理系統,其中各實體區塊(中繼區塊)僅儲存 屬於相同邏輯群組的邏輯單元。本發明同樣適用於其他其 中並無邏輯群組對實體區塊對齊的區塊管理系統,如w〇 03/027828及WO 00/49488中所揭露的區塊管理系統。在這 些其他系統中實施階段性程式失敗處置方法的一些範例如 圖36A、36B及36C所示。 圖36A顯示套用於主機寫入觸發關閉更新區塊且更新區 塊為循序時之情況的階段性程式錯誤處置方法。此例中的 關閉係藉由以下方式來完成:將原始區塊2之其餘的有效資 料(B及C)複製至循序更新區塊3。在資料部分c程式化起點 之程式失敗的例子中,會將部分c程式化至保留的區塊4。 然後可將新的主機資料寫入新的更新區塊5(未顯示)。此方 法的階段II及III和混亂區塊關閉的情況相同。 圖36B顯示在更新區塊之更新的例子中套用於(局部區塊 系、、先)的1¾ ^又性程式錯誤處置方法。在此例中,會將邏輯群 組儲存在原始區塊1及其他的更新區塊中。彙總操作包括將 原始區塊1及其他更新區塊2的資料複製至更新區塊㈠艮據 二規則選^,圖中的區塊3)之—。#已經說明的主要情 況不同處在於區塊3已經部分被寫入。 圖36C顯不處理廢棄項目收集操作的階段性程式錯誤,或 98705.doc -99- 1269154 不支援映射至中繼區塊之邏輯群組之記憶體區塊管理系統 中的清除。此種記憶體區塊管理(循環儲存)系統係說明於 WO 03/027828 A1中。循環儲存系統明顯的特色是不對單— 邏輯群組配置區塊。其中支援中繼區塊中控制資料的多個 邏輯群組。廢棄項目收集涉及從部分淘汰的區塊,將可能 沒有任何關係(隨機邏輯區塊位址)的有效資料區段取至其 中可能已經有些資料的重新配置區塊。如果重新配置區塊 在操作期間變滿,則將開啟另一個區塊。 非循序更新區塊索引 在上文關於混亂區塊索引及結合圖16 A-16E的段落中, CBI區段可用來儲存可記錄隨機儲存在混亂或非循序更新 區塊中之邏輯區段位置的索引。 根據本發明的另一方面,在具有支援具非循序邏輯單元 之更新區塊之區塊管理系統的非揮發性記憶體中,緩衝儲 存在RAM中之非循序更新區塊之邏輯單元的索引被定期健 存在非揮發性記憶體中。在一項具體實施例中,將索引错 存在專用於儲存索引的區塊中。在另一項具體實施例中, 會將索引儲存在更新區塊中。在又另一項具體實施例中, 將索引儲存在各邏輯單元的標頭中。在另一方面中,在上 一個索引更新之後但在下一個索引更新之前寫入的邏輯單 元會將其索引資訊儲存在各邏輯單元的標頭中。依此方 式,在電源中斷後,不必在初始化期間執行掃描,即可決 定最近寫入之邏輯單元的位置。在又另一方面中,將區塊 管理成部分循序及部分非循序指向一個以上邏輯子群組。 98705.doc -100- 1269154 在預定觸發事件後儲存在CBI區塊中CBI區段的索引指標 根據結合圖16 A-16E所述的方案,會將混亂區塊中最近寫 入區段的清單保留在控制器RAM中。只在和給定混亂區塊 關聯之邏輯群組之預定數量的寫入後,含有最新索引資訊 的CBI區段才被寫入快閃記憶體(CBI區塊62〇)。依此方式, 可縮減CBI區塊更新的數量。 在邏輯群組中CBI區段的下一個更新之前,會將邏輯群組 中最近寫入區段的清單保留在控制器RAM中。此清單在記 憶體裝置遭遇電源關閉時將會遺失,但可在電源啟動後的 初始化中藉由掃描更新區塊加以重建。 圖3 7顯示在每N個區段寫入相同的邏輯群组後將c b I區段 寫入關聯之混亂索引區段區塊的排程範例。此範例顯示兩個 同時進行更新的邏輯群組LG;及LGn。初始時,會將LG3w 邏輯區段按循序順序儲存在原始區塊中。群組中邏輯區段的 更新會按照主機指定的順序被記錄在關聯的更新區塊上。此 範例顯示混亂更新序列。同時,也會以和其更新區塊相同的 方式更新邏輯群組LGn。在每個邏輯區段寫入後,會將其在 更新區塊中的位置保留在控制器RAM中。在每個預定的觸 發事件後,會以混亂索引區段的形式將更新區塊中邏輯區段 的目前索引寫入非揮發性混亂索引區段區塊。例如,預定的 觸發事件可發生於每N個寫入之後,其中n為3。 雖然提供的範例有關作為區段的資料邏輯單元,但熟習 本技術者應明白,邏輯單元也可以是一些其他集合體,如 含有一個區段或一組區段的頁面。還有,循序區塊中的第 98705.doc -101 - 1269154 一頁面不一定是邏輯頁面0,因為繞回的頁面標記可能是第 一頁面。 在預定觸發事件後儲存在混亂更新區塊中CBI區段的索引 指標 在另一項具體實施例中,會在其中每N個寫入後,將索引 才曰k儲存在混亂更新區塊本身中的專用CBI區段中。此方案 和上述其中也將索引儲存在CBI區段中的具體實施例相 同。其中的差異在於上述具體實施例中,CBI區段被記錄在 CBI區段區塊中,而非更新區塊本身中。 此方法係基於將所有混亂區塊索引資訊保持在混亂更新 區塊本身中。圖38A、3犯及38(:分別顯示同樣按照三個不 同階段儲存CBI區段之更新區塊的狀態。 圖38A顯示直到在預定數量的寫入後在其中記錄CBI區 段時的更新區塊。在此範例中,在主機已經循序寫入邏輯 區段0-3後’接著將會發出再次寫入邏輯區段1之另一版本 的指令’因而破壞資料寫入的循序序列。然後實施CBI區段 中載送的混亂區塊索引,將更新區塊轉換為混亂更新區 塊。如上述’ CBI是含有混亂區塊之所有邏輯區段之索引的 索引。例如,第0個項目代表第〇個邏輯區段之更新區塊的 位移’同樣地,第n個項目代表第η個邏輯區段的位移。可 將CBI區段寫入更新區塊中的下一個可用位置。為了避免頻 繁的快閃存取’會在每Ν個資料區段寫入後寫入CBI區段。 在此範例中’ Ν為4。如果此時損失電源,則最後寫入的區 段成為CBI區段,並將此區塊視為混亂更新區塊。 98705.doc -102- 1269154 圖38B顯示圖38A之進一步在索引區段後在其中記錄邏輯 區段1、2及4的更新區塊。邏輯區段1及2的較新版本可取代 先前在更新區塊中記錄的舊版本。在此時之電源週期的例子 中’必須先找到最後寫入的區段’然後必須掃描多達N個區 段,以尋找最後寫入的索引區段及最近寫入的資料區段。 圖3 8C顯示圖3 8B之具有另一寫入以觸發索引區段下一 個e己錄之邏輯區段的更新區塊。在另n個(n==4 )區段寫入後 的相同更新區塊可記錄CBI區段的另一個目前版本。 此方案的優點是不需要分開的CBI區塊。同時還不必擔心 貝體快閃區段的附加項資料區是否大到足以容納混亂更新 區塊中有效區段之索引所需項目的數量。然後,混亂更新 區塊含有所有的資訊,且位址轉譯不需要外部的資料。這 可讓演算法比較簡單,其中可縮減有關〇趴區塊壓縮的控制 更新數;也可讓串接控制更新比較簡短。(請見上文有關CBI 區塊管理的部分)。 關於儲存在混亂更新區塊中資料區段標頭之最近寫入區段 的資訊 根據本發明的另一方面,會在每N個寫入後,將記錄在區 塊中之邏輯單元的索引儲存在非揮發性記憶體中,及將有 關中間寫入之邏輯單元的目前資訊儲存在各邏輯單元寫入 =附加項部分。依此方式,在電源重新啟動後,不必掃描 品鬼即可從區塊中最後寫入邏輯單元的附加項部分快速 取得有關自上一個索引更新後寫入之邏輯單元的資訊。 圖39A顯示儲存於混亂更新區塊中各資料區段標頭之中 98705.doc 1269154 間寫入的中間索引。 圖携顯示在寫入的各區段標頭中儲存中間寫入之中門 索引的範例。在此範例中’在寫人四個區段LVLS3後,會 寫入⑽索引作為區塊中的下_個區段。其後,會將邏輯區 段LS、、LS’2及LS4寫入區塊。每次,標頭都會儲存自上一 個CBI索引後寫人之邏輯單元的中間索引。因此,[8,2中的 標頭將具有提供上-個CBI索引及叫之位移(即,位置)的 索引。同樣地,LS4中的標頭將具有提供上一個⑽索引及 LS’^LS’2之位移(即,位置)的索引。 最後寫入的資料區段永遠含有有關多達N個最後寫入之 頁面的資訊(即,一直到最後寫入之CBI區段)。只要電源重 新啟動時,上一個CBI索引可提供邏輯單元在cBI索引區段 之前寫入的索引資訊,及後續寫入之邏輯單元的索引資訊可 在最後寫入之資料區段的標頭中找到。這具有優點如下:在 初始化時不必為其後寫入的區段掃描區塊以決定其位置。 在資料區段的標頭中儲存中間索引資訊的方案同樣適用 於無論CBI索引區段係儲存在更新區塊本身或在分開的 CBI區段區塊中,如前文所述。 儲存在混亂更新區塊中資料區段標頭的索引指標 在另一項具體實施例中,會將整個CBI索引儲存在混亂更 新區塊中各資料區段的附加項部分。 圖40顯示在混亂更新區塊之各資料區段標頭中儲存的混 亂索引攔位中的資訊。 區段標頭的資訊容量有限,因此可將由任何單一區段所提 98705.doc -104- 1269154 i、2索引範圍設計為層級索引方案的一部分。例如,記憶體 、、/内的區段可提供索引給僅在該平面内的區段。還 有可將远輯位址的範圍分割成一些子範圍,以允許採用間 接索引方案。例如,如果可將有64個邏輯位址的區段儲存在 個平面中,則各區段可以有3個攔位用於區段位移值,各 欄 < 此夠儲存4個位移值。第一攔位可定義邏輯位移範圍 二15 15_31、32-47、及48-63内最後寫入區段的實體位移。 弟欄位可疋義在其相關範圍内各4個區段之4個子範圍的 =體位移值。第三攔位可定義在其相關子範圍内4個區段的 灵體位移值。因此’藉由讀取多達3個區段的間接位移值, 即可決定混亂更新區塊内邏輯區段的實體位移。 此方案的優點是也不需要分開的CBI區塊或⑽區段。然 而這卻/、適用於實體快閃區段的附加項資料區大到足以 容納混亂更新區塊中有效區段索引所需的項目數量時。 混亂更新區塊之邏輯群組内受限的邏輯範圍 在I輯群、、且内,可縮減可非循序寫入之區段的邏輯範 圍。此技術的主要優點如了:由於只需要讀取一個多重區 段頁面(在多重晶片的例?中,可以平行讀取頁面),即可取 得目的地頁面的所有資料(假設來源和目的地已對齊,若未 對齊,則需要另_個讀取),使得循序寫人資料的複製能夠 Μ 1此範圍之外的區段在原始區塊中保持循 序寫入’及廢棄項目收集操作能在更短的時間内完成。還 有,使用晶片上的複本特色,可將循序資料從來源複製至 目的地,而不用在控制器之間來回傳送資料。如果來源資 98705.doc -105 - 1269154 料已經分散,如混亂區塊中所發生的,則需要每個區段讀 取多達一個頁面,才能收集所有要寫入目的地的區段。 在一項具體實施例中,實際上並不將邏輯範圍限制在某 個數量的區段,而是經由限制CBI的數量來完成(只限制大 群組/中繼區塊的混亂範圍很合理,因其需要多個混亂區塊 索引才能涵盍整個邏輯群組的範圍)。例如,如果中繼區塊 /群組有2048個區段,則其將需要多達8個€81區段,各涵蓋 一個子群組256個區段的連續邏輯範圍。如果將cBI的數量 限制為4,則混亂區塊可用來寫入多達4個子群組的區段(其 中任何一個)。因此,允許邏輯群組有多達4個部分或完全 混亂子群組,且最少有4個子群組將維持完全循序。如果一 個混亂區塊有4個和其關聯的有效cbi區段,及主機寫入在 這些CBI區段範圍之外(混亂子群組)的區段,則應彙總及關 閉混亂邏輯群組。但是這卻極不可能發生,因為在真實的 應用中,主機在2048個區段的範圍(邏輯群組)内不需要多於 4個256個區段的混亂範圍(子群組)。結果,在正常的情況 中,廢棄項目收集也不會受到影響,但限制規則的防範卻 形成廢棄項目收集太長(會觸發主機的逾時)的極端例子。 部分循序混亂更新區塊的索引 當循序更新區塊在將區塊轉換為混亂管理模式之前被部 分寫入時,邏輯群組之循序更新區段的全部或部分可繼續 被處理成已經循序更新,及可將混亂更新管理僅套用於^ 輯群組之位址範圍的子集。 控制資料完整性與管理 98705.doc -106- 1269154 儲存在記憶體裝置中的資料可能會因為電源中斷或特定 記憶體位置變成有缺陷而成為已毀損。如果碰到記憶體區 塊缺陷,則將資料重新配置至不同的區塊及將缺陷區塊丢 棄。如果錯誤不會擴大,則可藉由和資料一起儲存的錯誤 校正碼(ECC)在執行中進行校正。然而,還是會有ecc無法 校正已毁損資料的時候。例如,當錯誤位元的數量超過Ecc 的容量時。這對於如和記憶體區塊管理系統關聯之控制資 料的關鍵資料是無法接受的。 控制貧料的範例為目錄資訊及和記憶體區塊管理系統關 聯的區塊配置資訊,如結合圖2〇所述。如上述,可將控制 資料維持在高速RAM及較慢的非揮發性記憶體區塊中。任 何經常變更的控制資料會被維持在具有定期控制寫入的 RAM中,以更新儲存於非揮發性中繼區塊中的同等資訊。 依此方式不必經常存取,即可將控制資料儲存在非揮發 性但較慢的快閃記憶體中。如圖20所示GAT、CBI、MAP、 及PA之控制資料結構的層級會被維持在快閃記憶體 中。因此’控制寫人操作造成RAM中控制資料結構的資訊 可更新&閃5己憶體中同等的控制資料結構。 關鍵資料備份 ^ J 毛月的另一方面,如部分或全部控制資料的關鍵 果被維持在複製項中,職證額料級的可靠性。 ..,,w ^ ^ Λ對於採用兩次編碼過程(tw〇-pass)程式化 ^ A 工目同組記憶體單元之多位元的多重狀態 舌己fe體系統而t,势一 ^ °弟一久編碼過程中的任何程式化錯誤都 98705.doc 1269154 無法毀損第一次編碼過程建立的資料。複製還有助於偵測 寫入中止、偵測誤測(即,兩個複本有良好的ECC但資料不 同)’且可增加額外等級的可靠性。若干資料複製的技術均 已考慮。 在一項具體實施例中,在稍早程式化編碼過程中程式化 給疋資料的兩個複本後,後續程式化編碼過程可避免程式 化用於儲存該等兩個複本中至少一個的記憶體單元。依此 方式,在後續程式化編碼過程在完成之前中止及毀損稍早 編碼過程的資料時,該等兩個複本中至少一個也不會受到 影響。 在另一項具體實施例中m#料的兩個複本會被 儲存於兩個不同的區塊中,而且該等兩個複本中至多僅有 a會於後面的帛式化編石馬過程中被程 式化。 π力一具體貫 π呢桎甲儲存某· 給定資料的兩個複本之後,便不再對用於儲存該等兩化 本的記憶體單元組實施任何進一步的程式化。於該記情; 單元組的最終程式化編料程巾來程式化料^複^ 可達成此目的。 在又^項具體實施例中,可於二進制程式化模 某一給疋資料的該等兩個複本程式化至一 、处 體之中,致使不會對該等已程式化的記, 進一步的程式化。 兀進仃任' 在又另-項具體實施例中,對於採用 、'扁碼過程程 98705.doc -108- 1269154 :技術以連續程式化相同組記憶體單元之多位元的多重狀 態記憶體系統而言’會採用容錯碼以編碼多個記憶體狀 態,使稍早程式化編碼過程所建立的資料不會受到後續程 式化編碼過程中錯誤的影響。 在各記憶體單元可儲存—位元以上資料的多重狀態記憶 體中會引發資料複製的複雜性。例如,一個4狀態記憶體可 以兩個位s來表示。-個現有的技術是使用2次編碼過程程 式化來程式化此種記憶體。第一位元(下$頁面位元)可由第 -次編碼過程進行程式化。其後,可在第4編碼過程中 程式化相同單元以代表所要的第二位元(上方頁面位元)。為 了不要變更第二次編碼過程中第_位元的值,會使第一位 元的記憶體狀態表示取決於第二位元的值。在第二 位兀的程式化期間,如果因電源中斷或其他原因而發生錯 誤及&成不正確的s己憶體狀態,則也會毁損第一位元的值。 圖41A顯示當各記憶體單元儲存兩個位元的資料時,4狀 態記憶體陣列的定限雷嚴、士 ^ 』幻疋限電壓分布。此四個分布代表四個記憶 體ίΓ。 U」X」、γ」及「ζ」的總體。在程式化記憶體 單兀之刖t先將其抹除至其「υ」或「未寫入」狀態。在 圯L體單元逐漸被程式化時,會累進達到記憶體狀態「X」、 「Y」及「Z 。 圖”、、員示現有使用袼雷碼(Gray code)的2次編碼過程程 式化方案。此四個狀態可以兩個位元表示,即,下方頁面 位元及上方頁面位元,如(上方頁面位元,下方頁面位元)。 對於要平行程式化之單元的頁面,實際上有兩個邏輯頁 98705.doc -109- 1269154 面:邏輯下方頁面及邏輯上方頁面。 只會程式化邏輯下方百而. 式、、爲碼過程 輯下方頁®,單元相同頁面上的後 =重-邏 會程式化邏輯,、弟一私式化編碼過程 士女/方頁面。—般使用的程式碼是格雷碼,皇 中只有-個位元會在轉變至相鄰的狀態時變更。因此 程式碼具有優點如下:對於錯誤校正的要求較少,因只涉 及一個位元。 μ ^ v
-般使用格雷碼的方案是假設…代表「未程式化^ 件°因此’已抹除的記憶體狀態「υ」可表示為:(上方】 面=70,Τ方頁面位元)=〇,…在程式化邏輯下方頁逢 的第-次編碼過程中,任何儲存㈣「q」的單元將因此^ 有其從(X,1)至(X,0)的邏輯狀態轉變,其中Γχ」代表上^ 位元的「任意(d0n,t care)」值。然*,由於上方位元尚4 被程式化’因此為了一致,可將%標示為「1W1 〇
邏,:大態可藉由程式化單元為記憶體狀態Γχ」來表示。地 就疋D兒在第一次程式編碼過程之前,下方位元值「0」^ 以表示為記憶體狀態「x 執行第二次編碼過程程式化可儲存邏輯上方頁面的位 凡。只有這些需要上方頁面位元值「〇」的單元才會被程式 化。在第一次編碼過程後,頁面中的單元在邏輯狀態” 或(1,〇)。為了保存第二次編碼過程中下方頁面的值,必須 區为下方位7C值「0」或「;[」。對於從(丨,〇)至⑶,〇)的轉變, 會將所論記憶體單元程式化為記憶體狀態「γ」。對於從(1, 1)至(0, 1)的轉變,會將所論記憶體單元程式化為記憶體狀 98705.doc -110- 1269154 悲「z」。依此方式,在讀取期間,藉由決定在單元中程式 化的記憶體狀態,即可解碼下方頁面位元及上方頁面位元。 然而,格雷碼的2次編碼過程程式化方案在第二次編碼過 私耘式化錯誤時會成為問題。例如,在下方位元為「丨」時 將上方頁面位元程式化為「〇」,將造成(1,丨)轉變成(〇,丨)。 這需要將記憶體單元累進從Μ」程式化通過%及「γ」 而至Ζ」如果在元成程式化前發生電源中斷,則記憶體 單元將結束於轉變記憶體狀態之_,如「χ」。在讀取記憶 體單元時’會將「X」解碼為邏輯狀態(1,G)。這對上方及 下方位元造成不正確的結果,因其應為(〇,丨)。同樣地,如 果私式化在達到「γ」時受到中斷,其將對應於(G,〇)。雖 然上方位元現在是正確的,但下方位元還是錯的。 方頁面的資料。尤其售 口此’可以看出上方頁面程式化的問題可毁損已經在下 尤其當第二次編碼過程程式化涉及在中間
98705.doc -111 - 1269154 面中,同樣地,對於區段B及其複製也是如此。然後在邏輯 上方頁面中後績之程式化的第二次編碼過程中,會同時程 式化又C,C ’及對於區段d,D也是如此。如果在程式化 區段C,C的中間發生程式中止,則會毀損下方頁面中的區 段A, A。除非,在上方頁面程式化之前先讀取及緩衝下方 頁面區段,否則如果毁損將無法復原。因此,同時儲存兩 個關鍵資料的複本,如區段A,A,無法防止其為其上方頁 面中後續區段C,C之有問題的儲存所毀損。 圖44A顯示將關鍵資料錯開之複製複本儲存至多重狀態 圮憶體的一項具體實施例。基本上,會以和圖43的相同方 式儲存下方頁面,即,區段A,A及區段B,B。然而,在上 方頁面程式化中,區段C及D會和其複製交錯成c,D,C,D。 如果支援局部頁面程式化,則可同時程式化兩個區段C的複 本’及對於兩個區段D的複本也是如此。如果兩個區段◦的 程式遭到中止,則只會在區段A的一個複本及區段b的一個 複本上毁損下方頁面。另一個複本將維持不受影響。因此, 如果儲存在第一次編碼過程中的關鍵資料有兩個複本,則 其不將不會受到後續第二次編碼過程同時程式化的影響。 圖44B顯示只將關鍵資料之複製複本儲存至多重狀態記 十思體之邏輯上方頁面的另一項具體實施例。此時,未使用 下方頁面的資料。關鍵資料及其複製,如區段A,A及區段 Β,β只會被儲存至邏輯上方頁面。依此方式,如果有程式 中止則可將關鍵資料再寫入另一個邏輯上方頁面,而下 方頁面資料的任何毀損將無關緊要。此辦法基本上使用各 98705.doc -112- 1269154 多重狀態頁面一半的儲存容量。 圖4 4 C顯示又另一項以多重狀態記憶體的二進制模式儲 存關鍵資料之複製複本的具體實施例。此時,會依二進制 杈式耘式化各記憶體單元’丨中僅將其定限範圍分成兩個 區域因此’其中只有_次編碼過程程式化,且在發生程 式中止時可在不同位置中重新啟動程式化。此辦法也使用 各多重狀態頁面-半的儲存容量。依二進制模式操作多重 狀態記憶體係說明於美國專利第6,456,528 B i號,其整個揭 露内容在此以提及的方式併入本文中。 ^ /45顯示同時將關鍵㈣之複製複本儲存至兩個不同中 繼區塊的又另一項具體實施例。如果區塊之一變成不可 用則可彳火另一個區塊頊取資料。例如,關鍵資料係含在 區段△、卜^⑽卜卜^狀卜^^各區段 會被儲存在複製中。這兩個複本將被同時寫入兩個不同的 區塊,區塊0及區塊1。如果將一個複本寫入邏輯下方頁面, 則會將另一個複本寫入邏輯上方頁面。依此方式,永遠會 有程式化至邏輯上方頁面的複本。如果發生程式中止,則 可將其重新程式化至另一個邏輯上方頁面。同時,如果下 方頁面已經毀損,則在其他區塊中永遠會有另一個上方頁 面複本。 圖46B顯示使用容錯碼同時儲存關鍵資料之複製複本的 又另一項具體實施例。圖46A和圖41八同在顯示4狀態記憶 體陣列的定限電壓分布並顯示作為圖46B的參考。容錯碼實 質上可避免在任何中間狀態中轉變的任何上方頁面程弋 98705.doc • 113 - 1269154 化。因此,在下士百τ 方頁面程式化的第一次編碼過程中,邏輯 狀態(1,1)轉變為(1 〇), 輯 M FTT ^ Γ 1,ϋ)如表不為程式化已抹除的記憶體狀 態「U」為「γ 在 、 在上方頁面位元為「〇」的第二次編碼過 备*备►式化中’如果士石 方頁面位元為「1」,則邏輯狀態(1,1) 轉變為(〇,1),如表干 、「 衣不為私式化已抹除的記憶體狀態「ϋ」 : *下方頁面位元為「0」,則邏輯狀態(1,0)轉變 為(〇, 〇),如表示為程式化記憶體狀態「Υ」為「ζ」。由於 矛式化僅涉及程式化為下一個相鄰的記憶體狀 態,因此程式中止無法變更下方頁面位元。 串列寫入 關鍵資料的複製複本較佳如上述同時寫入。另一個避免 同時毁損兩個複本的方式是循序寫入複本。此方法較慢, 但複本本身代表其在控制器檢查兩個複本時程式化是否成 功。 圖47為顯示兩個資料複本之可能狀態及資料有效性的表 格0 如果第一及第二複本沒有Ecc錯誤,則可將資料的程式 化視為完全成功。有效資料可從任一個複本取得。 如果第一複本沒有ECC錯誤,但第二複本有ECC錯誤,便 表示私式化在弟一複本程式化的中間受到中斷。第一複本 含有有效資料。即使錯疾為可校正,第二複本資料已不可 靠。 如果第一複本沒有ECC錯誤且第二複本已經清空(抹 除),便表示程式化在第一複本程式化結束後但在第二複本 98705.doc -114- Ϊ269154 開始前受到中斷。第一複本含有有效資料。 如果第一複本有ECC錯誤及第二複本已經清空(抹除),便 表示式化在第一複本程式化的中間受到中斷。即使錯誤 為可校正’第一複本仍含有無效資料。 為了讀取維持在複製中的資料,以下技術為較佳,因其 利用複製複本的存在。讀取及比較兩個複本。此例中,圖 所示兩個複本的狀態可用來確保沒有任何錯誤誤測。 在另項具體實施例中,控制器只讀取一個複本,為了 顧及速度及簡單性,複本讀取較佳在兩個複本之間輪替。 例如,在控制器讀取控制資料時,其可讀取如複本1,下一 個控制讀取(任何控制讀取)則應來自複本2,然後再是複本工 等。依此方式,即可讀取及定期檢查兩個 檢幻。其可減少以下風險··無法在因變質的資料;= 成的時間錯誤中進行_。例如,如果通常只讀取複本卜 則複本2會逐漸變質至其中錯誤無法為咖挽救的程度,因 而無法再使用第二複本。 先佔式資料重新配置 #六俅忭朋間可在快閃 π己憶體中維持一組控制資^ 別貝枓。此組控制資料會被儲存在和 主機貝料相同的中繼區塊中。 _ H Of ^ & n a ,&制資料本身會受到 &塊官理,因而會受到更 i j〜警,及因此也受 目收集操作的影響。 也又剜各裳項 料 其中還說明控制資料的階層,其 更新比較高層級中的頻繁。例如 中較低層級中的控制資 假設每個控制區塊有Ν 98705.doc -115- 1269154 個要寫入的控制區段,則通常會發生以下控制更新及控制 區塊重新配置的序列。再次參考圖20,每N個CBI更新可填 滿CBI區塊及觸發CBI重新配置(再寫入)及MAP更新。如果 混亂區塊遭受關閉,則其也會觸發GAT更新。每個GAT更新 可觸發MAP更新。每N個GAT更新可填滿區塊及觸發GAT區 塊重新配置。此外,當MAP區塊變滿時,也會觸發MAP區 塊重新配置及MAPA區塊(如果存在的話,否則BOOT區塊會 直接指向MAP)更新。此外,當MAPA區塊變滿時,也會觸 發MAPA區塊重新配置、BOOT區塊更新及MAP更新。此 外,在BOOT區塊變滿時,將會觸發另一個BOOT區塊之作 用中BOOT區塊重新配置。 由於階層的形成為:頂部的BOOT控制資料,接著是 MAPA、MAP、然後GAT,因此,在每N3個GAT更新中,將 有「串接控制更新」,其中所有的GAT、MAP、MAPA及BOOT 區塊都會被重新配置。此例中,在因主機寫入導致的混亂 或循序更新區塊關閉造成G AT更新時,也會有廢棄項目收 集操作(即,重新配置或再寫入)。在混亂更新區塊廢棄項目 收集的例子中,會更新CBI,而這也會觸發CBI區塊重新配 置。因此,在此極端的情況中,必須同時收集大量中繼區 塊的廢棄項目。 從圖中可見,階層的各控制資料區塊在取得填充及接受 重新配置上有其自己的週期性。如果各控制資料區塊進行 正常,則將有發生以下情形的時候:大量區塊的階段進行 整頓,因而觸發大量同時涉及所有這些區塊的重新配置廢 98705.doc -116- Γ269154 棄項目收集。許多控制區塊的重新配置將會花費很長的時 間,因此應加以避免,因為部分主機不容許因大量控制操 作所造成的長時間延遲。 ,根據本發明的另__方面,在具有區塊管理系統的非揮發 〆己隐體中,可只施記憶體區塊的「控制廢棄項目收集」 或先佔式重新配置’以避免發生大量的更新區塊均恰; :寺需要進行重新配置的情形。例如,在更新用於控制區塊 管理系統操作的㈣f料時會發生此情況。控❹料類型 的層級可和不同程度的更新次數共存,導致其關聯的更新 區塊需要不同速率的廢棄項目收集或重新配置。會有一個 、拴制資料頦型之廢棄項目收集操作同時發生的特定-欠 數。在極端的情況中,所有控制資料類型之更新區= 新配置P白&會進行整頓,導致所有的更新區塊都需要同時 重新配置。 本發明可避免這種不想要的情況,其中目前的記憶體操 作無論何時均可容納自發性的廢棄項目收集操作,更新區 塊的先佔式重新配置可預先在完全填充區塊前發生。尤 '曰將k先權提供給具有最慢速率之最高pg層資料類型 :區塊。依此方式,在重新配置最慢速率區塊後,將不再 而:另4固相對較長時間的廢棄項目收集。還有,階層中 車乂同的速率區塊沒有太多可觸發之重新配置的串接。 " t月方去視為·為了避免所論各種區塊之階段對 齊,而將某種抖動引入事物的整體混合。因此,只要一有 機會,即可以佔式的方式重新配置有些微不受完全填充 98705.doc -117- 1269154 之邊限的緩慢填充區塊。 在具有階層中較低的控制資料因串接效應而變更快於階 層中較高的控制資料之控制資料階層的系統中,會將優先 權提供給階層中較高之控制資料的區塊。一個執行自發性 先佔式重新配置之機會的範例是在以下情況時:當主機寫 入本身無法觸發重新配置,因此可利用其等待時間中的任 何剩餘時間來進行先佔式重新配置操作。一般而言,務必 重新配置之區塊前的邊限是在區塊全滿前之預定數量的未 寫入記憶體單元。所考慮的是足以加速在完全填充之區塊 前但又不會過早之重新配置的邊限,以免資源浪費。在較 佳具體實施例中,預定數量的未寫入記憶體單元係在一到 六個記憶體單元之間。 圖48顯不先佔式重新配置儲存控制資料之記憶體區塊的 流程圖。 步驟1202 :將非揮發性記憶體組織成區塊,各區塊已分 割成可一起抹除的記憶體單元。 步驟1204 :維持不同類型的資料。 步驟1206 :對不同類型的資料指派階層。 步驟1208 ·儲存複數個區塊中該等不同類型資料的更 新,使得各區塊實質上儲存相同類型的資料。 步驟1210 :為了回應具有少於預定數量之清空記憶體單 凡及具有該等複數個區塊中最高階層資料類型的區塊,將 邊區塊之貢料的目前更新重新配置至另一個區塊。若未受 到中斷,到步驟12〇8。 98705.doc 1269154 實施圖20所示控告丨I次 貝料之先佔式重新配置的範例演算法 如下: 如果((/又有任何因使用者資料所造成的廢棄項目收集)或 (MAP留有6個或更少的未寫入區段)或(gat留有_或更少 的未寫入區段) 則 如果(BOOT留有1個未寫入區段) 則重新配置BOOT(即,重新配置至區塊)
否貝J 如果(Μ APA留有1個未寫入區段) 則重新配置MAPA及更新MAP 否則 如果(MAP留有1個未寫入區段) 則重新配置MAP 否則 如果(上一個更新或最大的GAT留有1個未寫入區段) 則重新配置GAT 否貝 如果(CBI留有1個未寫入區段) 則重新配置CBI 否則 否貝U 離開 因此,先佔式重新配置通常完成於其中未發生任何使用 98705.doc -119- 1269154 者資料廢棄項目收集時。在最糟的情況中,當每個主機寫 入觸發使用者資料廢棄項目收集,但還有足夠的時間進行 -個區塊的自發性重新配置時,—次可執行—個控制區塊 的先佔式重新配置。 " 由於使用者資料廢棄項目收集操作及控制更新可能和實 體錯誤同時發生’因此,最好具有較大的安全性邊限,发 係藉由事先如在區塊還有2個或更多未寫入之記憶體單2 =區段)時,奸進料佔式重新配置或控制之廢棄項目 雖然已經針對衫具體實施職8林發明的各種方面, 但應明白,本發明有權受到隨附申請專利範 的保護。 祀可 【圖式簡單說明】 圖1以不意圖顯示適於會念士 丁迥於實施本發明之記憶體系 硬體組件。 凡J 土罟 圖^示«本發明的—項較佳具體實施例’經組織成區 區塊)之實體群組並為控制器之記憶體管理考所 管理的記憶體。 "里态所 以示 圖3A⑴-3A㈣根據本發明的一項較佳具體實施例 意圖顯示邏輯群組及中繼區塊間的映射。 圖3B以示意圖顯示邏輯群組及中繼區塊間的映射。 圖4顯示中繼區塊和實體記憶體中結構的對齊。 圖5A顯示從連結不同平 區塊。 n千面之取小抹除單元所構成的中繼 98705.doc -120- 1269154 圖5B顯示其中從各平面選擇最小抹除單元(meu)以連結 至中繼區塊的一項具體實施例。 · 圖5C顯示其中從各平面選擇一個以上MEU以連結至中繼 區塊的另一項具體實施例。 . 圖6為如控制器及快閃記憶體中實施之中繼區塊管理系 · 統的示意方塊圖。 圖7A顯示邏輯群組中按循序順序寫入循序更新區塊之區 段的範例。 · 圖7B顯示邏輯群組中按混亂順序寫入混亂更新區塊之區 段的範例。 圖8顯示由於兩個在邏輯位址有中斷之分開的主機寫入 操作而在邏輯群組中按循序順序寫入循序更新區塊之區段 的範例。 圖9根據本發明的一般具體實施例,為顯示更新區塊管理 器更新一個邏輯群組之資料的程序流程圖。 圖10顯示根據本發明的一項較佳具體實施例,更新區塊 _ 管理器更新一個邏輯群組之資料的程序流程圖。 圖11A為詳細顯示關閉圖1〇所示之混亂更新區塊之彙總 程序的流程圖。 圖11B為詳細顯示關閉圖1〇所示之混亂更新區塊之壓縮 程序的流程圖。 圖12A顯不邏輯群組的所有可能狀態,及其間在各種操作 下的可能轉變。 圖12B為列出邏輯群組之可能狀態的表格。 98705.doc -121- 1269154 圖13 A顯示中繼區塊的所有可能狀態,及其間在各種操作 下的可能轉變。中繼區塊是對應於邏輯群組的實體群組。 圖13B為列出中繼區塊之可能狀態的表格。 圖14(A)-14(J)為顯示邏輯群組狀態上及實體中繼區塊上 各種操作效果的狀態圖。 圖15顯示用於記錄開啟及關閉之更新區塊及配置之已抹 除區塊之配置區塊清單(ABL)結構的較佳具體實施例。 圖16A顯示混亂區塊索引(CBI)區段的資料欄位。 圖16B顯示記錄於專用中繼區塊中之混亂區塊索引(CBI) 區段的範例。 圖16C為顯示存取進行混亂更新之給定邏輯群組之邏輯 區段之資料的流程圖。 圖16D根據其中已將邏輯群組分割成子群組的替代性具 體實施例’為顯示存取進行混亂更新之給定邏輯群組之邏 輯區段之資料的流程圖。 圖16E顯示在其中將各邏輯群組分割成多個子群組的具 體實施例中,混亂區塊索引(CBI)區段及其功能的範例。 圖17A顯示群組位址表(GAT)區段的資料欄位。 圖17B顯示記錄在GAT區塊中之群組位址表(GAT)區段的 範例。 圖1 8為顯示使用及再循環已抹除區塊之控制及目錄資訊 之分布及流程的示意方塊圖。 圖19為顯示實體位址轉譯邏輯程序的流程圖。 圖20顯示在記憶體管理的操作過程中,在控制資料結構 98705.doc -122- 1269154 上執行的操作層級。 二、員不以夕個記憶體平面所構成的記憶體陣列。 新:員不根據本發明的-般實施例,具有平面對齊之更 新之方法的流程圖。 不在圖22A所示 < 流程圖中儲存驟的 車乂佳具體實施例。 :』不不顧平面對齊按循序順序寫人循序更新區塊 之邏輯單元的範例。 圖23B顯示不顧平面對齊按非循序順序寫入混亂更新區 塊之邏輯單元的範例。 圖Μ顯示根據本發明的—項較佳具體實施例,具有平面 對齊及填補之圖23八的循序更新範例。 圖24B顯示根據本發明的—項較佳具體實施例,具有平面 對齊及不具有任何填補之圖23B的混亂更新範例。 圖24C顯示根據本發明的另-項較佳具體實施例,具有平 面對齊及填補之圖23B的混亂更新範例。 圖25顯示其中各頁面含有兩個用於儲存兩個邏輯單元 (如兩個邏輯區段)之記憶體單元的範例記憶體組織。 圖26A和圖21的記憶體結構相同,只是各頁面含有兩個區 段而非一個。 圖施顯示圖26A所示之具有以線性圖方式布局之記憶 體單元的中繼區塊。 圖27顯示㈣代性方案如下:不用填補要從—個位置複 製到另—個的邏輯軍元,即可在更新區塊中進行平面對齊。 98705.doc -123 - 1269154 圖28顯示其中缺陷區塊在彙總操作期間發生程式失敗時 會在另一個區塊上重複彙總操作的方案。 圖29以示意圖顯示具有允許足夠時間完成寫入(更新)操 作及彙總操作之時序或寫入等待時間的主機寫入操作。 圖30根據本發明的一般方案,顯示程式失敗處置的流程 圖。 圖3 1A顯示程式失敗處置的一項具體實施例,其中第三 (最後的重新配置)區塊和第二(中斷)區塊不同。 圖3 1B顯示程式失敗處置的另一項具體實施例,其中第三 (最後的重新配置)區塊和第二(中斷)區塊相同。 圖32A顯示造成彙總操作之初始更新操作的流程圖。 圖32B顯示根據本發明的一項較佳具體實施例,多階段彙 總操作的流程圖。 圖33顯示多階段彙總操作之第一及最後階段的範例時 序。 圖34A顯示其中中斷彙總區塊並非用作更新區塊而是用 作其莱總操作已經中斷之彙總區塊的例子。 圖34B顯示始於圖34A之多階段彙總的第三及最後階段。 圖35A顯示其中維持中斷彙總區塊為接收主機寫入之更 新區塊而非彙總區塊的例子。 圖35B顯示始於第二例中圖35八之多階段彙總的第三及 最後階段。 圖36A顯示套用於主機寫入觸發關閉更新區塊且更新區 塊為循序時之情況的階段性程式錯誤處置方法。 98705.doc 1269154 圖36B顯示在更新區塊之更新的例子中套用於(局部區塊 系統)的階段性程式錯誤處置方法。 圖36C顯示處理廢棄項目收集操作的階段性程式錯誤,或 不支援映射至中繼區塊之邏輯群組之記憶體區塊管理系統 中的清除。 圖37顯示在每N個區段寫入相同的邏輯群組後將區 段寫入關聯之混亂索引區段區塊的排程範例。 圖38A顯示直到在預定數量的寫入後在其中記錄cbi區 段時的更新區塊。 圖38B顯示圖38A之進一步在索引區段後在其中記錄資 料頁面1、2及4的更新區塊。 圖3 8C顯示圖3 8B之具有另一寫入以觸發索引區段下一 個記錄之邏輯區段的更新區塊。 圖3 9 A顯示儲存於混鉱更新區塊中各資料區段標頭之中 間寫入的中間索引。 圖39B顯示在寫入的各區段標頭中储存中間寫入之中間 索引的範例。 圖40顯示在混亂更新區塊之各資料區段標頭中儲存的混 亂索引欄位中的資訊。 圖41A顯示當各記憶體單元儲存兩個位元的資料時,*狀 態記憶體陣列的定限電壓分布。 圖41B顯示現有使用格雷碼(Gray code)的2次編碼過程程 式化方案。 圖42顯示藉由儲存複製的各區段以防衛關鍵資料的方 98705.doc -125 - 1269154 式。例如,可將區段A ' B、c、及D儲存在複製複本中。如 在一個區段複本中有資料毀損,則可以讀取另一個來取代。 圖43顯示其中通常將複製區段儲存在多重狀態記憶體的 非健全性。 圖44A顯示將關鍵資料錯開之複製複本儲存至多重狀態 記憶體的一項具體實施例。 圖44B顯示只將關鍵資料之複製複本儲存至多重狀態記 憶體之邏輯上方頁面的另一項具體實施例。 圖44C顯示又另一項以多重狀態記憶體的二進制模式儲 存關鍵資料之複製複本的具體實施例。 圖45顯示同時將關鍵資料之複製複本儲存至兩個不同中 繼區塊的又另一項具體實施例。 圖46A和圖41A同在顯示4狀態記憶體陣列的定限電壓分 布並顯示作為圖46B的參考。 圖46B顯示使用容錯碼同時儲存關鍵資料之複製複本的 又另一項具體實施例。 圖47為顯示兩個資料複本之可能狀態及資料有效性的表 圖48顯示先佔式重新配置儲存控制資料之記憶體區塊的 流程圖。 【主要元件符號說明】 1 缺陷區塊 2 中斷區塊 3 重新配置區塊 98705.doc -126- 1269154 10 主機 20 記憶體系統 100 控制器 110 介面 120 處理器 121 選用性副處理器 122 唯讀記憶體(ROM) 124 選用性可程式非揮發性記憶體 130 隨機存取記憶體(RAM) 132 快取記憶體 134 、 610 配置區塊清單(ABL) 136 、 740 清除區塊清單(CBL) 140 邏輯對實體位址轉譯模組 150 更新區塊管理器模組 152 循序更新 154 混亂更新 160 抹除區塊管理器模組 162 結束區塊管理器 170 中繼區塊連結管理器 180 控制資料互換 200 記憶體 210 群組位址表(GAT) 220 混亂區塊索引(CBI) 230 、 770 已抹除的區塊清單(EBL) 98705.doc 127-
MAP 已抹除的ABL區塊清單 _ 開啟的更新區塊清單 關聯的原始區塊清單 · 關閉的更新區塊清單 - 已抹除的原始區塊清單 CBI區塊 邏輯群組 $ 原始中繼區塊 混亂更新區塊 MAP區塊 抹除區塊管理(EBM)區段 可用的區塊緩衝器(ABB) 已抹除的區塊緩衝器(EBB) 已清除的區塊緩衝器(CBB) MAP區段 φ 來源MAP區段 目的地MAP區段 平面 讀取及程式電路 頁面 控制器 緩衝器 資料匯流排 -128 -

Claims (1)

  1. Π69Μ141438號專利申請案跑良g %6^f: 85i. f / a 十、申請專利範圍:::::::¾ 一種在一組織成區塊的非揮發性記憶體中用於儲存資料 、法其中各區塊已分割成可一起抹除的記憶體單元, 各記憶體單元用於儲存_邏輯單元的資料,該方法包含·· 在第一區塊中儲存一連串邏輯單元的資料; 為了回應儲存一些該等邏輯單元後在該第一區塊的儲 存失敗,在作為該第_區塊之_中斷區塊的_第二區塊中 儲存後續的邏輯單元; j了回應-預定的事件,將儲存在該第—區塊的 輯早元傳送至一第三區塊;及 丟棄該第一區塊。 2. 3. 4. ▲主^項1之方去,其中該第三區塊及該第二區塊相同。 二員1之方去,其中該第三區塊及該第二區塊不同。 如請求们之方法’其中從該第—區塊傳送該—些邏輯單 :至該第三區塊僅涉及在其上之該等邏輯單元的目前版 本〇 5. 6. 如請求項1之方法, 記憶體單元。 如請求項1之方法 EEPROM 〇 其中該非揮發性記憶體具有浮動閘極 ’其中該非揮發性記憶體係為快閃 7.如請求項1之方法 8·如請求項1之方法 中。 其中該非揮發性記憶體係為NROM。 其中該非揮發性記憶體係在一記憶卡 9.如請求項1至 中任一 項之方法,其中該非揮發性記憶體具 98705-950628.doc 更J正替換頁:: 1269154 ίο 11 12. 13. 14. 15. 16. 有各儲存一位元之資料的記憶體單元。 •如請求項1至8中任一項之方法,農 /、中該非揮發性記憶體具 有各儲存-位元以上之資料的記憶體單元。 一種非揮發性記憶體,其包含·· 一組織成區塊的記憶體,各區 .^ 合匕塊已分割成可一起抹除的 各己憶體單元,各記憶體單元可 _ ^ ^ 存一邏輯早兀的資料; 一控制器,用於控制該等區塊的操作; 、 該控制器可在-第-區塊中儲存一連串的邏輯單元; 為了回應在該第一區塊中儲存一些邏輯單元後在其中 的儲存失敗,該控制器可在作為 ^ F馮该弟一區塊之一中斷區塊 的一第二區塊中儲存後續的邏輯單元; 為了回應一預定的事件,在丟睾 古黹該弟一區塊之前該控制 器將儲存在該第一區塊的該蓉羅結 凡幻通寺邏輯早元傳送至一第三區 塊。 如請求項η之非揮發性記憶體,其中該第三區塊及該第 區塊相同。 其中該第三區塊及該第二 如請求項11之非揮發性記憶體 區塊不同。 如請求項11之非揮發性記憶體,其中僅邏輯單元的目前版 本由該控制器從該第一區塊傳送至該第三區塊。 如請求項11之非揮發性記情髀,甘士 4 ^ 平知庄體,其中該非揮發性記憶體具 有浮動閘極記憶體單元。 如請求項11之非揮發性記情體,甘士 # ^ 平知『王‘ U體,其中該非揮發性記憶體係 為快閃EEPROM。 98705-950628.doc 1269154 曰修(id正替換d 17.如睛求項11之非揮發性記情㈣甘士 °己隱體,其中該非揮發性記憶體係 為 NROM。 1 8_如請求項11之非揮發性言愔 十奴1王σ己隱體,其中該非揮發性記憶體係 在一記憶卡中。 19·如明求項11至18中任—項之非揮發性記憶體,其中該非揮 發性記憶體具有各儲存_位元之資料的記憶體單元。 〇·如明求項11至1 8中任-項之非揮發性記憶體,其中該非揮 么丨生α己隐體具有各儲存一位元以上之資料的記憶體單元。 21 · -種在—組織成區塊的非揮發性記憶體中用於儲存及更 ,的方法,其中各區塊已分割成可-起抹除的記憶體 早疋,各記憶體單元用於餘存一邏輯單元的資料,該方法 包含: 將貝料組織成複數個邏輯群組,各邏輯群組係為一群組 邏輯的單元; 接收封裝在邏輯單元中的主機資料; 时根據第一順序在一第一區塊中儲存一邏輯群組之邏輯 早兀的一第一版本,以建立該邏輯群組的一原始區塊;及 根據一第二順序在一第二區塊中儲存包括該邏輯群組之 邏輯口〇 - / * 早兀的後續版本,以建立該邏輯群組的一更新區塊; :、了回應一彙總的預定事件,藉由在一第三區塊中儲存 Λ —順序相同之收集自該原始及更新區塊之群組之 2^ - 疋的目前版本,建立該邏輯群組的一彙總區塊; 為了 ·、、、回應該彙總區塊的一儲存失敗,藉由在一第四區塊 中儲在$ 上 片 ϋ 5亥第一順序相同之遺失自該彙總區塊之群組的 98705-950628.doc 1269154 邏輯單元,提供一中斷彙總區塊;及 以該第二區塊取代該第一區塊,及以該第三區塊取代該 第二區塊。 22. 如請求項21之方法,進一步包含: 為了回應該中斷彙總區塊之完整彙總的預定事件,在該 中斷彙總區塊中健存和第一順序相同之從中遺失之群組 的邏輯單元;及 以該完整彙總的中斷囊總區塊取代該群組的該原始區 塊。 23. 如請求項21之方法,其中各邏輯單元係為—區段的主機資 料。 24. 如請求項21之方*,其巾各邏輯單元料可赫㈣記憶 體之一記憶體頁面之資料的一邏輯頁面。 25·如睛求項24之方法,豆中久彳羅經百 八甲各璉輯頁面包含一或多個區段的 資料。 2 6 ·如睛求項21之方法,盆中贫非禮疏 、T该非揮發性記憶體具有浮動閘極 記憶體單元。 27.如請求項21之方法,1 φ呤非括找t 中°亥非揮發性記憶體係為快閃 EEPROM。 二求員21之方去,其中該非揮發性記憶體係為皿⑽。 =明求貝21之方法’其中該非揮發性記憶體係在一記憶卡 中。 3 0·如請求項21至29中任一頊夕古、1廿丄 „ . , ^. 、方法,其中該非揮發性記憶體 具有各儲存—位元之資料的記憶體單元。 98705-950628.doc 1269154 年i日修(#)正替换冥I i 3 1 ·如請求項2 1至29中任一項之方法,其中該非揮發性記憶體 具有各儲存一位元以上之資料的記憶體單元。 98705-950628.doc
TW093141438A 2003-12-30 2004-12-30 Non-volatile memory and method of storing data in a non-volatile memory TWI269154B (en)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/750,155 US7139864B2 (en) 2003-12-30 2003-12-30 Non-volatile memory and method with block management system
US10/917,889 US20050166087A1 (en) 2003-12-30 2004-08-13 Non-volatile memory and method with phased program failure handling

Publications (2)

Publication Number Publication Date
TW200601030A TW200601030A (en) 2006-01-01
TWI269154B true TWI269154B (en) 2006-12-21

Family

ID=34753196

Family Applications (1)

Application Number Title Priority Date Filing Date
TW093141438A TWI269154B (en) 2003-12-30 2004-12-30 Non-volatile memory and method of storing data in a non-volatile memory

Country Status (5)

Country Link
EP (1) EP1704479B1 (zh)
JP (1) JP2007519996A (zh)
KR (1) KR20060121270A (zh)
TW (1) TWI269154B (zh)
WO (1) WO2005066964A2 (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890693B2 (en) 2007-01-25 2011-02-15 Genesys Logic, Inc. Flash translation layer apparatus
US8751904B2 (en) 2010-07-22 2014-06-10 Silicon Motion Inc. Controlling methods and controllers utilized in flash memory device for referring to data compression result to adjust ECC protection capability

Families Citing this family (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7139864B2 (en) 2003-12-30 2006-11-21 Sandisk Corporation Non-volatile memory and method with block management system
US7962801B2 (en) * 2008-10-15 2011-06-14 Silicon Motion, Inc. Link table recovery method
US8429391B2 (en) * 2010-04-16 2013-04-23 Micron Technology, Inc. Boot partitions in memory devices and systems
US9417803B2 (en) * 2011-09-20 2016-08-16 Apple Inc. Adaptive mapping of logical addresses to memory devices in solid state drives
TWI479315B (zh) * 2012-07-03 2015-04-01 Phison Electronics Corp 記憶體儲存裝置、其記憶體控制器與資料寫入方法
TWI479313B (zh) * 2012-07-11 2015-04-01 Phison Electronics Corp 資料寫入方法、記憶體控制器與記憶體儲存裝置
CN103544124B (zh) * 2012-07-16 2018-01-19 上海塞尚通信技术有限公司 Nand Flash存储器的访问方法
CN103544118B (zh) * 2012-07-17 2016-09-14 群联电子股份有限公司 存储器储存装置、其存储器控制器与数据写入方法
KR102331544B1 (ko) * 2014-10-16 2021-11-26 현대모비스 주식회사 차량용 블루투스 제어장치 및 방법
US9817593B1 (en) 2016-07-11 2017-11-14 Sandisk Technologies Llc Block management in non-volatile memory system with non-blocking control sync system
CN109947374B (zh) * 2019-04-01 2022-07-22 江苏华存电子科技有限公司 一种闪存主控模块中写入错误的冗余备援保护方法

Family Cites Families (8)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3122222B2 (ja) * 1992-05-08 2001-01-09 株式会社東芝 メモリカード装置
JPH0997218A (ja) * 1995-09-28 1997-04-08 Canon Inc フラッシュrom管理方法及び装置及びコンピュータ制御装置
JP3702923B2 (ja) * 1997-02-28 2005-10-05 ソニー株式会社 情報処理方法および情報処理装置
US6377500B1 (en) * 1999-11-11 2002-04-23 Kabushiki Kaisha Toshiba Memory system with a non-volatile memory, having address translating function
JP2001142774A (ja) * 1999-11-11 2001-05-25 Toshiba Corp メモリカード及び同カードに適用されるアドレス変換方法
JP2001350673A (ja) * 2000-06-05 2001-12-21 Hitachi Ltd フラッシュメモリアクセス制御方法
JP4031190B2 (ja) * 2000-09-29 2008-01-09 株式会社東芝 メモリカード、不揮発性メモリ、不揮発性メモリのデータ書き込み方法及びデータ書き込み装置
JP4280055B2 (ja) * 2001-11-28 2009-06-17 株式会社Access メモリ制御方法および装置

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7890693B2 (en) 2007-01-25 2011-02-15 Genesys Logic, Inc. Flash translation layer apparatus
US8751904B2 (en) 2010-07-22 2014-06-10 Silicon Motion Inc. Controlling methods and controllers utilized in flash memory device for referring to data compression result to adjust ECC protection capability
TWI455144B (zh) * 2010-07-22 2014-10-01 Silicon Motion Inc 使用於快閃記憶體的控制方法與控制器

Also Published As

Publication number Publication date
WO2005066964A3 (en) 2005-09-22
KR20060121270A (ko) 2006-11-28
WO2005066964A2 (en) 2005-07-21
TW200601030A (en) 2006-01-01
EP1704479B1 (en) 2014-03-26
JP2007519996A (ja) 2007-07-19
EP1704479A2 (en) 2006-09-27

Similar Documents

Publication Publication Date Title
TWI288328B (en) Non-volatile memory and method with non-sequential update block management
TWI288327B (en) Non-volatile memory and method with control data management
JP4933269B2 (ja) 不揮発性メモリおよびメモリプレーン配列を伴う方法
TWI272487B (en) Non-volatile memory and method with memory planes alignment
TWI269154B (en) Non-volatile memory and method of storing data in a non-volatile memory
JP4682261B2 (ja) 不揮発性メモリおよびクラスベースの更新ブロック置換規則のための方法
TW200844999A (en) Non-volatile memory with worst-case control data management and methods therefor
JP2007519996A6 (ja) 不揮発性メモリおよびフェーズ化されたプログラム障害処理を伴う方法

Legal Events

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