用于動態讀取的清除技術的制作方法
【專利摘要】對于使用動態讀取的存儲器系統,當存儲器系統正進行在掃描需要被清除的存儲器塊時的讀取而不是主機讀取時,禁用動態讀取。當進行主動的主機讀取時,如果可校正的錯誤量超過閾值,則該塊被標記用于稍后重新檢查,在那時動態讀取被禁用。在其他實施例中,刷新還是淘汰存儲器塊的決定是基于所使用的動態讀取值的集合。在使用動態讀取值的表的存儲器系統中,該表被配置為除了用于不同動態讀取情況的讀取參數之外還包括如何處置讀取錯誤(淘汰,刷新)。細化地,讀取情況編號可以用于對被選擇用于刷新或淘汰的塊排定優先級。在要使得讀取清除更精確的情況下,可以應用多個動態讀取情況。此外,可以智能地選擇應用哪些情況。
【專利說明】用于動態讀取的清除技術
【技術領域】
[0001]本申請大體涉及非易失性閃存系統的操作,更具體地,涉及刷新(refresh)和校正其中、特別是具有大的存儲器單元塊的存儲器系統中存儲的數據。
【背景技術】
[0002]存在現今正使用的特別是小型規模卡形式的許多商業上成功的非易失性存儲器,它們采用在一個或多個集成電路芯片上形成的快閃EEPR0M(電可擦除可編程只讀存儲器)的陣列。通常但是不是必須在單獨的集成電路芯片上的存儲器控制器與該卡可移除地連接到的主機相接口并且控制該卡內的存儲器陣列的操作。這樣的控制器通常包括微處理器、一些非易失性只讀存儲器(ROM)、易失性隨機存取存儲器(RAM)和諸如在數據的編程和讀取期間在數據經過控制器時從該數據計算錯誤校正碼(ECC)的電力的一個或多個專用電路。一些商業上可獲得的的卡是CompactFlashTM(CF)卡、多媒體卡(MMC)、安全數字(SD)卡、智能媒體卡、人員標簽(personnel tag, P-Tag)和記憶棒卡。主機包括個人計算機、筆記本計算機、個人數字助理(PDA)、各種數據通信設備、數字相機、蜂窩電話、便攜式音頻播放器、車載音響系統以及類似類型的設備。除了存儲卡實現方式之外,可替換地,此類型的存儲器可以嵌入到各種類型的主機系統中。
[0003]兩種常用的存儲器單元陣列架構已經發現了商業應用,NOR和NAND。在通常的NOR陣列中,存儲器單元連接在相鄰位線源和在列方向延伸的漏極擴散之間,控制柵極連接到沿著單元的行延伸的字線。存儲器單元包括至少一個位于源極和漏極區域之間的單元的至少一部分上的存儲組件。存儲組件上的電荷的被編程水平因此控制單元的操作特性,然后可以通過向被尋址的存儲器單元施加適當的電壓來讀取單元。這樣的單元、其在存儲器系統中的使用以及其制造方法的例子在美國專利申請第5,070, 032,5, 095,344,5, 315,541、5,343,063 和 5,661,053,5, 313,421 和 6,222,762 號中給出。
[0004]NAND陣列利用與在各個位線和參考電勢之間的一個或多個選擇向晶體管連接的多于兩個的、比如16個或32個存儲器單元的系列串以形成單元的列。字線跨過大量的這些列內的單元而延伸。在編程期間通過致使串中的其余單元硬導通(turn on hard)而使得流經串的電流依賴于被尋址的單元中存儲的電荷水平而讀取和驗證列內的各個單元。在美國專利第5,570,315,5, 774,397,6, 046,935和6,522,580號中找到作為存儲器系統的部分的NAND架構陣列及其操作的例子。
[0005]如在以上參考的專利中討論的,當前的快閃EEPROM陣列的電荷存儲組件最常見是通常由導電摻雜的多晶硅材料形成的導電的浮置柵極。在快閃EEPROM系統中有用的可替換類型的存儲器單元利用不導電的介電材料來代替導電浮置柵極以按非易失性的方式存儲電荷。由氧化硅、氮化硅和氧化硅(ONO)形成的三層電介質夾在導電控制柵極與存儲器單元信道上方的半導電基板的表面之間。通過將電子自單元信道注入至氮化物中而編程該單元,由此電子被俘獲并存儲在有限的區域中,且通過將熱電子注入至氮化物中而擦除單位。第2003/0109093號美國公開專利申請中描述了采用介電存儲組件的若干特定單元結構和陣列。
[0006]如在大多數集成電路應用中那樣,關于快閃EEPROM存儲器單元陣列,也存在縮小實施某一集成電路功能所需的硅基板面積的壓力。不斷期望增加可存儲在硅基板的給定面積中的數字數據量以便增加給定大小存儲器卡和其它類型的封裝的存儲容量,或者既增加容量也減小大小。增加數據的存儲密度的一種方式是每存儲器單元和/或每存儲單位或組件存儲多于一位數據。這通過將存儲組件電荷電平電壓范圍的窗劃分成多于兩個狀態來達成。使用四個這樣的狀態允許每一單元存儲兩個數據位,使用八個狀態允許每存儲組件存儲三個數據位,等等。第5,043,940和5,172,338號美國專利中描述了使用浮置柵極的多狀態快閃EEPROM結構及其操作,且前述第10/280,352號美國申請中描述了使用介電浮置柵極的結構。出于各種原因,多狀態存儲器單元陣列的所選部分也可以按第5,930,167和6,456,528號美國專利中描述的方式按兩種狀態(二進制)來操作。
[0007]將典型的快閃EEPROM陣列的存儲器單元劃分成一起被擦除的離散單元塊。也即,塊是擦除單位,即可同時擦除的最小數目的單元。每塊通常存儲一個或多個數據頁,該頁是最小編程和讀取單元,盡管可以在不同的子陣列或平面中并行編程或讀取多于一頁。每頁通常存儲一個或多個數據扇區,扇區的大小由主機系統限定。示例的扇區包括512個字節的用戶數據——遵循關于磁盤驅動器建立的標準——加上關于用戶數據和/或用戶數據被存儲在的塊的開銷(overhead)信息的某個數目的字節。這樣的存儲器通常每塊內配置有16個、32個或更多個頁,且每頁存儲一個或僅幾個主機扇區的數據。
[0008]為了增加在將用戶數據編程至存儲器陣列中和從該陣列讀取用戶數據期間的并行程度,通常將陣列劃分成子陣列,其通常稱為平面,該子陣列包含其自身的數據寄存器和其它電路以允許并行操作,使得可同時將數據扇區編程至數個或所有平面中的每一個,或者自數個或所有平面中的每一個讀取數據扇區。可以將單個集成電路上的陣列物理地劃分成平面,或每一平面可以由單獨一個或多個集成電路芯片形成。第5,798,968和5,890,192號美國專利中描述了這樣的存儲器實施方式的實例。
[0009]為進一步高效管理存儲器,可以將物理塊邏輯鏈接在一起以形成虛擬塊或元塊。即,將每一元塊定義為包括來自每一平面的一個塊。在W002/058074號國際專利申請公開中描述了元塊的使用。元塊由主機邏輯塊地址識別為用于編程和讀取數據的目的地。類似地,元塊的所有塊一起被擦除。與這樣的大塊和/或元塊一起操作的存儲器系統中的控制器執行若干功能,包括在自主機接收的邏輯塊地址(LBA)與存儲器單元陣列內的物理塊編號(PBN)之間的轉譯(translation)。通常通過在塊地址內的偏移來識別塊內的各個頁。地址轉譯通常涉使用邏輯塊編號(LBN)和邏輯頁的中間項。
[0010]存儲在元塊中的數據經常被更新,更新的可能性隨元塊的數據容量而增加。一個邏輯元塊的被更新的扇區通常被寫入至另一物理元塊。作為同一編程操作的部分,還通常將未改變的扇區自原始物理元塊復制到新物理元塊以整合(consolidate)該數據。可替換地,未改變的數據可以保留在原始元塊中直到稍后與更新的數據整合至單個元塊中為止。
[0011]通常用維持在被擦除的塊池中的某些額外塊來操作大塊或元塊系統。當正更新少于一塊的容量的一個或多個數據頁時,通常將更新的頁寫入至來自該池的擦除塊,然后將未改變的頁的數據自原始塊復制到擦除池塊。前述公開的第W002/058074號國際申請中描述了此技術的變化。隨時間推移,由于重新寫入和更新主機數據文件,許多塊可以相對小數目的其包包含效數據的頁和包含不再是當前數據的數據的其余頁而結束。為了能夠高效地使用陣列的數據存儲容量,不時地將有效數據的邏輯相關的數據頁從多個塊當中的片段集聚在一起并一起整合至較少數目的塊中。此過程通常稱作“垃圾收集”。
[0012]各個快閃EEPROM單元將表示一個或多個數據位的電荷量存儲在電荷存儲組件或單位中。存儲組件的電荷電平控制其存儲器單元的閾值電壓(通常指代為VT),該閾值電壓用作讀取單元的存儲狀態的基礎。通常將閾值電壓窗劃分成若干范圍,對于存儲器單元的兩個或多個存儲狀態的每個狀態一個范圍。這些范圍由防護帶(guardband)分離,防護帶包括允許確定各個單元的存儲狀態的標定感測電平。這些存儲電平由于在鄰近或其它相關存儲器單元、頁或塊中進行的電荷干擾編程、讀取或擦除操作而偏移。例如,將與第二組存儲器單元共享一線或電路的一組存儲器單元編程可能干擾該第二組的電荷電平。此寄生干擾的最終結果是,如果不對存儲系統控制器的部分采取校正動作,則可損壞未在操作的所曝露區域中的數據,且在極端情形中,超出連同該數據一起存儲的任何錯誤校正碼(ECC)的校正能力。則這樣的數據損壞將對用戶造成數據損失,因此使得存儲系統不可靠。特定存儲器單元陣列中的這種干擾的廣度和本質取決于其特定架構、結構和操作。
[0013]因此,在干擾操作致使電荷電平完全偏移出其定義的范圍之外則在此情況下讀取錯誤數據之前,不時地將偏移的電荷電平恢復至其狀態范圍的中心是有益的。在第5,532,962和5,909,449號美國專利中描述了此過程,稱為數據刷新或清除(scrub)。作為其進一步的方面,在使用錯誤校正碼(ECC)的存儲器系統中,可以通過使用ECC來校正從該存儲器讀取的某一數目的錯誤數據位,然后將校正的數據重新寫入至該存儲器的先前擦除的部分。重新寫入數據致使被寫入的存儲器單元閾值電平中的每個處于其指定狀態范圍內,因為數據編程通常涉交替地調整存儲的電荷并讀取-驗證所得的存儲器單元閾值電平直到其達到表示存儲在該單元中的數據的所期望范圍為止。
【發明內容】
[0014]呈現了操作非易失性存儲器系統的方法。該存儲器維持對于默認讀取情況和多個不同的移位的讀取情況的一組讀取參數。對于存儲器的一個或多個塊的每個物理分區,該存儲器還維持物理單位和在讀取該物理單位時使用的讀取情況之間的對應性。該存儲器使用對于頁所屬于的物理單位的對應讀取情況來進行對該頁數據的讀取操作,確定讀取操作是成功了還是產生了失敗結果,并響應于讀取操作產生了失敗結果,選擇能夠讀取該頁的移位的讀取情況。基于所選的移位的讀取情況,該存儲器確定是否刷新該頁所屬于的塊。
[0015]取決于具體應用,上述特征可以單獨實施或者以各種組合一起實施。本文的清除系統的另外的方面、優點和特征被包括在以下的對其的示例性例子的描述中,該描述應該結合附圖來考慮。在此引用的所有專利、專利申請、文章和其他出版物在此為了所有目的以在此對其的全部引用而被合并于此。
【專利附圖】
【附圖說明】
[0016]圖1A和IB分別是一起操作的非易失性存儲器和主機系統的框圖;
[0017]圖2例示圖1A的存儲器陣列的第一示例組織;
[0018]圖3示出具有在圖1A的存儲器陣列中存儲的開銷數據的示例主機數據扇區;[0019]圖4例示圖1A的存儲器陣列的第二示例組織;
[0020]圖5例示圖1A的存儲器陣列的第三示例組織;
[0021]圖6示出圖1A的存儲器陣列的第三示例組織的擴展;
[0022]圖7是具有一個特定配置的圖1A的陣列的一組存儲器單元的電路圖;
[0023]圖8是例示數據清洗操作中的主要步驟的流程圖;
[0024]圖9是清洗操作的更具體的例子的流程圖;
[0025]圖10示出編程的一組存儲器單元的電壓閾值水平的分布;以及
[0026]圖11是例示使刷新決定基于動態讀取情況的示例實施例的一些方面的流程圖。
【具體實施方式】
[0027]存儲器架構及其操作
[0028]首先參見圖1A,閃存包括存儲器單元陣列和控制器。在所示的例子中,兩個集成電路器件(芯片)11和13包括存儲器單元的陣列15和各種邏輯電路17。邏輯電路17通過數據、命令和狀態電路與單獨的芯片上的控制器19相接口,并且還將尋址、數據傳送和感測和其它支持提供至陣列13。取決于所提供的存儲容量,存儲器陣列芯片的數目可以從一個到多個。可替換地,可以將控制器和部分或整個陣列組合到單個集成電路芯片上,但此當前這不是經濟的替代方案。
[0029]典型的控制器19包括微處理器21 ;只讀存儲器(ROM) 23,其主要用以存儲固件;以及緩沖器存儲器(RAM) 25,其主要用于暫時存儲被寫入至存儲器芯片11和13或從存儲器芯片11和13讀出的用戶數據。電路27與存儲器陣列芯片相接口,且電路29通過連接31與主機相接口。在此例子中,數據的完整性通過用專用于計算碼的電路33來計算ECC而確定。當正將用戶數據從主機傳送至快閃存儲器陣列以供存儲時,該電路從該數據計算ECC并將碼存儲在該存儲器中。當稍后從該存儲器讀取該用戶數據時,用戶數據再次通過電路33,電路33通過同一算法來計算ECC并比較該碼與所計算的且與該數據一起存儲的碼。如果二者相當,則確認該數據的完整性。如果二者不同,則取決于所利用的具體ECC算法,可識別并校正高達由該算法所支持的數目的那些錯誤的位。
[0030]圖1A的存儲器的連接31與主機系統的連接31’配合,圖1B中給出該主機系統的例子。數據通過接口電路35在主機與圖1A的存儲器之間進行傳送。典型的主機還包括微處理器37、用于存儲固件碼的R0M39、以及RAM41。取決于特定主機系統,其它電路和子系統的通常包括大容量磁性數據存儲盤驅動器、用于鍵盤的接口電路、監視器等等。這樣的主機的某些例子包括桌面計算機、膝上型計算機、手持計算機、掌上計算機、個人數字助理(PDA)、MP3和其它音頻播放器、數字相機、視頻攝像機、電子游戲機、無線和有線電話裝置、應答機、語音記錄器、網絡路由器和其它裝置。
[0031]圖1A的存儲器可以實施為以可與圖1B的主機以可移除方式連接的形式的包含控制器及所有其存儲器陣列電路失敗的小封閉式卡。也即,配合連接31和31’允許卡被斷開且移動至另一主機,或通過將另一卡連接至該主機而被替換。可替換地,可以將存儲器陣列設備封裝在可與包含控制器和連接31的卡以電和機械方式連接的單獨的卡中。作為進一步的替代方案,可以將圖1A的存儲器嵌入圖1B的主機內,其中永久地制成連接31和31’。在此情況下,存儲器通常連同其它組件一起被包含在該主機的外殼內。[0032]此說明書中所使用的某些術語可受益于某些解釋。“扇區”指代在主機讀取和寫入操作期間所存取的可獨立尋址的數據單元。一個數據扇區的大小通常為512字節。
[0033]如本文中所使用的“存儲器系統”由一個或多個非易失性存儲器設備和將數據存儲至該存儲器和從該存儲器取回數據所需的硬件和/或軟件組成的系統。可以在完全專用于數據存儲的子系統上或在主機系統自身上實施總體存儲器系統功能性的變化部分。該存儲器系統可以諸如以極小卡的形式嵌入主機系統中或可移除。可移除存儲器系統的部分自身可以是可移除的,例如就像從控制器部分移除存儲媒體一樣。主機系統的特定專用于存儲器系統中的數據存儲的任意部分也被認為是存儲器系統的一部分。除了駐留在主機系統上的任意硬件之外,這樣的主機功能性還可以包括專門化軟件庫、驅動器或應用程序。
[0034]出于在本文中使用的目的,“主機系統”是如下的系統:其通常具有除數據存儲之外的功能性,但其也連接至存儲器系統或具有嵌入于其中的存儲器系統。可以存在其唯一用途是數據存儲的主機系統。
[0035]可以在具有各種具體配置的系統中實施用于刷新和清除存儲在本文中所描述的閃存中的數據的各種技術,圖2至圖6中給出了這些系統的例子。圖2圖示其中存儲器單元被分組為塊的存儲器陣列的一部分,每一塊中的單元可作為單個擦除操作的部分一起擦除,通常同時擦除。物理塊是最小擦除單位。
[0036]圖2的各個存儲器單元塊的大小可以變化,但是商業上實踐的形式在各個塊中包括單個數據扇區。圖3中圖示此數據扇區的內容。用戶數據51通常為512個字節。除了用戶數據之外的是開銷(overhead)數據,該開銷數據包括從用戶數據計算的ECC53、與扇區數據和/或其中編程了扇區的塊相關的參數55和從參數55計算的ECC57以及可能包括的任何其它開銷數據。參數55可以包括與塊所經歷的編程/擦除循環的數目相關的量(“熱計數”),此量在每一循環或預設數目的循環之后被更新。該經歷量的一個用途是規律地將邏輯塊地址重新映射到不同的物理塊地址,以便均勻所有塊的使用(磨損均衡)。該經歷量的另一用途是改變電壓和編程、讀取和/或擦除的其它參數作為不同扇區所經歷的循環的數目的函數。下文描述經歷量在識別要被清除的塊的處理中的另外的使用。
[0037]參數55也可以包括分配給存儲器單元的存儲狀態中的每個的位值的指示,通常稱為其“旋轉”。也即,將數據的邏輯狀態映射至不同的物理存儲狀態。這在磨損均衡方面具有有益效果。還可以在參數55中包括指示狀況或狀態的一個或多個標志。將用于編程和/或擦除塊的電壓電平的指示也可以存儲在參數55內,這些電壓在該塊所經歷的循環的數目和其它因素改變時被更新。開銷參數55的其它例子包括該塊內的任何有缺陷單元的標識、映射至此物理塊中的數據塊的邏輯地址和以防主要塊有缺陷的任何替代物理塊的地址。在任何存儲器系統中使用的參數55的特定組合將根據設計而變化。此外,也可以將某些或所有開銷數據存儲在專用于這樣的功能的物理塊中,而不是存儲在包含用戶數據的塊或開銷數據所涉及的塊中。
[0038]圖4的多扇區物理塊不同于圖2的單個數據扇塊。示例的塊59——其仍為最小擦除單位——包含四個頁O至3,其每個是最小編程單位。一個或多個主機數據扇區通常連同至少包括從該扇區的數據計算的ECC的開銷數據一起存儲在每一頁中,且可以按圖3的數據扇區的形式。當更新少于所有頁的數據時,通常將更新的數據存儲在來自擦除塊池的擦除塊的一頁中,并將其余未改變的頁中的數據從原始塊復制到新塊中。然后,擦除該原始塊。此大塊管理技術的變型包括將更新的數據寫入至另一塊的一頁中,而不從原始塊移動數據或擦除數據。這得到具有相同邏輯地址的多個頁。通過某些方便的技術來識別最新的數據頁,比如記錄為扇區或頁開銷數據中的字段的編程時間。
[0039]圖5中圖示進一步的多扇區物理塊布置。此處,將總存儲器單元陣列物理地劃分成兩個或多個平面,圖示了四個平面O至3。每一平面是存儲器單元的子陣列,其具有其自身的數據寄存器、感測放大器、尋址解碼器等等,以便能夠極大地獨立于其它平面而操作。所有平面可以被提供在單個集成電路設備上或多個設備上,一個例子是從一個或多個不同的集成電路設備形成每一平面。圖5的系統中的每一塊包含16個頁P0-P15,每頁具有一個、兩個或更多主機數據扇區和某些開銷數據的容量。
[0040]圖6中圖示另一存儲器單元布置。每一物理平面包含大量單元塊。為了增加操作的并行程度,將不同平面內的塊邏輯地鏈接以形成元塊。一個這樣的元塊在圖6中圖示為由平面O的塊3、平面I的塊1、平面2的塊I和平面3的塊2形成。每一元塊可邏輯尋址,且存儲器控制器分配并追蹤形成各個元塊的塊。主機系統優選與數據單位等于各個元塊的容量的存儲器系統相接口。圖6的這樣的邏輯數據塊61例如通過邏輯塊地址(LBA)來識另O,該邏輯塊地址由控制器映射為構成元塊的塊的物理塊編號(PBN)。一起擦除元塊的所有塊,且優選同時編程和讀取每一塊的頁。
[0041]存在許多不同的存儲器陣列架構、配置和具體單元結構,可以采用其以實施上文關于圖2至圖6所述的存儲器。圖7中示出NAND類型的存儲器陣列的一個塊以便圖示幾種干擾機制。串聯連接的存儲器單元的大量列定向的串連接在電壓VSS的共同源65與位線BLO-BLN中的一個之間,位線BLO-BLN又與電路67連接,電路67包含地址解碼器、驅動器、讀取感測放大器等等。具體地,這樣的一串包含串聯連接于該等串的相對端處的選擇晶體管77和79之間的電荷存儲晶體管70、71、72和74。在此例子中,每一串包含16個存儲晶體管,但其它數目也是可能的。字線WL0-WL15延伸跨越每一串的一個存儲晶體管,且連接至電路81,電路81包含這些字線的地址解碼器和電壓源驅動器。線83和84上的電壓控制將塊中的所有串通過其選擇晶體管一起連接至電壓源65和/或位線BL0-BLN。數據和地址來自存儲器控制器。
[0042]塊的電荷存儲晶體管(存儲器單元)的每一行形成一起編程和讀取的一頁。將適當的電壓施加至這樣的頁的字線(WL)以用于編程或讀取其數據,同時選擇施加至其余字線的電壓以使得其各自的存儲晶體管導通。在編程或讀取一行(頁)存儲晶體管的過程中,未選擇的行上的先前所存儲的電荷電平可能因為電壓跨越所有串而施加且施加至其字線而受到干擾。
[0043]清除過程的各個方面
[0044]存在兩個主要清除階段:讀取階段和校正動作階段。清除讀取與其它系統讀取的區別在于:清除讀取通常涉及選擇和讀取存儲器系統的區域中的數據,其不直接與完成特定主機操作相關也不直接與若干其它系統操作中的任何操作、比如磨損均衡相關。清除讀取的另一區別性特征是,系統不從所讀取的數據聚集有用信息,而是,數據完整性檢查的結果是該操作的目標。對該系統的部分的隨后動作由該完整性檢查的結果來引導,而不是特定由數據自身來引導。如果數據的完整性檢查失敗且需要校正動作,則該系統可以隨后需要使用來自所讀取的數據、比如開銷數據的某些信息。不完成特定主機操作且不從存儲器獲得任何有用數據的這些特征是清除讀取與由系統進行的其它數據讀取之間的基本差別。
[0045]選擇要清除讀取的特定區通常由在存儲器設備的物理特性的上下文中的系統操作的正常過程中進行的讀取、寫入和擦除操作的位置和數量而引導。通常,將對由于其它區域中的操作而已經曝露于電壓、電流或串援的存儲器陣列的區域進行清除讀取。可替換地,清除讀取位置可以與其它存儲器操作解耦合(decouple),且被使得遵循確定性或隨機序列。然而,這可能導致系統性能的損失,因為將必須進行更多讀取以得到更加受干擾區域的相同覆蓋量。
[0046]清除讀取的另外的方面是選擇何時進行清除讀取操作。一般而言,可以響應于任意數目的因素來開始清除操作,比如主機操作的數目;物理讀取、寫入和/或擦除操作的數目;時間段;主機的使用特性;或者某些隨機或偽隨機序列,其產生和檢查可與上述各項中的任一項相聯系。
[0047]清除寫入與其它系統寫入的區別在于:清除寫入通常由于在清除讀取期間所讀取的數據的失敗的完整性檢查而執行。清除寫入在清除讀取的上下文中是僅唯一的。可以執行具有與清除寫入類似的機制但不是出于該特定目的而實施的其它寫入操作。在一項例子中,寫入操作可以從正常存儲器系統操作的過程中所執行的讀取或寫入操作之后的失敗的完整性檢查而得到。在另一例子中,出于刷新目的,可以在不存在清除讀取的情況下讀取和重新寫入數據,其中寫入的決定不是基于數據完整性檢查,而是基于某些其它因素。一個這樣的因素可以是存在具有高使用或曝露的陣列的區域,在此情況下,可以重新寫入或移動該區域內的數據。可以以確定性或隨機方式來進行數據的連續移動或刷新。可出于磨損均衡的意圖的目的來讀取和重新寫入數據,但是具有以克服干擾問題的方式刷新數據的意外益處。
[0048]實際上,當數據單位滿足進行清除的其它準則時,可以使用該數據單位的相對新度來確定是否開始改數據單位的清除。也即,如果近期已作為磨損均衡、數據整合(垃圾收集)、預清除或其它操作的部分而重新編程數據單位,則可以跳過當前清除,因為近期已刷新了這些數據。例如,可以用與數據單位一起存儲的諸如在塊的開銷數據的部分中的經歷計數(“熱計數”)或時間戳來維持各個數據單位的相對新度。可替換地,可以根據存儲在物理塊中的數據的新度而將物理塊分組,其中將一塊所屬于的組存儲為該塊的開銷數據。然后,可以使用否則變為用于清除的候選者的塊的相對新度作為選擇實際清除的那些塊的因素。然后,通過將清除操作限制為已存儲了足夠長時間以致其所存儲的電荷電平可能已被充分干擾而需要注意的那些數據單位來改善系統性能。
[0049]為了監視所存儲的數據的相對新度,可以基于邏輯塊或物理塊已重新編程的近期程度而將邏輯塊或物理塊有效地分組為若干組。可以將初始相對熱計數值給予整個存儲器陣列內的所有塊或可替換地給予該陣列的平面、區域或其它部分內的塊,且每當重新編程塊時,該相對熱計數可以更新至最新近移動的集合或組的值。一旦某一數目的塊處于最新近重新編程的組中,就可以遞增該最新近重新編程的組值,且可以將隨后重新編程的任何塊更新至該新組值。因此,可以形成在最新近重新編程的塊與最早重新編程的塊之間具有相對明顯差別的不同組。一般而言,允許塊的相對熱計數值翻轉(roll over)以準許使用相對小數目的字段。
[0050]當利用相對熱計數時,實質上所有塊可以在特定例子中存在八個可能值、例如“O”至“7”的值時以基值“O”開始。可以使用該八個值中的七個值,而保留一個值以提供表示最新近編程的塊的值與識別包含最早數據的塊的值之間的間隙。在此例子中,被寫入的塊接收新值“ I ”以指示其是最新近被編程的。一旦已將某一數目的塊更新至新值“ I ”,隨后被編程的塊可以接收新值“2”。一旦已將值“2”分配給某一數目的塊,就可以最終將值“3”分配給新重新編程的塊。在某一時刻,該計數將翻轉以使得最早使用的塊具有值“2”,最新近編程的塊具有值“O”,且值“I”提供二者之間的間隙以使得明確地識別具有最早和最新數據的塊的值。最終,將通過主機寫入、清除、磨損均衡或其它機制重新寫入最早值格(bin)中的所有塊。在上述例子中,然后值格“2”將為空,且該值可以充當該間隙,而值格“I”可以用于識別最新近寫入的塊。當在其它準則的基礎上,一塊變為用于清除操作的候選者時,如果其相對熱計數將其放置于較近期重新編程的塊組中的一個中,則可以跳過其清除。
[0051]可替換地,可以維持用于邏輯塊或物理塊或者這兩者的絕對熱計數,在此情況下,系統優選可以使用這樣的熱計數來做出清除決定。也即,當重新編程塊時,遞增、遞減或以其它方式維持其絕對熱計數以提供已重新編程該塊的總次數的指示。與具有指示少量重新編程操作的絕對熱計數的塊相比,通常已經更近期地重新編程了具有指示大量重新編程操作的絕對熱計數的塊。因此,可以跳過對存儲在具有相對大量重新編程操作的塊中的數據的清除,因為不可能已顯著干擾該數據。
[0052]存在可替代地執行的許多具體清除算法和相關的存儲器操作。清除可以由存儲器系統控制器來控制,或可替換地,在存儲器單元集成電路設備(芯片)中的每一個上控制,或者甚至部分地或完全由主機控制。該存儲器系統可與主機以可移除方式連接,或可替換地,可以嵌入在主機內。
[0053]可以多個不同方式實施清除操作的讀取階段。可以調諧清除速率以優化性能同時維持規定水平的數據完整性。例如,可以調諧執行清除操作的速率和一次所讀取的數據扇區的數目兩者。這樣的調諧可以作為清除算法的部分而自動發生。例如,可以使清除的速率和位置與存儲器的不同區域中的不均勻干擾曝露率相匹配。也可以推遲清除讀取以便優化系統性能或滿足具體實時需要。
[0054]還存在實施清除讀取的方式的各種替代方式。例如,可以用標定參考電平和用有余量的(margined)參考電平兩者來讀取數據集。余量的量可以以所遇到的具體干擾機制為目標。例如,如果所讀取數據不能由ECC來校正,則具有較寬余量的讀取可能能夠恢復該數據。如果沒有任何錯誤地正常地讀取數據,則具有較窄余量的讀取可以提供該數據的質
量的信息。
[0055]在清除讀取之后,做出是否進入校正動作的決定。這樣的決定可以基于的因素之中包括基于已檢測到的錯誤位的數目和/或樣式的活動級別。
[0056]校正動作最通常包括在存儲器中的相同位置或不同位置中重新寫入所讀取數據。可以推遲這樣的清除寫入以便優化系統性能或滿足具體實時需要。校正動作可以另外包括在清除寫入操作期間數據的旋轉;也即,表示具體所存儲的數據的存儲器單元狀態從其原有狀態改變。校正動作還可以包括將被認為易受干擾的單元、列或其它結構映射出系統。
[0057]大部分主機協議具有與存儲器系統的抽象(abstract)接口以使得該存儲器通常由主機通過邏輯塊地址編號(LBA)來尋址。存在替代的等效尋址模式,比如ATA主機協議中的磁柱-磁頭-扇區,但基本概念在于,主機不知曉存儲器系統已存儲給定主機數據扇區的物理位置。主機系統可獲得線性連續的獨立邏輯塊地址集,其中存儲和取回在該地址集處的數據扇區。這些抽象的主機協議通常需要在存儲器系統上存在控制器以便控制存儲器操作、執行映射功能性、數據管理、錯誤恢復等等。利用這些抽象的主機協議操作的存儲器系統優選依賴于該存儲器系統中的控制器來執行清除操作,因為主機通常不知曉該存儲器系統的物理情況。
[0058]另一方面,某些主機協議具有在其中主機自身執行存儲器管理功能的接口。符合這些協議的存儲器系統通常具有最小控制器功能,如果有該功能的話。可以存在可以由存儲器系統而不是主機系統執行的功能性的變化部分,比如但不限于ECC產生、ECC檢查或ECC校正。以這些主機存儲器所管理的協議來操作的存儲器系統將通常依賴于主機來執行清除操作,因為該存儲器系統通常具有不足以執行清除操作的邏輯。
[0059]某些存儲器系統具有專用控制器,該專用控制器的目的是操作存儲器設備和執行存儲器管理功能性。其它存儲器系統不具有專用存儲器控制器,而是依賴于主機基礎結構的部分來執行存儲器管理操作。作為一個例子,非易失性存儲器設備可以直接連接至主機系統中的通用微處理器,其中存儲器管理功能性由軟件執行。在不具有控制器的這樣的存儲器系統中,負責存儲器管理操作的相同子系統也優選執行清除功能性。
[0060]在不具有控制器的存儲器系統中,能夠將控制器功能性合并到非易失性存儲器設備(集成電路芯片)自身中。在極端例子中,可以將整個控制器合并在存儲器設備上。
[0061]存儲器系統可以嵌入在主機系統中且在變化的程度上使功能性合并到通用的主機子系統或具有其它功能性的主機子系統中。在這樣的嵌入式存儲器系統中,通常遵循相同的主機協議,盡管可能未必是該情況。然而,作為一般規則,需要相同的功能性集來操作存儲器系統。 [0062]雖然存儲器系統通常在抽象的主機協議的情況下執行清除操作,但是主機系統可以通過使用特殊命令或其它預定的接口業務來開始這樣的系統中的清除操作是可能的。實施此功能性的一個原因可以是主機系統最知曉在其期間將不訪問存儲器系統以存儲或取回數據的時間段,且主機系統可以在這樣的時間段期間利用該機會來開始清除操作。以此方式,可以以對性能的最小影響而增加系統的總體可靠性。用于開始清除操作的機制可特定用于清除的目的,或者其可以是用于將內務操作可用的時間通知給存儲器系統的通用機制。在后一情況下,清除操作可以是由存儲器系統在這樣的時間段期間執行的幾個操作之
O
[0063]由于給定存儲器操作引起的區域曝露通常是廣泛的,使得每當執行操作時便清除整個曝露的區域是不實際的。通常,將選擇所曝露的區域的僅一部分用于清除,且必須設置清除速率使得清除操作將在錯誤位的數量和移位的單元的電平超過存儲器系統上可用的任何恢復方案之前檢測到最受干擾的區域。
[0064]執行清除操作的速率是影響數據完整性和存儲器系統性能兩者的重要參數。清除速率越高,在錯誤位的數量和移位的單元的電平超過存儲器系統上可用的任何恢復方案之前在數據塊中檢測到受干擾的單元的可能性越大。然而,清除速率越高,隨著增加的存儲器和控制器時間量專用于此操作,存儲器系統的性能的降級越嚴重。為保證數據完整性的期望水平同時盡可能少地犧牲性能,將清除速率優化為所需的最小裸速率(bare),任何防護帶都被認為是適當的。可以執行清除操作的速率可以按以下兩種方式變化:1)選擇執行清除操作的時間,和2)選擇一次要清除讀取的扇區的數目。
[0065]在產品的壽命期間,維護數據完整性所需的清除速率改變是可能的。例如,隨著單元變得更多地循環,干擾率可能增加或減小。如果在生產時設置了固定清除速率,則為了在存儲器系統的壽命期間維持存儲器系統完整性,將必須使用在存儲器系統的壽命期間所需的最高速率。這將導致在較低速率將是足夠時的較高清除速率,從而導致在存儲器系統壽命中的某些時間比所需的犧牲更高的存儲器系統性能的犧牲。存在在存儲器系統的壽命期間調諧清除速率的幾種方法。
[0066]能夠在制造存儲器系統時設置可變清除速率。這樣做的一種方法是提供速率值表,該速率值表用影響干擾率的任何度量來設置不同的清除速率。一個例子包含針對由存儲器陣列的各個部分所經歷的不同編程/擦除循環計數的清除速率的表。如果該存儲器系統維持循環計數,則將基于該陣列的給定區域的最差情況或平均循環計數從該表選擇清除速率參數。
[0067]另一方法允許存儲器系統基于先前清除操作的結果來自我調整(self-adjust)清除速率。例如,如果存儲器系統維持清除操作的記錄并確定極低百分比的清除操作需要校正動作,則存儲器系統可以調低其執行清除讀取的速率。另一方面,如果確定極高百分比的清除操作需要校正動作,則存儲器系統可以調高其執行清除讀取的速率。存儲器系統可以調整的清除速率的另一度量是在先前清除操作期間在各個存儲組件中檢測到的移位量或錯誤位的數量。在上述情況的任意情況中,該系統可以用每一新結果來自適應地調整清除速率參數,或其可以記錄該信息用于周期性調整。
[0068]存在可以用于選擇何時執行清除操作的幾種技術,其某些例子是:1)隨機或偽隨機,2)基于主機操作的數目,3)基于對存儲器設備的操作的數目,4)基于時間間隔。能夠使用上文所述的方法中的任何方法來調諧執行清除操作的速率。以下假設在生產時提供清除決定所需的任何參數。可以存在用于讀取、寫入和擦除操作的不同速率參數,因為這些操作中的每個可以不同速率干擾存儲器。
[0069]如果系統可獲得或由系統產生隨機數(RN)或偽隨機數(PRN),則能夠使用隨機數或偽隨機數來確定清除操作的頻率。下文描述用于使用RN或PRN序列來決定是否執行清除操作的許多方法。所有以下的方法都假設以某一規律的間隔檢查RN,且基于RN值的某種測試來決定是否執行清除。
[0070]使用隨機數來確定清除速率的一種方法是利用包含被設置為值I的某個數量的位和設置為零的其余部分的掩碼參數來執行RN或PRN的邏輯AND。是否執行清除的決定將基于該AND操作產生零值還是非零值。具有較多I的掩碼參數比與具有較多零的掩碼值更不頻繁地產生零值。下表示出利用不同的八位掩碼值的近似清除速率,其中假設零AND結果導致清除操作。注意,關于真隨機序列,僅具有值I的位的數目而非該值自身影響速率,因此該表中的值僅是例示性的值。
[0071]
【權利要求】
1.一種操作非易失性存儲器系統的方法,包括: 對于默認讀取情況和多個不同的移位的讀取情況,維持一組讀取參數; 對于存儲器的一個或多個塊的每個物理分區,維持物理單位和在讀取該物理單位時使用的讀取情況之間的對應性; 使用針對一頁屬于所述物理單位的對應讀取情況,對該頁數據執行讀取操作; 確定所述讀取操作是成功了還是產生了失敗結果; 響應于讀取操作產生了失敗結果,選擇能夠讀取該頁的移位的讀取情況; 以及 基于所選的移位的讀取情況,確定是否刷新該頁所屬于的塊。
2.如權利要求1所述的方法,其中該物理分區是塊。
3.如權利要求1所述的方法,其中該物理分區是裸片。
4.如權利要求1所述的方法,其中該物理分區是平面。
5.如權利要求1所述的方法,其中所述讀取情況在被選擇用于讀取操作的對存儲器單元使用的偏壓電平方面不同。
6.如權利要求1所述的方法,其中所述讀取情況在用于讀取操作的比較電平方面不同。
7.如權利要求1所述的方法,其中確定讀取操作是成功了還是產生了失敗結果包括確定該頁的數據內容是否被成功提取。
8.如權利要求1所述的方法,其中確定讀取操作是否產生了失敗結果包括確定該讀取得到超過界限的錯誤量。
9.如權利要求1所述的方法,其中多個讀取情況對應于刷新,該方法還包括: 響應于確定刷新該頁所屬的塊,基于所選的移位的讀取情況,排定該頁所屬于的塊相對于被安排刷新的其他塊的刷新的優先級。
10.如權利要求1所述的方法,還包括: 基于所選的移位的讀取情況,確定是否淘汰該頁所屬于的塊。
11.如權利要求10所述的方法,其中多個讀取情況對應于淘汰,該方法還包括: 響應于確定淘汰該頁所屬于的塊,基于所選的移位的讀取情況,排定該頁所屬于的塊相對于被安排淘汰的其他塊的淘汰的優先級。
12.如權利要求1所述的方法,其中選擇能夠讀取該頁的移位的讀取情況包括以下的一個或多個重復: 將當前讀取情況移位到不同的讀取情況;以及 確定使用移位的讀取情況的讀取操作是成功了還是產生了失敗結果。
13.如權利要求12所述的方法,其中所述當前讀取情況被移位到其一組讀取參數與當前讀取情況相鄰的讀取情況。
14.如權利要求1所述的方法,其中選擇能夠讀取該頁的移位的讀取情況包括從多個移位的讀取情況中確定具有最低錯誤量的移位的讀取情況。
15.如權利要求1所述的方法,還包括: 維持要刷新的塊的隊列;以及 響應于確定刷新該頁所屬于的塊,將該頁所屬的塊添加到所述隊列。
16.如權利要求15所述的方法,還包括: 基于屬于該隊列的塊的相應讀取情況,排定該隊列的優先級。
17.如權利要求16所述的方法,其中該隊列具有最大長度,該方法還包括: 響應于將該頁所屬的塊添加到所述隊列,使得該隊列的長度超過其最大值,從該隊列中逐出具有最低優先級的塊。
18.如權利要求1所述的方法,其中該存儲器系統包括控制器電路和非易失性存儲器電路,以及其中該控制器在該控制器上的易失性存儲器中維持該物理單位和當讀取該物理單位時使用的讀取情況之間的對應性的副本。
19.如權利要求18所述的方法,其中該控制器還在非易失性存儲器中維持該物理單位和當讀取該物理單位時使用的讀取情況之間的對應性的副本。
20.如權利要求1所述的方法,其中選擇移位的讀取情況包括: 選擇就在當前讀取情況之前使用的讀取情況。
21.如權利要求20所述的方法,其中選擇移位的讀取情況還包括: 確定使用就在該當前讀取情況之前使用的讀取情況的讀取操作是成功了還是產生了失敗結果;以及 響應于產生了失敗結果,隨后基于使用就在該當前讀取情況之前使用的讀取情況的讀取操作的結果與該當前讀取情況的結果之間的比較確定進一步移位的讀取情況。
【文檔編號】G06F11/10GK103946805SQ201280057162
【公開日】2014年7月23日 申請日期:2012年10月24日 優先權日:2011年11月21日
【發明者】C.N.Y.阿維拉, J.黃, D.李 申請人:桑迪士克科技股份有限公司