基于可用存儲器空間選擇冗余存儲配置的制作方法
【技術(shù)領(lǐng)域】
[0001 ] 本發(fā)明整體涉及存儲器系統(tǒng),并且具體涉及冗余存儲配置。
【背景技術(shù)】
[0002]非易失性存儲器系統(tǒng),諸如固態(tài)驅(qū)動器(SSD),有時使用冗余存儲方案存儲數(shù)據(jù)以確保在存儲器出現(xiàn)故障的情況下可成功恢復(fù)寫入SSD的數(shù)據(jù)。針對非易失性存儲器的各種冗余存儲方案在本領(lǐng)域中是已知的。
[0003]例如,美國專利申請公布2010/0017650描述了一種非易失性存儲器數(shù)據(jù)存儲系統(tǒng),其包括用于與外部主機通信的主機接口以及包括第一多個閃存存儲器設(shè)備的主存儲裝置,該公開以引用方式并入本文。每個存儲器設(shè)備包括第二多個存儲塊。第三多個第一級控制器耦接至第一多個閃存存儲器設(shè)備。第二級控制器通過內(nèi)部接口耦接至主機接口和第三多個第一級控制器。第二級控制器被配置為根據(jù)至少一個奇偶校驗執(zhí)行獨立磁盤冗余陣列(RAID)操作以便數(shù)據(jù)恢復(fù)。
[0004]又如,美國專利申請公布2009/0204872描述了一種閃存模塊,該閃存模塊具有由控制器通過物理塊地址(PBA)總線訪問的未加工NAND閃存存儲器芯片,該公開以引用方式并入本文??刂破鲗⑦壿媺K地址轉(zhuǎn)換為物理塊地址。在一些實施例中,數(shù)據(jù)可被布置成提供類似于RAID系統(tǒng)的冗余存儲裝置,以便提高系統(tǒng)可靠性。
【發(fā)明內(nèi)容】
[0005]本文所述的本發(fā)明的實施例提供了一種方法,該方法包括在控制存儲器的存儲器控制器中,評估存儲器中剩余的可用存儲器空間以寫入數(shù)據(jù)。在存儲器控制器中,根據(jù)可用存儲器空間選擇冗余存儲配置。使用所選擇的冗余存儲配置對數(shù)據(jù)計算冗余信息。將數(shù)據(jù)和冗余信息寫入存儲器中的可用存儲器空間。
[0006]在一些實施例中,選擇冗余存儲配置包括基于可用存儲器空間選擇對其計算冗余信息的多個存儲塊。在其他實施例中,選擇冗余存儲配置包括選擇具有編碼速率的糾錯碼(ECC),該編碼速率取決于可用存儲器空間,并且計算冗余信息包括使用所選擇的ECC來計算冗余信息。在其他實施例中,選擇冗余存儲配置包括將一個或多個存儲塊從存儲冗余信息的一部分重新分配為存儲數(shù)據(jù)的一部分。
[0007]在一些實施例中,選擇冗余存儲配置包括從針對一個或多個整個存儲塊的故障進行保護的第一存儲配置切換至針對存儲塊的僅部分的故障進行保護的第二存儲配置。在其他實施例中,從第一存儲配置切換至第二存儲配置是在循環(huán)利用由該第一存儲配置所產(chǎn)生的冗余塊時執(zhí)行的。在其他實施例中,選擇冗余存儲配置包括在檢測到可用存儲器空間小于預(yù)定義閾值時修改冗余存儲配置。
[0008]根據(jù)本發(fā)明的實施例,還提供了一種裝置,該裝置包括存儲器和存儲器控制器。存儲器控制器被配置為評估存儲器中剩余的可用存儲器空間以寫入數(shù)據(jù),根據(jù)可用存儲器空間選擇冗余存儲配置,使用所選擇的冗余存儲配置對數(shù)據(jù)計算冗余信息,以及將數(shù)據(jù)和冗余信息寫入存儲器中的可用存儲器空間。
[0009]根據(jù)本發(fā)明的實施例,還提供了一種存儲器控制器,該存儲器控制器包括接口和處理器。接口被配置為與存儲器進行通信。處理器被配置為評估存儲器中剩余的可用存儲器空間以寫入數(shù)據(jù),根據(jù)可用存儲器空間選擇冗余存儲配置,使用所選擇的冗余存儲配置對數(shù)據(jù)計算冗余信息,以及將數(shù)據(jù)和冗余信息寫入存儲器中的可用存儲器空間。
[0010]本發(fā)明將結(jié)合如下附圖通過其實施例的以下詳細描述更全面理解。
【附圖說明】
[0011]圖1為根據(jù)本發(fā)明的實施例示意性地示出存儲器系統(tǒng)的框圖;并且
[0012]圖2為根據(jù)本發(fā)明的實施例示意性地示出用于選擇冗余存儲配置的方法的流程圖。
【具體實施方式】
[0013]臟
[0014]本文所述的本發(fā)明的實施例提供了用于針對存儲器故障來保護存儲系統(tǒng)諸如固態(tài)驅(qū)動器(SSD)的改進的冗余存儲方案。本發(fā)明所公開的技術(shù)允許存儲器控制器基于可用存儲器空間自由選擇冗余存儲配置以便改善存儲器系統(tǒng)的整體性能。
[0015]例如,在控制器評估出可能沒有足夠存儲器空間來寫入新數(shù)據(jù)的情況下,存儲器控制器可從存儲冗余信息到存儲數(shù)據(jù)重新分配存儲器空間。又如,在可用存儲器空間很小的情況下,存儲器控制器可選擇產(chǎn)生較少冗余信息并進而減少開銷的冗余存儲方案。
[0016]在典型的具體實施中,存儲器控制器首先評估當(dāng)前可用存儲器空間。存儲器控制器繼而可基于當(dāng)前可用存儲器空間靈活選擇用于計算新的冗余信息以及存儲器空間的方法,其中新的冗余信息和新的數(shù)據(jù)將同時占據(jù)該存儲器空間。
[0017]使用本文所述的公開技術(shù),可按需以存儲裝置可靠性來換取存儲器空間:在可用存儲器空間允許的情況下,以很高的可靠性來存儲數(shù)據(jù)。在存儲器變滿的情況下,可以對故障的恢復(fù)能力上的一些下降為代價來獲得附加存儲器空間。
[0018]系統(tǒng)描沐
[0019]圖1為根據(jù)本發(fā)明實施例的示意性說明存儲器系統(tǒng)20的框圖。主機10發(fā)送用于存儲的數(shù)據(jù)并相反地接收從存儲器系統(tǒng)20的存儲裝置中恢復(fù)的數(shù)據(jù)。系統(tǒng)20可用于各種主機系統(tǒng)和設(shè)備中,諸如用于計算設(shè)備、蜂窩電話或其他通信終端、可移除的存儲器模塊(有時稱為“USB閃存驅(qū)動器”)、固態(tài)驅(qū)動器(SSD)、數(shù)字相機、音樂播放器和其他媒體播放器和/或數(shù)據(jù)在其中存儲和恢復(fù)的任何其他系統(tǒng)或設(shè)備。
[0020]存儲器系統(tǒng)20包括讀取并寫入數(shù)據(jù)到非易失性存儲器的存儲器控制器25,以及在本實例中一個或多個閃存存儲器設(shè)備30。控制器25包括用于與主機10通信的主機接口35、實施本文所述方法的處理器40、隨機存取存儲器(RAM) 45,以及用于與閃存設(shè)備30通信的存儲器接口 50。
[0021]在另選的實施例中,存儲器系統(tǒng)20中的非易失性存儲器可包括任何其他合適類型的非易失性存儲器,諸如例如NOR閃存、電荷擷取閃存(CTF)、相位變化RAM(PRAM)、磁阻RAM(MRAM)或鐵電體 RAM(FeRAM)。
[0022]每個閃存設(shè)備包括多個模擬存儲器單元。每個模擬存儲器單元存儲模擬電壓,也稱為存儲值,諸如電荷或電壓,其表示存儲于單元中的信息。在閃存存儲器中,可能模擬值的范圍被分成多個區(qū)域,每個區(qū)域?qū)?yīng)于一個或多個數(shù)據(jù)位值。通過寫入對應(yīng)于一個或多個期望位的標(biāo)稱模擬值來將數(shù)據(jù)寫入模擬存儲器單元中。
[0023]通常,每個設(shè)備30中的存儲器單元布置在存儲塊中。每個存儲塊包括存儲器單元陣列,這些存儲器單元陣列的行與字線相關(guān)聯(lián)并且它們的列與位線相關(guān)聯(lián)。每條字線通常存儲一頁或多頁數(shù)據(jù)。數(shù)據(jù)通常以頁單元進行寫入和讀取,并且以塊單元進行擦除。系統(tǒng)20的性能可能受到各種存儲器故障的影響,例如塊故障或字線故障。在本文所述的一些實施例中,存儲器控制器25應(yīng)用冗余存儲配置,該冗余存儲配置保護所存儲數(shù)據(jù)免受此類故障的影響。
[0024]控制器25,并且具體地處理器40,可在硬件中實現(xiàn)。另選地,控制器可包括微處理器,所述微處理器運行合適的軟件或硬件和軟件元件的組合。
[0025]圖1的配置為示例性系統(tǒng)配置,其純粹為了概念上的清楚而示出。也可使用任何其他合適的存儲器系統(tǒng)配置。為了清楚起見,已從附圖中省略了對于理解本發(fā)明的原理非必需的元件,諸如各種接口、尋址電路、計時和排序電路及調(diào)試電路。
[0026]盡管圖1的實例示出了三個存儲器設(shè)備30,但系統(tǒng)20還可包括由存儲器控制器25控制的任何期望數(shù)量的存儲器設(shè)備。在圖1所示的示例性系統(tǒng)配置下,存儲器設(shè)備30和存儲器控制器25實現(xiàn)為兩個單獨的集成電路(1C)。然而,在另選的實施例中,存儲器設(shè)備和存儲器控制器可集成于單個多芯片封裝(MCP)或片上系統(tǒng)(SoC)的單獨的半導(dǎo)體模片上,并且可由內(nèi)部總線互連。此外作為另外一種選擇,存儲器控制器電路的一些或全部可位于存儲器設(shè)備所設(shè)置在的同一模片上。此外作為另外一種選擇,存儲器控制器25的一些功能或全部功能能夠在軟件中實施并通過處理器或主機系統(tǒng)的其他元件執(zhí)行。在一些實施例中,主機10和存儲器控制器25可在同一模片上制造,或在同一設(shè)備封裝中的單獨模片上制造。
[0027]在一些實施例中,存儲器控制器25包括通用處理器,其在軟件中編程以執(zhí)行本文所述的功能。軟件可例如通過網(wǎng)絡(luò)以電子形式下載至處理器,或者另選地或除此之外,其可設(shè)置和/或存儲在非臨時性有形介質(zhì)上,諸如磁存儲器、光學(xué)存儲器或電子存儲器。
[0028]基于可用存儲器空間選擇冗余存儲配置
[0029]如上所述,各種類型的存儲器故障可能在設(shè)備30中出現(xiàn)。可能的存儲器故障包括例如設(shè)備30中的一個設(shè)備中的存儲塊或字線的故障。為了保護數(shù)據(jù)免受此類故障的影響,存儲器控制器25使用冗余存儲配置存儲數(shù)據(jù)。
[0030]在一些實際情況下,大部分塊故障在編程期間出現(xiàn),并因此在此階段通常需要較高程度的保護。用于保護數(shù)據(jù)免受編程故障影響的示例性技術(shù)在提交于2012年8月23日的美國專利申請13/592,561中有所描述,其轉(zhuǎn)讓給本專利申請的受讓人并且其公開通過引用的方式并入本文中。
[0031]通常,存儲器控制器計算針對某些數(shù)據(jù)的冗余信息,并且將數(shù)據(jù)和冗余信息存儲在設(shè)備30中。冗余存儲配置被設(shè)計成使得在存儲器故障的情況下,出現(xiàn)故障的存儲器單元中的數(shù)據(jù)可使用剩余數(shù)據(jù)和冗余信息進行重建。例如,存儲器控制器可使用RAID方案來達成此目的。
[0032]然而,在實施過程中,冗余存儲裝置的故障恢復(fù)力以犧牲存儲器空間為代價而實現(xiàn)。更多冗余通常提高了對故障的恢復(fù)力,但另一方面,降低了可用存儲器空間。在一些實施例中,存儲器控制器25調(diào)整冗余信息的相對大小,即由冗余存儲裝置所引發(fā)的存儲器開銷量,以匹配設(shè)備30中的可用存儲器空間。
[0033]圖2為根據(jù)本發(fā)明的實施例示意性地示出用于選擇冗余存儲配置的方法的流程圖。在評估步驟100中,存儲器控制器25評估存儲器設(shè)備30中的可用存儲器空間以寫入數(shù)據(jù)。在選擇步驟110中,存儲器控制器25根據(jù)可用存儲器空間選擇冗余存儲配置。在計算步驟120中,存儲器控制器25使用所選擇的冗余存儲配置計算冗余信息。在寫入步驟13