本發明一般係關於半導體非揮發性資料儲存系統,更明確言之,係關於一種將實體區塊形成為容納非揮發性資料儲存系統中之缺陷的較大邏輯結構之系統與方法。
諸如快閃記憶體之類的非揮發性記憶體裝置通常用作為大量資料儲存子系統。此類非揮發性記憶體裝置通常以封閉卡(其係以可移除的方式與主機系統連接)的形式加以封裝,並且亦可作為主機系統內非可移除的嵌入式儲存器而加以封裝。在一典型實施方案中,該等子系統包括一或多個快閃裝置,並且通常包括一子系統
控制器。
目前的商業記憶卡格式包括個人電腦記憶卡國際協會(PCMCIA)、CompactFlash(CF)、MultiMediaCard(MMC)、安全數位卡(SD)、記憶棒卡與MemoryStick-Pro格式。此等卡的一供應商係SanDisk公司,其係本申請案的受讓人。此類卡適用的主機系統包括數位相機、
蜂巢電話、個人電腦、筆記型電腦、手持計算裝置、聲頻重製裝置等。
該等非揮發性記憶體裝置本身係由非揮發性儲存元件之一或多個陣列所組成。每個儲存元件能夠儲存一或多個位元資料。非揮發性記憶體陣列的一重要特徵係,其將程式化的資料保留於其中,即使在記憶體陣列斷電時。相反,揮發性記憶體裝置要求週期性地更新陣列的功率,以便保留揮發性記憶體陣列中所含的資料。非揮發性記憶體的另一特徵係,一旦程式化非揮發性記憶體陣列內所含的一單元,則在使用新的資料值重新程式化該單元之前,必須首先抹除該單元。
可藉由使用一浮動閘極電晶體,例如電可抹除可程式化唯讀記憶體(EEPROM)來實施用於將電荷儲存於記憶體單元之實體構件。諸如EEPROM之類浮動閘極裝置的一熟知問題係,在極大數目的寫入、程式化與抹除循環之後,該浮動閘極最終損壞並故障。當發生此種情況時,該單元不可再使用,必須將其從該陣列中的可用記憶體單元之列表中剔除。此類缺陷稱為「生長」缺陷。在一市售實施方案中,藉由將該等缺陷單元映射出去並且將良好記憶體單元之實體位址替代新偵測到的缺陷記憶體單元來處理此等缺陷。將缺陷單元或扇區映射出去並加以代替的實施方案之範例係在1997年8月19日頒予Mehrotra等人的美國專利第5,659,550號、1997年9月23日頒予Harari等人的美國專利第5,671,229號;以及1999年1月19日頒予Harari等人的美國專利第5,862,080號中說明,本文中以引用方式特意將該等申請案全部併入本文中。
通常將非揮發性記憶體單元之陣列分成多個群組,以有效地實施讀取、程式化與抹除功能。例如,在許多非揮發性記憶體架構中,將該等記憶體單元配置成稱為抹除單元的較大群組。此抹除單元係可一次抹除的記憶體單元之最小數目。
抹除單元的大小取決於所實施的記憶體架構。在較早的非揮發性記憶體中,抹除單元係大小與標準512位元組磁碟機扇區相同的區塊。在一商業形式中,每一區塊包含足夠的單元,用於儲存一扇區之使用者資料加上與使用者資料及/或儲存於該區塊相關之某些負擔資料。為了確保個別地抹除單元之區塊,必須將該等區塊彼此充分地隔離。
因為此隔離佔據了積體電路晶片上有用的空間,故開發出另一記憶體架構,其中使抹除單元明顯更大,以便此類隔離所需的空間較少。於2003年6月17日頒予Conley等人的美國專利第6,580,638號中說明此大區塊系統架構之範例,該專利係2002年7月30日頒發的美國專利第6,426,893號之接續專利案。以引用方式特意將此等兩份專利全文併入本文中。在大區塊系統中,通常進一步將該抹除單元分成可個別定址的頁面,其係讀取與程式化使用者資料之基本單元(程式化及/或讀取的單元)。在一商業實施方案中,該抹除單元係一元區塊。一元區塊係由多個實體抹除單元所組成的虛擬抹除單元。此等多重實體抹除單元可用在平行的程式化與抹除操作中,但係作為單一邏輯區塊來定址。
於美國專利第6,034,897號中說明一種形成元區塊或「超」區塊之方法,以引用方式特意將該專利案全文併入本文中。如本文所述,對於具有數個裝置的記憶體,可將每一裝置中相同的實體區塊群聚成一元區塊。儘管此可形成元區塊以及一給定元區塊中由相同位址(即第一裝置中的區塊位址)定址所有區塊,但其具有若干限制。例如,如果區塊至元區塊中的鏈接在此固定的配置中係預定的,則當一區塊變壞時,該區塊所屬的元區塊變壞,儘管元區塊內的其他區塊仍在起作用。因此,理想的目標係提供一種用於可適應元區塊配置之系統與方法,而免去每次需要新鏈接時建立新鏈接之操作負擔。
本發明之各方面克服先前技術中將實體記憶體結構鏈接至複合邏輯結構中時的此等與其他限制。在本發明之主要具體實施例中,揭示了用於在快閃記憶體中形成元區塊結構之技術。根據本發明之第一方面,更新區塊至元區塊的鏈接,以容納記憶體的缺陷部分。一種用於保持缺陷圖的系統包括一缺陷圖結構,其用於在組織成元區塊的非揮發性記憶體系統中追蹤工廠缺陷與生長缺陷之存在。一種用於保持缺陷圖的方法利用缺陷圖結構與元區塊的特徵。在一具體實施例中,缺陷圖結構的大小等同於非揮發性記憶體系統的平行性。在另一具體實施例中,將無法
指定給元區塊的剩餘抹除單元保持於備用抹除單元之一列表中,以供以後使用。
根據本發明之另一方面,將區塊至元區塊中之鏈接的一記錄保持於非揮發性記憶體中。於是,當需要時,該控制器可讀出至其揮發性記憶體中的鏈接。回應於由缺陷所產生的重新鏈接而更新記錄。可將完整的鏈接記錄保持於非揮發性記憶體中,例如,在指定的
位置,或僅保持一部分鏈接記錄。在本發明之另一方面中,藉由一演
算法(其使用,例如,以韌體為基礎的實施方案)來決定性地形成區塊至元區塊中的初始鏈接。在此種情形下,儲存於非揮發性記憶體中的鏈接記錄僅需包含與標準演算法的偏差。
本發明之其他方面、特徵與優點包括於以下對範例性具體實施例之說明中,且應結合附圖閱讀此說明。
一般而言,本發明之記憶體系統在其主要非揮發性記憶體中保持區塊至多區塊元區塊結構之鏈接的一記錄。此記錄在可根據需要讀取到非揮發性記憶體中的一映射表中包含工廠與生長缺陷之缺陷圖。在碰到生長缺陷並且將區塊指定給新的位置時更新此圖。元區塊較佳係由數個子陣列或平面之每一子陣列或平面中的一區塊形成,並且在此種情形下,較佳係將每一平面中編號相同的區塊群聚在一起,除了被標記為不良並且置於缺陷圖中的區塊。在一具體實施例中,將該等區塊直接映射至替代的區塊。接著使用對應平面中的替代區塊重新形成將包含缺陷區塊的元區塊。並非將區塊至元區塊之鏈接的完整記錄保持於非揮發性記憶體內,一「標準」的鏈接可基於一植入,例如,系統韌體中的演算法,其中僅需要儲存由缺陷引起的與此演算法的偏差。該等無缺陷存在的標準元區塊將稱為可用的標準元區塊。剩餘的元區塊稱為不可使用的標準元區塊,並且組件實體區塊稱為備用區塊。
圖1至3係典型現有非揮發性記憶體系統之方塊圖,該等系統包括一主機102、202、302;一控制器104、204、304與一非揮發性記憶體陣列或複數個陣列103、203、303。在圖1中,將非揮發性記憶體陣列103與記憶體控制器104顯示為封裝於封閉卡中,該封閉卡以可移除方式與主機系統102連接。在圖2中,將控制器204顯示為主機系統202的部分,並且將非揮發性記憶體陣列203顯示為封裝於封閉卡中,該封閉卡以可移除的方式與主機系統連接。在圖3中,將該非揮發性記憶體陣列303顯示為作為主機系統302內非可移除的嵌入式儲存器而封裝。
一般而言,該非揮發性記憶體陣列包括多個記憶體單元,其包括一或多個導電浮動閘極作為儲存元件。該等記憶體陣列可包括其他長期電子電荷儲存元件,例如電荷捕獲介電質。可使用多種非揮發性儲存元件,其包括非揮發性多狀態儲存元件,係Flash/EEPROM/浮動閘極之儲存元件、諸如NROM、MNOS、MRAM/FRAM、NAND、NOR之類非揮發性儲存元件以及組織成抹除單元的非揮發性儲存元件。可使用儲存數位資訊、類比資訊或兩者之組合的非揮發性儲存元件。
可使用為每一儲存元件定義的兩個電荷位準來操作記憶體單元陣列,從而使用每一元件儲存一位元的資料。或者,可為每一儲存元件定義兩個以上的儲存狀態,在該情形下,可在每一儲存元件中儲存一位元以上的資料。
圖4a說明如何可將一記憶體晶片格式化為抹除單元(或區塊)之群組的範例,其中根據實體平面與邏輯區域來配置該等區塊。以此方式分割晶片的某些原因包括等化每一群組內良好抹除單元的數目,並且留出記憶體晶片的特殊用途區段。例如,可留出特殊的「保留」區段,以儲存諸如系統與裝置參數之類的資訊以及有關區域對齊的資訊。亦可留出區段來儲存備用的抹除單元,亦稱為備用區或備用區塊。可將與備用區有關的資訊,例如,其實體位址,保持於一備用區列表中,以供需要時進行擷取。例如,當在N個區域之一區域中所含的多個抹除單元之一抹除單元中偵測到缺陷時,可藉由將有缺陷的抹除單元重新映射至可用的多個備用抹除單元之一備用抹除單元而找到備用區。
來自主機的資料通常只被提供至識別為邏輯扇區的記憶體系統。例如,該主機將傳送根據起始邏輯扇區與扇區總數來說明的資料。在該主機內,可將此等邏輯扇區結構
化成較大的單元,但通常不將此資訊傳遞至該記憶體的控制器。(然而,可使用此等主機結構之知識,以獲得記憶體中的實體結構或控制器結構,當其將反映主機如何傳輸資料時,其會反映此等主機結構:例如,通常將記憶體結構化為根據大小與邏輯扇區相同的實體扇區來儲存使用者資料。)該控制器將主機結構組織成模仿實體結構的邏輯結構,以便更有效地將其儲存於實體記憶體中。例如,在一常見的配置中,該記憶體系統控制器將邏輯扇區(如主機所定義)群聚成邏輯區塊,該等邏輯區塊的大小對應於一區塊的實體結構,其中區塊係用於快閃型記憶體之實體抹除單元。接著,該控制器可以,例如,扇區位址表(Sector Address Table;SAT)的形式保持實體結構與邏輯結構的關係,並且當邏輯與實體關係發生變化時更新此對應關係。
為了獲得更大的效率,記憶體系統通常藉由引入更大的結構而增加平行性。例如,在具有若干可同時被讀取、寫入或讀寫之半自律陣列的記憶體系統中,將來自不同陣列的區塊群聚成「元區塊」結構,並且該控制器將資料的邏輯區塊形成為對應的邏輯元區塊,以允許同時操作多重區塊。可由具有單一記憶體晶片的平面或橫跨數個記憶體晶片而分佈的一或多個平面來形成元區塊。以此方式,藉由允許一組(邏輯上)連續的扇區橫跨多個可被平行讀取/程式化/抹除的實體區塊,則可以最少量的非同時讀取、程式化或抹除操作來同時讀取/程式化/抹除此群組。此配置有助於連續讀取與寫入較大量資料之邏輯上相鄰的扇區。
首先將論述圖5至10的結構,接著將個別地解釋每一圖式所示的操作。圖5至10顯示四個平面中六個區塊的配置,用於總共24個抹除單元,作為圖1至3之記憶體陣列之範例。為方便起見,該等抹除單元將稱為區塊,因為區塊係一種抹除單元。為便於解釋,選擇此6x4區塊結構之大小,此點將在下文中顯而易見。一典型的記憶體陣列將包含比此處所示者多得多的區塊(具有多得多的列),並且如果非揮發性記憶體系統的平行性大於四,則可能具有比所示更多的平面。
每一平面通常具有其自己的資料暫存器與程式化電路。此允許同時程式化於每一平面之記憶體單元之區塊中。每一平面可半獨立於其他平面而操作。為便於說明,圖5至10所述平面係顯示為具有6個實體區塊0至5。在任何給定配置中區塊的實際數目可能較低,但通常要高得多。
在具有大量區塊的系統中,可在邏輯上將該等平面分成圖4a所示的區域。該等區域橫跨該等複數個平面而延伸。將該等平面分成區域的做法可將一平面分成較小的更易於管理的區段。每一平面中一區域內的區塊可佔據同一組相鄰的實體區塊位址。區域的數目並未受特別限制,儘管實際的設計決策可影響特定記憶體系統中所實施的區域數目。本發明的各方面可在具有或不具有區域結構的記憶體中實施,並且對於具有區域結構的記憶體,係在作為整體或具有個別區域的平面內實施。
應用於圖5至10之情形中的記憶體系統所用的操作單元較佳係一元區塊。一元區塊表示複數個實體區塊橫跨平面之虛擬鏈接。一元區塊的選擇性使用包括該元區塊內所有區塊之管線式抹除以及來自該元區塊之每一區塊之一或多個頁面之管線式程式化與讀取。
一元區塊橫跨多個平面而延伸,並通常包括來自此等平面之每一平面的一區塊,如圖5至10中所示每一組連接箭頭中的箭頭所示。圖5顯示元區塊的最簡單形式,其中每一元區塊的每一實體區塊具有相同的區塊偏移,並且橫跨所有四個平面0至3而延伸。圖10說明另外兩個複雜的元區塊。將在圖5至10的說明中論述此等元區塊的建立,其中但碰到缺陷時,更新元區塊中所含有的組件區塊。
圖4b中顯示區塊至元區塊之鏈接的更一般情況。系統的記憶體部分(分別係圖1至3的103、203、303)係由晶片0至Z所組成,其中每一晶片具有數個平面,例如晶片0具有多個平面00至0W。一平面中每一鏈接的實體單元,如x所示,可由單一實體區塊所組成,如圖4c所示,或由多個實體區塊所組成,如圖4d所示。當實體區塊較小時,圖4d所示不僅橫跨平面與晶片而且亦在深度方向鏈接區塊之該種兩維元區塊可能特別方便。然而,方便可能不是圖4d之配置之唯一或主要原因。在通常或一維的鏈接中,主要的動機係要提供一處理資料的機制,此等資料可被同時寫入至不同晶片/平面的多個區塊。同樣,如果記憶體設計允許平行地存取(讀取與程式化)一平面中一個以上的位置,則鏈接相同平面中的多個區塊亦可能係有意義的。
顯示數個元區塊鏈接,其中根據該鏈接中第一區塊之第一列對每一元區塊MB進行編號;例如,開始於區塊0的元區塊係標為MB 0 等。儘管圖4b顯示每一平面在一給定鏈接中具有一區塊(並且僅具有一區塊)並且該鏈接橫跨數個平面而延伸,但是此等兩種情況不一定總是如此。例如,一鏈接(例如由圖5至10的四個區塊所組成)可由單一晶片上的四個平面或來自四個平面的一平面所組成。
如圖4b所示,鏈接MB 0 的所有區塊來自相同列,MB 1 的大多數區塊來自相同列,並且MB 2 的每一區塊來自前一區塊下面的列。為便於論述,圖5至10之論述將採用情形MB 0 ,其中所有區塊來自相同的列,以下論述更一般的情形。此等各種鏈接方法可能係固定的,或根據以下詳述的本發明之一方面,係根據一演算法予以決定。(或者,初始的決定可基於隨機的配置。)從更一般的意義上說,應瞭解,本發明的各種方面一般適用於實體結構係形成於較大的邏輯集塊中,並且適用於如何管理此等集塊。
圖10所示的第一元區塊在四個平面0至3之每一平面中包括區塊0。第二元區塊包括在平面0中的區塊1,平面1中的區塊4,平面2中的區塊5,以及平面3的區塊4。第三元區塊在四個平面0至3之每一平面中包括區塊2。第四元區塊包括在平面0中的區塊3,平面1中的區塊3,平面2中的區塊3,以及平面3的區塊1。
或者,元區塊僅可包括單一區域內所含有的數個平面之一子集。此範例未予顯示,但如果平行性的可變程度係理想的,則其可能係有用的。具有可變程度之平行性的系統可允許區塊在具有不同平行性的區域之間移動。例如,包含兩個而非四個區塊的元區塊可從平行性係二(兩個平面)的區域移動至平行性係四(如同在四平面範例中)的區域。如果在此一系統中存在各包含兩個部件的兩個元區塊,則其可組合於一四部件元區塊中。使用此一混合平行性系統的一警告係,必須調整缺陷圖,使其適應可變的平行性。
一般而言,使用元區塊可藉由允許一次平行地處理多個區塊而增加記憶體系統的平行性。此增加的平行性大幅增加記憶體系統的性能。該記憶體系統在各種元區塊內保持個別區塊的識別項。例如,可作為該系統內任何方便位置中的鏈接列表來保持各種元區塊內個別區塊的識別項。
通常,與每一頁面之使用者資料一起儲存的負擔資料將包括一邏輯及/或實體位址,其足以識別頁面所在的平面、區域與區塊,以及該區塊內該頁面的偏移。接著,藉由控制器讀取頁面負擔資料之此等位址欄位而在該控制器的記憶體內建立一位址圖。此通常係一次針對記憶體的部分而完成,其在關於記憶體之該部分的程式化、讀取或抹除操作之前。
圖5至10顯示系統如何回應於在記憶體陣列的實體區塊中偵測到缺陷。此等缺陷可能係工廠或生長缺陷。此系列之圖式係要顯示每次碰到新的缺陷時會發生什麼情況。基於說明之目的,編號為1至5的實體區塊包含缺陷。
在第一圖式中,圖5顯示其中不存在缺陷之記憶體陣列之一部分。藉由橫跨所有四個平面而延伸的六個
水平箭頭來描述複數個元區塊。每個元區塊包含已定義的數個實體區塊。在圖5至10中,對於所有的元區塊,已定義實體區塊的數目係四,其對應於平面的數目。
圖5顯示記憶體陣列部分中未找到工廠或生長缺陷。橫跨示意圖而水平延伸的黑色箭頭描述六個線性標準元區塊。如圖5所示,線性標準元區塊係包含具有匹配偏移之實體區塊之元區塊。初始鏈接可根據一演算法來建立,如以下進一步說明,或係由可用良好區塊之抹除集區所形成。
在本發明的一具體實施例中,該元區塊的一特徵係,第一虛擬區塊位址(其與第一實體區塊位址相關)係用於決定與該特定元區塊相關之剩餘實體區塊之位置之唯一資訊,並且鏈接元區塊的其餘部分係由一鏈接演算法決定。此會縮小用於儲存元區塊所需的資料大小。如果在第一實體區塊中碰到缺陷,則整個元區塊變為無效,並且從位址空間中映射出去,因為不再有任何機制用於指向橫跨每一可用平面或多個平面而
定位的元區塊之剩餘部件。以下圖9之論述中將顯示此情況之一範例。
圖6顯示在碰到第一新的缺陷之後陣列的狀態。新的缺陷位於MB 1 中標為「A」的實體區塊,其位於平面2上的區塊1處。當一元區塊內的實體區塊失效時,元區塊無法照常使用。一簡單的解決方案將係將該元區塊從位址空間映射出去,並且不再使用。如果系統僅具有單一的不良實體區塊,並且沒有備用的區塊,則此係可用的唯一解決方式。然而,如果出現多重不良的實體區塊,則因為與失效元區塊相關的剩餘實體區塊可用來建立其他良好的元區塊,此解決方案很快變為多餘的。作為圖6中所找到的缺陷(標為「A」)的結果,剩餘的三個良好實體區塊(如影線標記所示)變為備用區。
圖7顯示在碰到第二新的缺陷之後陣列的狀態。新的缺陷位於標為「B」的實體區塊,其位於MB 3 中平面3上的區塊3處。在用於保持諸如圖11所示之缺陷圖的方法中,將在發生缺陷的平面(平面3)中搜尋任何可用的備用區塊。此處,實體區塊1在平面3中係可用的(如圖6中的影線標記所示)。因為區塊1在平面3中係可用的,故會將元區塊更新為指向區塊1,以便取代元區塊的缺陷部分;即MB 3 中平面3處的缺陷區塊(「B」)係由MB 1 中平面3處的良好區塊之鏈接中取代,該良好區塊係由於MB 1 之平面2處之區塊「A」失效而變為冗餘。當碰到實體區塊失效時,將備用的實體區塊鏈接到元區塊中,以取代失效的實體區塊。
(根據所用的命名規範,在圖6與7的點處沒有元區塊MB 1 ,因為根據平面0中的區塊編號來命名整個元區塊。名稱MB 1 後退,除非平面0處的區塊1返回到新的鏈接中,如圖8中所發生的情況。)
圖8顯示在碰到第三新的缺陷之後陣列的狀態。新的缺陷位於標為「C」的實體區塊,其位於平面0上的區塊4處。因為缺陷區塊係位於平面0上,無法重新鏈接此元區塊。位於平面0上的區塊係包含元區塊之其他部件之參考資訊之區塊,若無平面0上的區塊,則根據所採用的規範,沒有其他方式來參考元區塊。因此,即使一備用區塊在平面0上的區塊1處係可用的,其仍無法用於完成此元區塊。然而,平面0上的區塊1係重新映射進虛擬的位址空間中,並且係用作新的元區塊中的第一區塊,以利用先前元區塊MB 4 之平面1、2與3中現在冗餘的區塊。因而,缺陷區塊「A」可藉由平面2的區塊4來取代。因為圖7中已重新映射平面3的區塊1,故其亦需予以取代。因此,可使用平面2與3之區塊4處的備用區來形成重新鏈接的MB。對於平面1,一區塊在區塊1與區塊4中皆可用。儘管兩者皆可被選擇用來完成重新鏈接的MB 1 ,但在該範例中使用先前在MB 4 中的區塊。因此,重新鏈接的MB 1 ,包含平面0上的區塊1、平面1上的區塊4、平面2的區塊4與平面3上的區塊4。此時,僅有一個備用區塊保留於平面1上的區塊1處。
圖9顯示在碰到第四新的缺陷之後陣列的狀態。新的缺陷位於標為「D」的實體區塊,其位於平面0上的區塊5處。因為此時沒有備用區塊位於平面0中,故無法重新鏈接此元區塊。結果,可將剩餘的實體區塊添加至備用的實體區塊集區。此包括平面1上的區塊5、平面2上的區塊5與平面3上的區塊5。此時,有四個備用區塊在所示的記憶體陣列中係可用的。
圖10顯示在碰到第五新的缺陷之後陣列的狀態。新的缺陷位於標為「E」的實體區塊,其位於平面2上的區塊4處。因為備用的區塊在相同的平面上係可用的(平面2上的區塊5),故使用該備用區塊來重新鏈接該元區塊MB 1 。
應注意,在圖10中,儘管六個原始元區塊中的四個原始元區塊(對應於列1、3、4與5)具有不良區塊,但重新鏈接已得到四個良好的元區塊。根據固定的鏈接,例如在先前技術部分所述之美國專利第6,034,897號中所述,此等缺陷會導致六個所示元區塊中四個元區塊的損失。以此方式,當記憶體老化並出現缺陷時,仍保持較大的資料容量。
圖11說明如何可使用邏輯至實體映射表1101來映射一元區塊的組件部件。以影線標記所標記的區塊來顯示與LBN[0]相關的記憶體1103中的元區塊(或使用該結構之具體實施例中的記憶體區域)。記憶體的四個平面(在此範例中)可再次橫跨一個以上的晶片而分佈。LBN[0]中所包含的PBN項目指影線標記所標記並且係元區塊之部分的每一區塊之實體位址。平面0中所包含的元區塊之第一部件係用於存取其他元區塊部件。如關於圖5至10所述,如果發現平面0中的元區塊部件係有缺陷的,則必須將整個元區塊標記為有缺陷,因為其係經由平面0上的部件鏈接至元區塊的其餘部分。
映射表1101係用於形成元區塊之區塊之鏈接之一記錄之一範例。提供元區塊組成之一適應性之一技術係,無論何時一寫入程序需要一元區塊,以便由可用的良好區塊之一集區動態形成一元區塊。儘管此技術提供元區塊結構之適應性,但其要求無論何時需要一區塊時便重新建立鏈接;其進一步要求存取每一平面以便決定此集區。根據本發明之主要方面之一,將此記錄儲存於非揮發性記憶體中一位置處。接著,根據需要可將此記錄從快閃記憶體讀取至控制器上的揮發性記憶體(或替代的非揮發性記憶體),以用於位址轉換。
在一組具體實施例中,可將鏈接資訊的記錄保持於一特殊的非揮發性記憶體位置,例如在儲存使用者資料之正常實體區塊外部的某處。例如,可將此記錄保持於圖4a之平面0中的其中一個保留區域,或在如美國專利申請公開案US2003/0065899所述之配置中的任一系統區域中,該公開案係以引用方式併入本文。在另一組具體實施例中,可將鏈接資訊保持於已寫入或已部分寫入區塊之使用者資料扇區/控制資料扇區之標頭區域中。對於抹除狀態中的區塊,可將鏈接資訊儲存於非揮發性記憶體中的一特殊控制資料區域中。
藉由使用此一表格,可更新區塊至元區塊中的鏈接以容納缺陷,並且藉由將一記錄保持於非揮發性記憶體中,需要時可容易地對其進行存取,從而克服先前技術中所述的有關限制。
圖12說明本發明的缺陷圖方面,其在平面1上顯示一不良區塊。以「X」標記不良區塊。在發現區塊係有缺陷之前,元區塊LBN[0]的第二部件指向該區塊,如虛線箭頭1201所示。備用區塊1203的集合在影線標記所示的相同平面上具有可用的備用區。(或者,如果可在平面1中從已出錯的另一鏈接獲得一備用區,如圖5至10之程序所示,則可將其用於替代來自備用區1203集合的一區塊。)備用區PBN'的實體區塊編號(PBN)將取代失效區塊的PBN。結果,此備用區變為元區塊之部分,如箭頭1202所示。
圖13說明與圖11之映射結構類似的映射結構之範例。圖13的映射結構顯示一不良區塊,可能係生長缺陷,如平面2上的「X」所標記之區塊所示者。在與不良區塊相同的平面上無備用區可用,如平面2上抹除集區1303中備用區塊之集合不具有備用區之事實所示。因此,並非將平面2上的不良區塊重新引導為指向備用區,而是可將與元區塊之剩餘部分(平面0、1與3上的區塊)相關的實體區塊添加至備用區集區,如三個指向下方的箭頭所示。
圖14說明使用圖11至13之資料結構來保持缺陷圖之方法之一範例。如果偵測或碰到缺陷,則藉由查找實體位置或實體區塊編號(PBN)來決定該缺陷的位置。如果在與缺陷區塊之實體位置相同的平面中有一備用區塊可用,則使與該缺陷相關的元區塊指向備用區,以便取代缺陷區塊,然後更新缺陷圖。圖12中顯示此情況。否則,如果在與缺陷區塊相同的平面中沒有剩餘的備用區塊,則將元區塊中剩餘的良好區塊引導至備用區集區。圖13中顯示此情況。
如上所述,本發明之原理方面之一係,控制器將該鏈接表的一記錄保持於非揮發性記憶體中。此記錄可能係形成對應於一給定實體位址之每一元區塊之區塊之完整列表,例如圖11至13之邏輯至實體映射表1101。或者,實體區塊至元區塊之標準鏈接可能係基於一決定性演算法,並且保持於非揮發性記憶體中的記錄僅需包含與鏈接規則的任何偏差。當鏈接因缺陷而被更新,因此與標準鏈接偏差時,對應地更新該記錄。
所述用於將實體區塊鏈接至元區塊中的機制係設計成最大化用於不良實體區塊之任何分佈之元區塊數目,並且當實體區塊在系統的壽命期間失效時,允許產生新的元區塊。如上所述,根據元區塊中所併入之第一平面中實體區塊的位址來定義元區塊數目。
一「標準」元區塊包含實體區塊,其實體區塊位址係元區塊數目之決定性函數。例如,此可能係圖4b中元區塊MB 0 的配置,其亦係用於圖5至10之範例,其中標準元區塊之所有區塊係相同的列中。可將此配置表示為MBi=(i,i,i,i),其中圓括號中的第n項表示第n平面中的區塊所屬的列。
在另一範例中,如圖4b中元區塊MB 2 之配置,藉由元區塊編號加上一偏移來給定實體區塊位址,該偏移等於實體區塊所屬平面的連續編號,即元區塊i係由區塊i+(平面編號)所組成。對於由四個區塊所組成的元區塊,此可表示為MB i =(i, i+1, i+2, i+3)。圖15顯示此結構,並且可將其用於論述以演算法為基礎的鏈接表。更一般地,可將該以演算法為基礎的決定性鏈接說明為MB i =(i, f 1 (i,平面編號), f2(i,平面編號), f3(i,平面編號))其係針對四區塊之元區塊的情形,可按明顯的方式擴展到其他數目。在該表達式中,i係列編號,並且f 1 、f 2 與f 3 係列與平面編號的某些函數。依照元區塊編號與平面0之列編號相同的規範,MB i 中的第一項係i。對於圖5至10之範例,f 1 =f 2 =f 3 =i,而對於圖15,f 1 =f 2 =f 3 =i+(平面編號)。以演算法為基礎之鏈接之重新鏈接程序的論述將在很大程度上涵蓋圖5至10之程序之簡化形式,但基於圖15的標準鏈接。該控制器可使用以韌體為基礎的實施方案來決定標準的鏈接。
根據最大化標準元區塊之可能數目之規則將實體區塊鏈接到元區塊中。當鏈接元區塊時,如果所需的實體區塊可用,則建立標準的區塊。如果形成標準元區塊所需的任何實體區塊係不良的,則將元區塊編號歸類為未使用。在該情形中,將其他因此而保持為未鏈接的可用實體區塊歸類為備用,如針對圖15中的元區塊n+1所示。
本發明的另一方面係根據卡上的缺陷圖案來最佳化標準鏈接圖案或最大化可用標準元區塊的數目。當格式化(或重新格式化)一卡時,可掃描不良區塊的圖案,並且作出有關「標準」鏈接圖案的決策,使其盡可能相互匹配。在許多情形下,用於標準鏈接之演算法與不良區塊圖案的匹配將縮小所需的重新鏈接元區塊與元位址至實體位址轉換負擔,從而(至少最初)最佳化該鏈接。圖16與17中顯示此情況的一範例。
圖16與17考慮有四個不良實體區塊以對
角形式配置的一範例,每一區塊來自每一平面0至3。在不良區塊之對角圖案的情形中,標準區塊的最佳圖案亦將係對角的,如圖16所示。結果,在此範例中,將完全不會有重新鏈接的區塊,因此,元區塊皆不需要透過鏈接表轉換,並且可用元區塊的數目增加。圖17顯示當標準鏈接係筆直跨越而非匹配不良區塊圖案時的等效情形。在標準方法係筆直跨越的範例中,需要重新鏈接三個元區塊(n+2、n+3與n+4)。
對於每一卡,對於每一次重新格式化,或對於兩者,標準區塊圖案係獨特的。此可提供額外等級的資料安全,其中每一卡具有橫跨不同區塊而擾亂資料之獨特方法。因此,儘管標準元區塊係使用相同的規則形成,但其不一定具有相同的配置。在另一具體實施例中,主機可能想要提供規則以及元區塊鏈接規則的代碼,使得演算法並非針對特定的系統。
當在初始的格式化程序期間鏈接元區塊時,無法將區塊位址空間起點附近或晶片或晶粒邊界附近的某些實體區塊鏈接到標準元區塊,如圖20所示。將此等實體區塊歸類為備用。將備用的實體區塊記錄於備用實體區塊列表中,並且隨後將其用於形成重新鏈接的元區塊,如圖19所述。
可將不能作為標準區塊而存在的元區塊結構化為重新鏈接的元區塊。可在記憶體系統的初始格式化程序期間,或回應於現有元區塊內實體區塊的失效而形成重新鏈接的元區塊。不能將圖19中的元區塊n+4作為標準元區塊來鏈接,因為平面2中所需的實體區塊係不良的。在此情形中,藉由取代平面2中的備用實體區塊來建立重新鏈接的元區塊。代替不良的實體區塊而予以重新鏈接的備用實體區塊較佳係位於與不良區塊相同的平面中,以保持元區塊內程式化的平行性。
在較佳的具體實施例中,較佳係僅在相同的晶粒或晶片內重新鏈接區塊,因為橫跨到另一晶粒或晶片的重新鏈接可能觸發額外的晶粒/晶片讀取或程式化。例如,在4平面元區塊的範例性情形中,其中元區塊跨越2個晶片,每個晶片具有2個平面,將資料程式化到所有4個平面(或從其讀取),此需要平行的2晶片讀取/程式化。(此可能不是100%平行,而係管線式的,使頁面讀取、區塊程式化與抹除可平行地完成,但共享資料匯流排,以致資料傳輸係不平行的)。在此種情形下,如果重新鏈接元區塊,以便從另一、第三晶片獲取實體區塊,則不可能與另外兩個晶片同時存取該元區塊,並且操作時間加倍。
如果藉由平面0中的備用區塊來取代平面0中的不良實體區塊,則可藉由備用區塊的編號來定義元區塊編號,如針對圖20中的元區塊n+1所顯示。如果隨後出現實體區塊失效,則可進一步重新鏈接已重新鏈接的元區塊。靠近位址空間頂部的元區塊(其無法作為標準元區塊而鏈接)可採取重新鏈接元區塊的形式。
如以上關於圖4d所述,亦存在使用二維元區塊的配置,該二維元區塊不僅橫跨平面與晶片鏈接區塊,而且亦在給定平面內沿深度方向鏈接區塊。圖21顯示在二維情形中重新鏈接之範例。在圖21中,該「2-D元區塊」係2*4元區塊的範例。當平行地存取所有8個區塊時,可達成最大性能好處。1-D鏈接方法之主要鏈接與重新鏈接原理亦適用,但需作一定的擴展。如圖式中可看出,一平面內任何實體區塊中一不良的實體區塊會導致元區塊未使用,如針對元區塊n所示的情形。當重新鏈接2-D元區塊時,如對於平面2中元區塊n+2之上部區塊,僅給定平面中的不良實體區塊才需要予以取代;例如,重新鏈接平面2中元區塊n+2的上部區塊,而平面2中元區塊n+2的下部區塊則不予重新鏈接。
在非揮發性記憶體中之一記錄中僅保持與標準鏈接之偏差的具體實施例中,可將用於元區塊鏈接之管理資料結構包含於快閃記憶體中之一或多個專用區塊鏈接管理區塊之兩類扇區內。此配置的優點係,相對於保存完整的鏈接,僅需儲存較少的資訊。將記憶體系統中每一重新鏈接元區塊之元區塊編號包含於一組鏈接表扇區中的一鏈接表中。不需要將標準元區塊之項目儲存於鏈接表中,因為係從元區塊編號決定性地產生其實體區塊位址。可將一RF(重新鏈接)旗標用作一元區塊的屬性,以指示該區塊是否係標準的,以及是否以標準方式來鏈接所有的區塊,或者其是否重新鏈接以及需要透過鏈接表(LT)進行額外的區塊位址轉換。可藉由分析LT來決定RF旗標,然後將其儲存於SRAM中,或將其儲存於主要非揮發性記憶體中的一控制資料結構中,作為元資料區塊的屬性。或者,可將重新鏈接扇區的一列表保存於一可進行搜尋以決定重新鏈接哪些元區塊的列表中。可藉由元區塊編號來排序鏈接表中的項目,並且每一項具有用於元區塊編號與每一鏈接實體區塊之區塊位址之欄位。
在鏈接表結構的一擴展中,與建立標準鏈接之基本演算法的偏差本身可基於一組規則;例如,可將非標準的鏈接限於單一平面或限制一區塊可從其原始列重新鏈接至多遠。僅當重新鏈接係所有演算法之例外時,才需要將其保存於非揮發性記憶體中。
關於圖22與表1說明一鏈接表以及可如何壓縮其所含資訊的特定範例。鏈接表扇區保存有關卡內已重新鏈接之區塊的資訊。根據卡的大小與每一晶粒內不良區塊的數目,可能會存在一個以上的鏈接表扇區,可將其儲存於啟動區塊中。如上所述,元區塊可能具有用於鏈接的標準方法,並且如果其中一個區塊係不良的,則元區塊可能能夠使用相同平面中備用的實體區塊來重新鏈接。鏈接表扇區儲存有關在重新鏈接中使用哪些區塊之資訊。圖22係元區塊之重新鏈接之另一範例。
在圖22所示的元區塊中,僅元區塊0具有標準的鏈接,此處係筆直地橫跨八個平面。圖式顯示數種區塊鏈接情形:
A.元區塊0係不具有重新鏈接之標準元區塊,並將因此不出現於一鏈接表扇區中
B.元區塊1具有在平面0*與1中的2個不良區塊
C.元區塊4具有在平面0*與5中的2個不良區塊
D.元區塊5具有在平面1、3與4中的3個不良區塊
E.元區塊7具有在平面0*中的1個不良區塊
F.已從現有的備用實體區塊完整地重新鏈接元區塊9,儘管平面0與7中的區塊來自原始的元區塊
在標為*的情形中,重新鏈接係由於平面0中的不良區塊而發生。在此種情形下,實體位址指原始元區塊存在的位置。由於在圖22的範例中有大量不良的區塊,故不會有元區塊2、3、6或8。
用於圖22所示區塊重新鏈接的壓縮演算法可如表1中定義。
任何鏈接表項目之大小可定義為:位元組的數目=3+(3*重新鏈接區塊的數目)例如,對於元區塊1,前三個位元組識別元區塊1,其具有兩個重新鏈接,並且分配三個位元組用來指定此等重新鏈接的每一重新鏈接。藉由該重新鏈接區塊對應於八個平面中的哪個平面(1位元組)以及其所重新鏈接至的列編號來指定重新鏈接。
鏈接表中的全組項目可橫跨多個鏈接表扇區而展開。建立一鏈接表扇區,或藉由將其寫入該區塊鏈接管理區塊中的下一可用扇區位置而加以
修改。因此可能存在鏈接表扇區的多重副本,其中僅最新的版本才有效。可將區塊鏈接管理區塊中有效鏈接表扇區之位置的索引包含於區塊鏈接管理區塊中的備用實體區塊列表扇區中的一欄位,如下所述。將有關每一有效鏈接表扇區中第一項目的元區塊編號保存於控制器RAM中的一列表中,以便可容易地識別任何元區塊編號的相關鏈接表扇區。如果必須將額外的項目添加至已包含最大數目之項目的鏈接表扇區中,則將扇區分成兩個新的扇區,每個扇區具有一半項目,並且將新的項目插入適當的新扇區中。
將所有備用實體區塊之區塊位址作為項目保存於備用實體區塊列表扇區中未排序的列表中。在某些具體實施例中,可方便地限制每晶片每平面之備用區塊的最大數目。在一示範性具體實施例中,將其限制於16,如同在大多數情形中,此應係足夠大的。如果在一平面中有16個以上的備用區塊,則會將其「丟棄」。
將變為備用(由於最初在將快閃記憶體配置為元區塊的期間,無法建立標準的元區塊,或由於鏈接到標準或重新鏈接元區塊的實體區塊已失效)的區塊作為新的項目添加至備用實體區塊列表的尾部。當建立重新鏈接之元區塊需要備用的區塊時,可使用相關平面中最靠近備用實體區塊列表之起點的第一區塊。備用實體區塊列表扇區亦包含具有有效鏈接表扇區位置之索引之欄位。
當發生元區塊重新鏈接操作並且建立或修改鏈接表扇區時,備用實體區塊列表與鏈接表扇區索引欄位皆可在備用實體區塊列表扇區中予以修改。一有效的備用實體區塊列表扇區因此係區塊鏈接管理區塊中最後寫入的扇區。當區塊鏈接管理區塊已滿時,可在控制寫入操作期間藉由重新寫入所有有效扇區至一新的區塊位置而對其進行壓縮,隨後將整個區塊抹除。
為了簡化備用實體區塊扇區之儲存並限制當尋找替代區塊時所需的搜尋數量,可按晶片、晶粒與平面來儲存備用實體區塊列表。所需扇區的實際數量取決於記憶體裝置的大小、裝置的數目以及所用的交錯方法。如上所述,每平面僅儲存一定數目的實體區塊係方便的。所保存的數目將取決於預期的區塊失效率以及每平面的區塊數目。此意味著,每一備用實體區塊列表扇區將保存數個平面的備用實體區塊。韌體將計算要載入的正確扇區,然後將正確的值編入要載入之扇區的索引。
當備用實體區塊列表的數目因重新鏈接或找到另一不良區塊而變化時,將寫入新的備用實體區塊列表扇區。此可能表示覆蓋相同實體區域的兩個備用實體區塊列表扇區。啟動扇區保存包含有效扇區之索引之備用實體區塊列表索引。如果在備用實體區塊列表所覆蓋的區域中不存在備用的實體區塊,則啟動區塊中將不存在扇區。
再次參考圖22,此參閱8路交錯卡。因此,將必須有至少8個陣列,用於保存所有的備用實體區塊列表資訊。對於卡上的每個後續晶粒,將需要另外8個陣列。表2中顯示對應於圖22之備用實體區塊列表。
與鏈接表一樣,可將備用實體區塊列表作為一表格儲存於非揮發性記憶體中,並可根據需要將其快取到揮發性RAM中。
儘管根據以韌體為基礎的實施方案來說明本發明的各種方面,但其亦可實施於以硬體為基礎的實施方案中。控制器上,或較佳係一記憶體晶片本身上的一硬體引擎可實施重新鏈接。可將重新鏈接資訊儲存於晶片本身上一特殊的記憶體位置。該控制器接著將所有區塊作為標準區塊來處理,並且該引擎將該等區塊位址轉換至真實的內部位址。該記憶體在該主機(或控制器)看來係僅具有標準區塊的記憶體,或係具有大實體區塊的記憶體,而不必瞭解較小的區塊結構或任何重新鏈接之細節。
儘管已說明本發明之各種方面之特定範例,應瞭解本發明有資格在隨附申請專利範圍的範疇之內受到保護。
102、202、302...主機
104、204、304...控制器
103、203、303...非揮發性記憶體陣列
1101...邏輯至實體映射表
1103...記憶體
1201...虛線箭頭
1202...箭頭
1203...備用區
圖1係其中非揮發性記憶體陣列與記憶體控制器係封裝於一以可移除方式與主機系統連接的封閉卡中之一現有非揮發性記憶體系統之方塊圖。
圖2係其中非揮發性記憶體陣列係封裝於一以可移除方式與主機系統連接的封閉卡中之一現有非揮發性記憶體系統之方塊圖。
圖3係其中非揮發性記憶體陣列係作為主機系統內非可移除嵌入式儲存器而封裝之一現有非揮發性記憶體系統之方塊圖。
圖4a說明一顯示平面、區域與備用區的範例性晶片格式。
圖4b至d說明實體區塊至元區塊之各種鏈接。
圖5至10說明該系統可如何回應於記憶體陣列之一部分上所發生的一系列生長缺陷。
圖11說明回應於在一抹除單元上偵測到一生長缺陷而映射一元區塊之虛擬結構元素之範例。
圖12說明用於保持一缺陷圖之一系統之一範例,其中在與具有生長缺陷的抹除單元相同的平面上無法獲得一備用的抹除單元。
圖13說明用於保持一缺陷圖之方法之一範例。
圖14說明使用圖11至13之資料結構來保持缺陷圖之方法之一範例。
圖15至18說明實體區塊之以演算法為基礎的鏈接。
圖19、20與22說明實體區塊的重新鏈接。
圖21顯示在兩維情形中重新鏈接之範例。