背景技術:
存儲器和存儲常在精確度(錯誤)、持久性、性能、能量效率與密度(容量)之間具有各種權衡。單級單元(slc)存儲器(例如動態隨機存取存儲器(dram)和一些形式的閃存)在每個單元中存儲1位的數據。為了提供更高的密度,(例如閃存和相變存儲器(pcm)可用的)多級單元(mlc)存儲器將一個單元中的值范圍細分為許多級以存儲多于1位的數據。例如,閃存代表存儲器單元的閾值電壓的值,pcm代表存儲器單元的電阻的值。由此,對于某些多級存儲,單元允許的電阻范圍越大,單元中可用于存儲信息的級別數越高,從儲存觀點來看使得單元密度更大。也就是說,單元能夠在每單位物理容積存儲更多的信息。然而,關于權衡,對于在保持便宜、可靠的同時制作密度多大的單元存在限制。
另外,單元密度越大,維持相同錯誤率需要的讀寫機制越精確。例如,對于固定的電阻范圍,使用更多的級別數要求更精確的硬件以每次正確地讀寫這些單元。更精確的硬件意味著更高的成本;對于相同的硬件,在單元中存儲更多的級別數會引發更高的讀寫錯誤率。其它電阻改變過程(例如pcm中的漂移)也影響讀錯誤率。
技術實現要素:
本文描述了動態近似存儲和系統,其允許應用和操作系統利用放松存儲設備的存儲器中的區域的錯誤要求,以作為對增加的容量、持久性、性能、能量效率或存儲設備的其它屬性的交換,同時仍能夠為數據維持適當的輸出質量。
描述了一種用于動態近似存儲的存儲器芯片,其包括存儲器的具有不同錯誤約束的至少兩個區域。該存儲器芯片能夠包括至少一個閾值寄存器,用于存儲標識與該至少兩個區域的每個區域對應的存儲單元的值的閾值的值;以及控制邏輯,可編程地調節該存儲器單元的該閾值的值。該閾值可被調節以創建單元中的值的非對稱范圍,甚至調節單元能夠存儲的級別(和位)的數目。
一種控制用于動態近似存儲的存儲設備的方法包括修改存儲在閾值寄存器中且與包括至少兩個區域的存儲器的區域中的至少一個單元相關聯的至少一個值,以將偏置應用于該至少一個單元,其中該偏置調節單元中的值的范圍。在另外實施方式中,存儲器的單元或區域的錯誤率能夠被修改使得存儲器的不同區域具有不同的糾錯級別。
本發明內容被提供以用簡化形式介紹在下面的具體實施方式中進一步描述的概念的選擇。本發明內容不旨在標識所要求保護的主題的關鍵特征或必要特征,也不旨在用于限制所要求保護的主題的范圍。
附圖說明
圖1a圖示了存儲精確度和數據編碼的操作;
圖1b圖示了用于圖1a中所示的存儲器100的三種類型的存儲區域的表示;
圖2a-2c圖示了具有不同指派的閾值以提供1位(圖2a)和2位(圖2b和圖2c)的存儲的四級別單元的模擬(電阻)范圍(x軸);
圖3圖示了用于可編程存儲精確度的存儲器系統;
圖4a-4c圖示了各種操作環境和相應的存儲位置;
圖5a示出了均勻的(u)和偏置的(b)4級單元參數的表1;
圖5b示出了均勻的(u)和偏置的(b)8級單元參數的表2;
圖6示出了隨均勻的和偏置的pcm單元的時間變化的組合的原始誤碼率(rber)的曲線圖;
圖7示出了具有增大的清理間隔的密度的曲線圖,其對均勻的和偏置的pcm單元進行比較;
圖8示出了比較512數據位塊上的糾錯碼(ecc)的容量與開銷的曲線圖;
圖9示出了圖示ecc存儲開銷與清理間隔之間的權衡的圖表;以及
圖10示出了比較用于閃存的512字節塊數據上的ecc的容量與開銷的曲線圖。
具體實施方式
本文描述了動態近似存儲和系統,其允許應用和操作系統利用放松存儲設備的存儲器中的區域的錯誤要求,以作為對增加的容量、持久性、性能、能量效率或存儲設備的其它屬性的交換,同時仍能夠為數據維持適當的輸出質量。
“近似存儲”指可能指示某些對象可以被存儲在具有較高錯誤可能性的存儲器中的存儲器優化技術。存儲器的具有較高錯誤可能性的這些區域不一定是具有高錯誤率的區域,僅是對具體錯誤率的容忍性或要求被放松并且可能發生偶然的錯誤的區域。
“動態近似存儲”涉及針對存儲設備的多個區域的放松的錯誤約束的可調節優化。動態近似存儲能夠涉及單級單元(slc)和/或可變的多級單元(mlc)存儲,并可以進一步涉及糾錯技術。針對存儲器區域的放松的錯誤約束還可貢獻用于存儲數據(尤其是針對對于至少一些數據不要求常規存儲器提供的精確度的應用)的附加的容量。
動態近似存儲適用于能夠利用具有放松的錯誤約束的存儲器的定制應用。這些定制應用能夠包括近似感知算法和/或操作系統。放松存儲設備的存儲器中的區域的錯誤要求能夠允許增加的容量、持久性、性能、能量效率或存儲設備的其它屬性。
所描述的用于定制應用的動態近似存儲包含具有不同錯誤約束的不同區域。存儲器區域的錯誤的概率在本文中被稱為“精確度”,其中較低的錯誤概率表示較高的精確度。也就是說,較高的精確度具有較低的錯誤率。單元錯誤屬性與由應用存儲的位類型的仔細匹配能夠有益于數據的輸出質量同時獲得近似存儲提供的大部分的密度益處。
術語“存儲器”和“存儲”在本文中可互換使用,并且可通過其上下文理解被應用于該術語的任何具體含義。
圖1a圖示了存儲精確度和數據編碼的操作;以及圖1b圖示了圖1a中所示的存儲器100的三種類型的存儲區域的表示。參考圖1a,存儲器100可被指派具有不同的允許精確度級別(或錯誤率)的多個區域。例如,第一類型區域101可以最精確,具有最低的錯誤可能性(例如,10-12錯誤);第二類型區域102可以較不精確,具有放松的錯誤率;第三類型區域103可以更不精確,具有更放松的錯誤率。這些區域能夠被硬連線或是動態的(編程的)。錯誤率的差別可因所應用的糾錯類型和/或所允許的密度引起。
存儲器100可以是任何適當的存儲器存儲設備,包括slc存儲器和mlc存儲器。對于mlc存儲器(或包含slc單元和mlc單元的混合存儲器),第一類型區域101可以被配置為用于存儲單個位的單級單元區域(盡管在mlc存儲器的情況中可以是多級);第二類型區域102可以被配置成更密區域,例如,具有三級別或四級別單元;以及第三類型區域103可以被配置為比第二類型區域102更密,例如,具有八級別(例如,用于3位)或更密的單元。對于各種slc和mlc實施方式,區域可被指派不同類型的糾錯(例如,不同的錯誤代碼和/或糾錯位數)。這些類型的存儲區域的示例在圖1b中示出。
在圖1b中示出了表示圖1a的區域101、102和103的三種類型的存儲。具有最低錯誤率的第一類型區域121能夠被優化用于高重要位111,以包括存儲器單元122和提供大糾錯開銷的糾錯單元123。第二類型區域131能夠被優化用于中等重要位112,以包括比存儲器單元122密且具有中等錯誤率的單元132和提供一些糾錯開銷的糾錯單元133。第三區域141則可包括具有最高允許錯誤率的(可選地被優化用于較不重要位113的)單元142,例如為最密的存儲器且具有最小(如果有的話)的糾錯。
能夠向將數據存儲至存儲器100的程序標識包括放松錯誤約束的區域。定制應用然后能夠利用所標識的精確度(作為近似感知算法)并能夠將特定的數據指派給合適的區域(例如,區域101、102和103之一)。
例如,定制應用可以生成編碼數據110,編碼數據110包括可被標識為對輸出質量最重要的位(高重要位111)、能夠被標識為對輸出質量重要的位(中等重要位112)和能夠被標識為對輸出質量較不重要的位(低重要位113)。這里,高重要位111要求最高的精確度以確保輸出質量。因此,高重要位111被存儲在第一類型區域101中。高重要位111的示例是數據塊的頭部。中等重要位112可以被存儲在第一類型區域101中,或將中等重要位112存儲在第二類型區域102中就足夠了。然后低重要位113能夠被存儲在最放松的錯誤率區域(例如,第三類型區域103)中。
盡管示出了三種類型的區域,但是在一些情況中可以使用兩種類型的區域,在一些其它情況中可使用多于三種類型。區域類型的數目可以取決于使用存儲器的具體應用。在一些情況中,類型的數量是可編程的,并且能夠在制造之后被調節,甚至能夠被重新編程。
每個區域的存儲器單元可以是相同類型的單元,在該情況中,不同的區域通過如何解釋單元的值來被獲得。也就是說,針對多級單元的讀寫過程能夠控制單元屬于哪類存儲器區域。例如,通過調節閾值(甚至通過指派特定的電阻范圍),四級別的多級單元能夠被用于存儲1位或2位。
這在圖2a-2c中被圖示,其示出了具有指派的不同閾值的四級別單元的模擬(電阻)范圍(x軸),以提供1位(圖2a)和2位(圖2b和圖2c)的存儲。x軸范圍是對數標度。
相變存儲器單元將信息存儲在硫屬化合物材料的電阻中,其中硫屬化合物材料提供了足夠寬范圍的電阻以允許多級單元。電阻基于單元中的非晶體和晶體材料的量而改變,其中非晶體和晶體材料的量能夠通過對材料應用不同振幅的電流脈沖來控制。對于slc,單位的信息以完全非晶態(高電阻)或幾乎晶態(低電阻)被存儲。由此,參考圖2a,四級別單元可通過向目標閾值指派‘1’和‘0’被編程為(slc方式的)二級別單元。
由于高電阻級別與低電阻級別之間的高邊界,針對slc的寫入電路能夠不如針對mlc的寫入電路精確。因為每個mlc級別窄于slc級別,所以寫入電路更精確并且通常采用應用寫入脈沖隨后讀取單元的迭代過程,以驗證電阻在目標級別邊界(例如,2t)內。mlc包含將它們的模擬狀態映射到數字信息中的電路。模擬值的每個范圍(級別)映射至某一二進制值(或“位模式(bitpattern)”)。在寫入操作時,寫入電路迭代地應用脈沖并驗證是否達到目標級別。在圖2a-2c中,最終的寫入電阻被建模為該級別的目標電阻周圍的正態分布。
圖2b圖示了針對具有從最低至最高電阻的l0、l1、l2和l3級別(對數標度)的4級單元的示例性映射,其中‘10’被映射至最低電阻帶、‘11’被映射至第二最低電阻帶、‘01’被映射至第二最高電阻帶、以及‘00’被映射至最高電阻帶。當然,其它映射可以被使用。實際上,在一些實施方式中,將某些位模式的映射優化至特定的電阻范圍是可能的。例如,被指示為具有大量‘00’模式的數據流能夠被存儲在‘00’被映射到范圍的可具有較少漂移錯誤的具體部分(例如l3(見圖2b和圖2c))的單元中,這將在下文更詳細地討論。
在一些情況中,能夠基于范圍的頻率為它們指派二進制值,其中將最通用指派給失效最少的級別,并將第二最通用指派給具有第二至最少失效率的級別等等。在一些情況中,將最通用指派給失效最少的級別并將gray碼用于其它單元,從而使用gray碼約束但以使該類單元的集合錯誤率的方式指派值最小化。
例如,如果確定‘00’是最通用的位模式、然后是‘10’、然后是‘01’、然后是‘11’,以及如果如上所述確定發生多級單元的漂移(其中最高和最低級別未漂移,但是第二和第三級別漂移且第三級別漂移最多),則可將‘00’指派給第四級別。對于使用gray碼的情況,在該情況中級別與級別之間僅變化1位,第三級別的位模式的選擇是‘01’或‘10’。由于‘01’不比‘10’通用且第三級別具有最嚴重的漂移,則將‘01’指派給第三級別。接下來,對于第二級別,根據gray碼必須選擇‘11’。最后,將‘10’指派給第一級別。
典型地,對每個電阻范圍的劃分是均勻的并且每個級別位于2t(或例如圖2a中的4t)的目標級別邊界內,其中距級別分布的波峰的大于b的距離(b>t)可導致指示單元的下一級別的值。gray碼可用于使相鄰級別之間的漢明距離最小化。
pcm的均勻劃分的示例是最小電阻帶l0:103-104ω、第二最小電阻帶l1:104-105ω、第二最高電阻帶l2:105-106ω、以及最高電阻帶l3:106-107ω。寫入過程通常以這些均勻劃分的帶的中點(例如,分別103.5ω、104.5ω、105.5ω、106.5ω)為目標。
pcm單元能夠遇到兩種類型的錯誤—寫入錯誤和漂移錯誤。當寫入電路不能在超過最大迭代次數之前將單元電阻設為目標級別時發生寫入錯誤,這將單元留在不期望的電阻級別。在pcm中,材料松弛導致單元電阻漂移至較高電阻級別,這導致第二類錯誤—漂移錯誤。電阻漂移由材料的結構松弛導致,這隨時間使電阻增大。電阻越大,漂移越強。單向漂移增加了單元電阻并且高電阻級別的漂移效應比低電阻級別的漂移效應更明顯。
其中的含義是即使單元最初被正確地(在電阻范圍2t內)寫入,它可隨時間漂移至不同的值,這導致軟錯誤(例如,如果l0值漂移到l0+b外)。由于l3是4級電阻范圍的最高級別,則在l3中漂移至較高電阻不會導致錯誤。相反,l2變為經受漂移錯誤最多的級別并常在單元的組合軟錯誤中占據主導。如此,均勻單元中的第二最高級別(圖2b中的l2)變為最易漂移的級別,并在組合的漂移錯誤率占據主導。在具有多于四級別的mlc中可以看到類似的效應。
根據本文描述的某些實施方式,因漂移(和其它磁化率)引起的錯誤使用近似存儲以受控的方式暴露于應用。除了近似存儲以外,在一些情況中,可以包括例如以下的減輕漂移的方法:存儲器清理、糾錯、或合并多個級別以建立聚合級別,其中聚合級別足夠寬以至于跨級別邊界概率可被忽略(例如,三級別單元)。
由于單元電阻范圍中的帶的大小和位置確定由寫入過程和漂移引起的錯誤數目,所以通過改變單元的電阻范圍以及位如何被映射至單元而使某些類型的錯誤最小是可能的。
圖2c示出了使用偏置使漂移錯誤最小化的實施方式。代替均勻的級別分布(即,所有級別在圖2b(對數空間)具有相同的大小),可實施偏置級別,在偏置級別中模擬值范圍被調諧以使組合的(寫入和漂移)錯誤率最小化。偏置級別在對數空間范圍呈現為不均勻。
例如,在上述的映射中,使第二最高電阻帶較寬(例如,105-106.5ω),同時在寫入操作期間仍以105.5ω為目標將導致pcm中的較少漂移錯誤。
如圖2c所示偏置重定位每個電阻級別和重新調節每個電阻級別的大小。組合的漂移錯誤率能夠通過均衡每個單獨級別的漂移錯誤率(假設所存儲的數據映射均勻地映射至每個級別)而被最小化。如圖3c所示,漂移更容易作用的級別具有較寬的值范圍,即較高電阻級別。級別偏置能夠基于自最后一次寫入起的固定消逝時間(“清理間隔”)被優化。這假設系統在此清理間隔清理存儲內容并將電阻級別重置為目標電阻。值得注意的是,單元將以不同的清理間隔工作,但是與它們被優化的間隔相比它們將經受更高的錯誤率,因為級別的錯誤率未被完全均衡。
偏置從每級別(具有相等的帶bb)的中點改變目標電阻以在左側形成窄帶(d)和在右側形成較寬帶(bi)以留出更多的空間用于漂移。然而,隨著目標電阻移至較低值且d減小,因為寫入電阻分布的尾部更接近級別的下端,所以寫入錯誤率開始增大。因此,d和bi的大小是寫入錯誤率與漂移錯誤率之間的權衡。對于其它技術的漂移,這種關系和解決方案可以是不同的。例如,一些技術可以經受到范圍中的較低值的漂移。其它技術可以經受到值整個范圍中的中心值或具體值范圍的漂移。對于這些類型的技術中的任一個,可進行偏置以在可能發生漂移的方向形成較寬的帶。
由此,某些實現包括調諧不均勻的帶大小(例如,根據指數的對數標度中的不均勻的范圍)和寫入操作目標(到可能不同于帶中點的值)以設置配制中的單元錯誤率,其可以產生所存儲的圖像(或通常任意編碼數據)的較小質量下降。
附加地或備選地,某些實施方式包括改變值如何映射至級別,例如在較少可能經受錯誤的級別(例如,在具有最少(如果有)的因漂移引起的錯誤的最高電阻帶)放置(針對具體算法)較通常的值。除了允許2位的存儲以外,四級別單元能夠以優化方式將其具體值指派給具有2t邊界的每個目標閾值。例如,如圖2b和圖2c所示,‘10’可以被映射至最低電阻級別,而‘11’可以被映射至下一最高電阻級別。然而,在一些其它情況中,‘11’可以被映射至最低電阻級別,‘10’被映射至下一最低電阻級別。映射可基于模式出現而被指派。例如,對于具有大量的‘10’模式的應用,‘10’可被映射至最高電阻級別。為級別重新指派值的另一示例性用途是使相鄰級別中變化的位數最小化。
圖3圖示了用于可編程存儲精確度的存儲器系統。存儲器300可通過包括例如用于動態改變多級單元存儲(例如,閃存和pcm)的閾值的電路301來實施存儲器100(以及圖2a-2c中所示的電阻閾值的任一或所有)。代替被調諧用于通用行為的硬編碼閾值,用于動態改變閾值的電路301能夠實施可變的閾值。也就是說,指示用于存儲器單元的級別的閾值能夠針對具體應用(或數據類型)而被優化。例如,可為單元中的不同值創建非對稱范圍。pcm使用電阻值,然而,其它存儲器可使用包括電壓值的其它物理特性。
另外,在一些情況中,區域可被分配有具體錯誤代碼。在該情況的一些中,電路301可用于實施可變的糾錯。也就是說,單元的錯誤率能夠根據該單元所屬的區域的錯誤約束而使用不同的糾錯級別來修改。電路301可以是在芯片上或存儲器控制器的一部分,并包括寄存器、解碼邏輯以及可選地用于寄存器中數據的外部控制的邏輯。存儲器控制器能夠包含用于控制存儲器的各方面的控制邏輯的至少一部分;另外,一些控制邏輯可在存儲器自身和系統的其它部分上。
在一些情況中,存儲器300是基于工業標準的存儲器卡,例如在移動電話、數字攝像機、平板電腦、平板手機、筆記本電腦和其它計算設備中可用的緊湊式閃存(cf)、多媒體卡(mmc)或安全數字(sd)非易失性存儲器卡。實施存儲器300的sd圖片存儲器(或被編碼且包含不同容錯的可標識位的其它數據類型)包括電路301以存儲可編程的閾值和基于數據屬性的不同映射(例如,基于容錯和/或位模式的映射)。
32gb通用sd能夠充當例如用于80gb數據的圖片存儲器,其包括電路301,電路301包含存儲級別信息(例如,級別的閾值)以允許將更多容錯位存儲到更密單元中的寄存器。在一些情況中,sd包括允許對存儲在寄存器中的值進行外部控制的邏輯。在一些情況中,代替對存儲在寄存器中的值的外部可編程控制,sd可具有擁有不同版本精確度的硬連線級別/閾值,其中硬連線級別/閾值可在制造(或在過程中的其它適當步驟)時被建立。
在具有合適的存儲器300的情況下,訪問存儲器300的操作系統310包括利用存儲器300的手段。也就是說,包括用于數據的精確度級別的屬性,使得操作系統310能夠向存儲器300指示與數據的某些位和/或字節相關聯的精確度級別。該指示能夠包括標記。在一些情況中,操作系統310可接收多個圖像(或其它數據),并通過例如與用于存儲器300的存儲器控制器通信以指示針對位或字節集的精確度級別,來將標識有相同重要級別的數據發送給相同類型的存儲器單元。圖1a和圖1b中所示的示例示出了三個精確度級別(以及對應的三種類型的區域);然而,粒度可以被調節使得存在更多級的存儲器以及更多級的位類型/重要性。
操作系統310可包括標識正被存儲的數據的數據類型(以及對應的合適的存儲精確度級別)的功能。附加地或備選地,操作系統可以經由應用編程接口(api)320暴露不同的存儲精確度級別,從而應用330能夠更容易地為操作系統310標識具體數據是否能夠被存儲在具有放松要求的存儲器單元中。
應用330被建立或修改以能夠將圖像(或一些其它編碼數據)的編碼位的相對優先級指派為不同錯誤敏感性(和所導致的質量損耗)種類。在與操作系統310通信以將數據存儲在存儲器300中時,應用330為其數據請求(或指示)不同的精確度級別。不論由操作系統310理解還是經由api320理解,操作系統310和/或(存儲器300的)存儲器控制器然后根據單元的期望錯誤率,將不同錯誤敏感性種類中的位映射到不同的單元種類。
由此,如圖3所示的操作環境能夠包括一個或多個存儲器芯片(存儲器300),存儲器芯片由存儲器控制器(或讀取/寫入控制器)編程以具有為具體應用330優化的閾值(和/或錯誤代碼)。指派特定的精確度級別能夠由系統執行,但是取決于應用和/或情形。例如,存儲某類(例如jpegxr)圖像的應用330能夠使用具有被優化用于存儲jpegxr的閾值的存儲器300。在一些情況中,操作系統310和/或存儲器控制器能夠基于存儲數據的應用的類型訪問(存儲在精確存儲器和/或寄存器中的)簡檔以獲得系統參數。用戶還能夠指定他們的圖像的最終質量。
被編程的閾值還可以取決于存儲的位置。圖4a-4c圖示了各種操作環境和對應的存儲位置。例如,如圖4a所示,云存儲401能夠從在計算設備403上執行的應用330接收圖像402。計算設備403可以是或包括服務器、個人計算機、移動設備、可穿戴式計算機、游戲系統和電器中的一個或多個。圖4a所示的操作環境的一種情形是向microsoft
在圖4b所示的示例中,從應用330接收圖像405的存儲404是執行應用330的設備406上的(或與其相關聯的)本地存儲。繼續蜂窩電話示例,在此操作環境中,圖像405例如通過(例如在圖像由蜂窩電話的攝像頭捕獲時)將來自暫時存儲407的圖像寫入至計算設備406的存儲404的數據存儲408,而被存儲在蜂窩電話的存儲器中。應用330還可被存儲在存儲系統404的應用存儲409中。在一些情況中,數據存儲408和應用存儲409可以是相同的存儲器芯片的一部分,而暫時存儲404是可以與計算設備406的處理器分離或集成(例如,在芯片上)的高速緩存的一部分。在一些情況中,暫時存儲407是與數據存儲408同一芯片上的區域。當然,特定的配置取決于設備和技術。
如之前所指出的,被編程的閾值的具體數量能夠基于設備406的容量和存儲需求,設備406可以是或包括服務器、個人計算機、移動設備、可穿戴式計算機、游戲系統和電器中的一個或多個。在蜂窩電話示例中,存儲404的20%可被分配用于存儲器的最精確區域,從而存在足夠的空間以用于應用存儲404和重要的數據,而剩余的存儲404可具有較高的允許錯誤率(例如,更密或具有較少用于糾錯的位)。
在圖4c所示的示例中,存儲410能夠與通過因特網414(經由web瀏覽器413)從計算設備412接收上傳的圖像411(并將圖像存儲在與存儲410相關聯的服務器415)的網站相關聯。盡管在以分離的表示示出,但是圖4c所示的示例可在圖4a所示的環境中實現。例如,網站可以由云服務托管和/或相關聯的存儲可以是云存儲。在其它情況中,指定的服務器用于托管網站并存儲相關聯的數據。這些設備的需求和容量能夠影響閾值的數目和在每個閾值可用的存儲量的分配。
存儲基片(substrate)優化
pcm存儲基片可以被優化,以提供高密度,經由偏置提供合理的錯誤率,并且提供極低頻率的清理。在示例研究中,pcm存儲基片經由偏置被優化以使錯誤最小化,并且經由選擇性的糾錯被調諧至不同的錯誤率級別。此優化針對特定的圖像加密算法、近似感知漸進變換編解碼(ptc)而被執行。
在優化中,單元電阻級別到它們的數字值的映射被調節,以便執行偏置用以優化pcm單元從而平衡寫入錯誤與漂移錯誤,然后優化的單元利用選擇性的糾錯被調諧以匹配希望這些單元存儲的、由ptc編碼的位。例如,多級pcm單元設計可以在相當高的錯誤率(例如,10-3)時針對高密度(例如,3×)而被優化。
所描述的優化以4級配置(2位/單元)實現低錯誤率并且以8級配置(3位/單元)實現相當低的錯誤率。
為了優化,pcm單元的電阻范圍被劃分為偏置級別。一旦電阻范圍被劃分為偏置級別,下一步驟是將數字值映射至個體偏置級別。在一般圖像和ptc編碼的圖像中,0是最常見的(‘00’用于4級單元并且‘000’用于8級單元),所以值0被映射至不受漂移影響的最高級別。不存在圖像的其它值看起來比余下的值更常見,所以使用簡單的gray碼為剩余的級別指派值。
在案例研究實施例的優選實施方式中,使用三個單元配置:精確配置、4級配置和8級配置。4級配置和8級配置以其原始形式都未實現固態存儲產品的已公布的不可糾錯的誤位率(10-16),但是可以實現可以被糾錯至商用可靠性級別的相當低的錯誤率。即使對于具有較高錯誤率的8級單元,糾錯的存儲開銷也低于100%,所以甚至利用此開銷,偏置的8級單元與未糾錯的偏置的4級單元相比,提供更密的存儲。
不幸的是,即使在偏置之后,將建模電路用于16級單元也導致了太高的錯誤率(寫入錯誤率大約為10-4是合理的,但是在1秒的寫入操作之后漂移錯誤率卻是無法忍受地高—10-1),并且該錯誤率不能利用足夠低的存儲開銷通過糾錯而被降至用以證明級數增加正確的合理的錯誤率。2級單元和3級單元被用作精確基線,因為它們顯示了極低的錯誤率。在一個方面,2級單元更簡單且更快。在另一方面,3級單元以被認為精確的仍然足夠低的錯誤率提供更高的密度。4級單元和8級單元然后用作近似存儲器單元。
甚至在偏置之后,漂移可能仍然是個長期的問題。為了減輕過度的漂移,可以使用清理來重寫單元并使電阻級別降回來。基于(在下面更詳細描述的)pcm單元模型,希望清理周期為3個月(107秒)量級。每千兆位存儲100位/秒量級的平均存取帶寬是可忽略的數字。而且,如果無論如何數據將要被清理,則這可能還是一個執行損耗平衡的好機會。
一旦單元被優化,單元可以被調諧以提供不同的錯誤率級別。存儲控制器負責提供各種糾錯碼,每個糾錯碼位于由元數據存儲所需的存儲開銷和所提供的錯誤率降低限定的空間中的不同點。原理上,這導致更高的控制器復雜性,但是實踐中在相同族(例如,bch-4和bch-16)中使用多個代碼可以保持復雜性得到控制。
控制器還負責將存儲組織成區域,每個區域具有不同的糾錯強度。控制器將區域至配置映射存儲在表中,該表駐留在控制器中且由預配置的精確的存儲區域支持,其在電力循環期間存留該映射。系統軟件將特殊的配置命令發送給控制器以分配和配置區域。一旦被配置,控制器使用所請求的地址和區域至配置映射中的信息確定該請求針對哪個區域和在為該請求服務時使用的合適的糾錯強度。不同區域的數目小(例如,在此示例中為8),所以區域至配置映射可以支持可變大小區域并完全關聯。
具有不同糾錯的區域具有不同的元數據開銷。如此,不同的區域需要不同數目的單元來存儲相同數目的數據位。整個存儲空間可以兩種方式之一被管理。靜態管理在制造時將存儲簡單地劃分成多個區域。這種方法不靈活,它不允許不同比例的存儲專用于一個區域。第二種方法是允許區域的動態重配置以匹配應用需求。在此情況中,區域大小重調節導致附加的復雜性。假設存儲設備在制造時使所有區域默認地被初始化為最強可用糾錯,當區域第一次被配置時,其密度增長因此可用的大小也增大。應對它的簡單方式是將此區域暴露為兩個區域,一個具有重新配置之前的原始大小的區域以及具有剩余存儲的虛擬區域。這使得尋址更簡單。如果系統能夠在別處容納剩余區域的內容,則區域能夠僅被重配置為更小的大小。
評估設置
定制仿真基礎設施用于多級單元仿真。質量測量基于kodakpcd圖像集中768×512像素分辨率的24灰度級原始圖像。圖5a和圖5b分別概括了用于4級單元和8級單元的配置和參數設置。圖5a示出了均勻的(u)和偏置的(b)4級單元參數的表1。rt表示級別的平均電阻,rb表示級別的上邊界處的電阻。圖5b示出了均勻的(u)和偏置的(b)8級單元參數的表2。注意,與均勻的單元相比,偏置單元使目標級別(logrt)和級別邊界(logrb)朝向低電阻移動適當的量,這導致以增大的寫入錯誤為代價的較低的漂移所引致的錯誤。偏置單元的寫入錯誤率根據應用的特性被設置為10-6。整體漂移錯誤率能夠通過均衡所有級別的漂移錯誤率(除了第一級別和最后一個級別)而被最小化。單元在被寫入之后以清理間隔t=107(約3個月)被優化。在清理期間,它們的原始目標電阻被恢復。
所建議的系統由兩個度量評估:峰值信噪比(psnr)和存儲器密度。psnr逐個像素比較原始圖像與解碼圖像,其中解碼圖像包含來自有損壓縮算法(例如,量化)和存儲器子系統的錯誤(在此情況中,未糾正的寫入錯誤和漂移錯誤)。psnr值越高,原始圖像與重構圖像之間的差別越小。
近似存儲器系統使用來自若干目標psnr級別(即35db、38db、40db和42db)的圖像進行評估。對于大多數圖像,40-42db范圍表示高圖像質量且失真在視覺上幾乎無法察覺;然而38db和35db分別表示普通質量和低質量。由于近似存儲器系統中的非確定性錯誤模式,每個圖像的100個樣本在該標準檢查程序(benchmark)中運行并且使用最小psnr,這給出了重構圖像的質量的下界。存儲器密度被定義為由單元存儲的數據位的數目。易出錯存儲器(例如,pcm)通常使用糾錯碼(ecc)以從某一數目的錯誤恢復。糾錯位的存儲開銷可以使存儲器密度降低。
對于已確定容錯類的目標錯誤率的定制應用,pcm基片可被優化用于定制應用。在示例性的案例研究中,通過經由偏置優化單元來將基片優化用于任意清理率(107s或近似3個月)。圖6示出了隨均勻的和偏置的pcm單元的時間變化的組合的原始誤碼率(rber)的曲線圖。這里,示出了對于4級單元和8級單元而言偏置對錯誤率的作用,報告了跨所有級別的組合的錯誤率。由于漂移作用,錯誤率隨時間增長。
最初,使用4級和8級的均勻單元(均勻的4lc和均勻的8lc)。如所期望的,4級單元的錯誤率總是低于8級單元的錯誤率,因為較少的級別允許更多的空間用于每個級別中的漂移。然而,這兩種類型的單元即使僅在寫入之后的1個小時就開始呈現過度高的錯誤率。相反,偏置的4lc在該時間范圍保持極低的漂移錯誤率(1010s處的10-20)。偏置的4lc的原始誤碼率(rber)由寫入錯誤占據主導。將最高密度與相當低錯誤率結合的偏置8lc在107s處提供大約10-3的錯誤率的良好權衡,比均勻的8lc低2個數量級。幸運地,它還滿足最多容錯位(即,精細位)的需求。這允許不對所有這些位使用糾錯,從而消除了不必要的元數據開銷。
圖7示出了具有增大的清理間隔的密度的曲線圖,其對均勻的和偏置的pcm單元進行比較。圖7提供了哪個單元配置在示例性實施方式的整體密度與清理開銷之間提供最佳權衡的觀點,該示例性實施方式包括糾錯以將不可糾錯的誤碼率(uber)維持在商用錯誤率(10-16)。2lc和3lc單元具有如精確存儲器一樣低的rber,因而不需要糾錯。3lc提供了2lc的1.58×的更高密度。均勻的單元(即,4lc、8lc和16lc)的密度盡管對于短清理間隔(太短以致于不引人注意)高,但是在較長的間隔因為漂移引致錯誤快速產生而急劇下降。相反,偏置抑制了漂移錯誤率的顯著增長:偏置4lc具有穩定的1.86×密度增益(由寫入錯誤引起的),偏置8lc經歷更加平滑的密度下降從而在大約3個月(107s)之后實現了2.28×的密度改進。
一旦用于定制應用的算法錯誤率要求被確定,并且基片被優化用于最低可能錯誤率,算法和基片能夠經由糾錯進行匹配。這依賴于理解糾錯機制的存儲開銷與其糾正力量之間的權衡。圖8示出了比較512數據位塊的糾錯碼(ecc)的容量與開銷的曲線圖。在圖8中,提供了各種糾錯機制(具有存儲開銷)、以及原始誤碼率(rber)與不可糾錯的誤碼率(uber)之間的對應關系。
單糾錯和雙檢錯(secded)ecc在72位中糾正一個錯誤并檢測多達兩個錯誤,每個bch碼糾正512數據位加開銷中多達指示數目的錯誤。能夠基于定制應用的具體類的位的需要/錯誤約束選擇用于存儲器區域的合適的糾錯技術。在一些情況中,可能不需要附加的糾錯。在其它情況中,使用一些附加的糾錯方案。例如,如果期望一種糾錯機制接受10-3的rber并產生10-16的uber,則曲線顯示bch-16是以最低存儲開銷(31.3%)提供此容量的代碼。類似地,能夠看出bch-6以11.7%的開銷提供10-6的uber,這對某些低重要位(它們可以構成正被存儲的位中的大多數)來說是足夠的。
還值得注意的是,隨著rber增大,維持相同uber所需的代碼強度迅速增長。這突出了偏置的價值:要不是其使錯誤率降低2個量級,8級單元設計將提供如此高的rber,以致于糾正所有錯誤的開銷將過高。
為偏置優化所選擇的清理周期在某種程度上是任意的。為了說明使用具有其它清理間隔的相同的描述的單元設計的效果(所以單元被“超出規定地”用于不同的清理間隔),在不同的清理間隔上執行仿真。如果間隔短于規定,則寫入錯誤占據主導;如果間隔較長,則代替地漂移錯誤占據主導。
圖9示出了圖示ecc存儲開銷與清理間隔之間的權衡的圖表。對于每列,第一行中的代碼被應用于徹底糾錯(tc)中的所有位;選擇性糾錯(sc)將第一行ecc用于mb1中的控制和行程長度位,將第二行ecc用于其它mb中的控制和行程長度位,并留下所有的精細位不被保護。第三行示出了用于sc的總開銷。在圖9中,能夠看出糾錯選擇針對不同的清理間隔如何變化(假設<1db的質量下降)。
圖9中的圖表在每個間隔將徹底糾錯(偏置8lctc)與選擇性糾錯(偏置8lcsc)并列比較。隨著清理間隔增大(朝向x軸右側),必須采用更強的ecc機制抑制漂移錯誤率的增長,這導致更大的存儲開銷。在另一方面,較大的間隔減少了系統功耗、由數據移動引起的帶寬開銷和由清理產生的校驗位計算。
盡管107秒被選擇作為密的近似圖像存儲系統的目標清理間隔,但是如果更高的密度是最優先的,則對其它系統而言更短的間隔也是可接受的。然而這些結果的中心思想是:僅在需要時選擇性地應用糾錯能夠顯著地減少密度損失同時使存儲器具有算法要求的錯誤率,如每對線條中的巨大差別所證明的。通過包括偏置(以107的清理間隔被優化),僅需要10.22%(從幾乎32%下降到)存儲開銷,這導致能夠達到2級基線的2.7×的存儲密度。
本文描述的框架容易地適用于其它技術,例如閃存,尤其多級閃存(例如,tlcnand閃存)。在這些設備中,ecc(bch和ldpc是常見的)被應用于512字節(或更大,例如1024字節)的扇區。圖10示出了比較512字節塊數據(典型地閃存)上的ecc的容量與存儲開銷的曲線圖。每個代碼能夠糾正512字節閃存扇區中的指示數目的錯誤和增擴的ecc校驗位。
現有研究報告tlcnand閃存設備具有初始的10-4的rber,其隨程序/擦除循環的數目逐漸增加。由此,tlc閃存可為存儲需要最高精確度的位的單元使用bch-16,為需要較低精確度的位使用bch-6,并且需要最低精確度的剩余位可能不被糾錯。rber隨同程序/擦除循環增大,所以逐漸要求更強的ecc。例如,rber在大致3000個程序/擦除循環之后達到10-3。此時,選擇性糾錯和徹底糾錯的密度改進分別降低至2.88×和2.49×,使選擇性糾錯更具吸引力。
協同設計的數據編碼和存儲機制提供更密的近似存儲。通過標識編碼位對輸出質量的相對重要性和根據所標識的相對重要性執行糾錯,能夠增大存儲容量。級別偏置可被進一步并入存儲中以降低經受漂移的基片中的錯誤率。有利地,所描述的系統和技術適用于各種存儲基片。
本發明的某些方面提供了下面的非限制性實施方式。
示例1.一種用于動態近似存儲的存儲器芯片,包括:存儲器單元陣列,陣列包括至少兩個區域;至少一個閾值寄存器,至少一個閾值寄存器用于存儲用于與至少兩個區域中的每個區域相對應的存儲器單元的閾值的值;以及控制邏輯,控制邏輯用以可編程地調節用于存儲器單元的所述閾值的所述值。
示例2.根據示例1的存儲器芯片,其中閾值的值表示電阻閾值。
示例3.根據示例2的存儲器芯片,其中用于針對至少兩個區域中的至少一個區域的存儲器單元的電阻閾值指示對數標度電阻帶中的非均勻性。
示例4.根據示例1的存儲器芯片,其中閾值的值表示電壓閾值。
示例5.根據示例1-4的任一個的存儲器芯片,其中存儲器單元包括單級單元或多級單元中的至少一個,其中至少兩個區域具有對應的至少兩種類型的可用的糾錯開銷。
示例6.根據示例1-5的存儲器芯片,進一步包括控制器,控制器提供各種糾錯碼,其中控制器存儲區域至配置映射,以指示至少兩個區域中的請求所針對的合適的區域和來自各種糾錯碼中的一個糾錯碼的用以服務于請求的合適的糾錯強度。
示例7.根據示例1-6的任一個的存儲器芯片,進一步包括用于存儲位模式表的至少一個位模式映射寄存器,位模式表將特定位模式映射至至少兩個區域中的區域中的至少一個區域的多級單元中的特定級別,其中控制邏輯進一步包括用以可編程地指派被映射至特定級別的特定位模式的控制邏輯。
示例8.根據示例1-7的任一個的存儲器芯片,其中存儲器芯片是安全數字(sd)非易失性存儲器卡。
示例9.一種控制用于動態近似存儲的存儲設備的方法,包括:修改被存儲在閾值寄存器中并且與存儲器的區域中的至少一個單元相關聯的至少一個值,以將偏置應用于至少一個單元,存儲器包括至少兩個區域,其中偏置調節單元中值的范圍。
示例10.根據示例9的方法,進一步包括:將位模式指派給單元中的值的范圍中的每個范圍。
示例11.根據示例9或10的方法,進一步包括:將第一級別的糾錯指派給至少兩個區域的中一個區域,以及將第二級別的糾錯指派給至少兩個區域中的第二區域。
示例12.根據示例9-11的任一個的方法,其中偏置產生對數標度范圍中的非均勻性。
示例13.根據示例9-12的任一個的方法,其中該存儲器是相變存儲器并且該值表示電阻值。
示例14.根據示例9-12的任一個的方法,其中該值表示電壓值。
示例15.根據示例14的方法,其中存儲器是多層閃存存儲器。
示例16.一種移動設備,包括:處理器;存儲系統,存儲系統包括:存儲器芯片,存儲器芯片包括:存儲器單元陣列,陣列包括至少兩個區域;至少一個閾值寄存器,至少一個閾值寄存器用于存儲用于與至少兩個區域中的每個區域相對應的存儲器單元的閾值的值;以及控制邏輯,控制邏輯用以可編程地調節用于存儲器單元的閾值的值;以及定制應用,定制應用被存儲在存儲系統上,并且包括在由處理器執行時將數據存儲在存儲器芯片上的指令,其中數據具有利用至少兩種類型的錯誤約束標識的位。
示例17.根據示例16的移動設備,其中用于針對至少兩個區域中的至少一個區域的存儲器單元的閾值指示對數標度范圍中的非均勻性。
示例18.根據示例16或17的移動設備,進一步包括提供各種糾錯碼的控制器。
示例19.根據示例18的移動設備,其中控制器存儲區域至配置映射,以指示至少兩個區域中的用以存儲數據的請求所針對的合適的區域和來自各種糾錯碼中的一個糾錯碼的用以服務于請求的合適的糾錯強度。
示例20.根據示例16-19的移動設備,存儲位模式表的至少一個位模式映射寄存器,位模式表將特定位模式映射至至少兩個區域中的區域中的至少一個區域的多級單元中的特定級別,其中控制邏輯進一步包括用以可編程地指派被映射至特定級別的特定位模式的控制邏輯。
示例21.根據示例16-19的移動設備,其中該閾值的值表示電阻閾值。
示例22.根據示例16-19的移動設備,其中該閾值的值表示電壓閾值。
示例23.一種用于執行示例9-15的任一個的方法的系統或產品。
示例24.一種系統,包括用于修改被存儲在閾值寄存器中并且與存儲器的區域中的至少一個單元相關聯的至少一個值,以將偏置應用于至少一個單元的裝置,存儲器包括至少兩個區域,其中偏置調節單元中值的范圍。
應該理解,本文描述的示例和實施方式僅用于說明目的,對本領域技術人員教導其各種修改或改變并且該修改或改變包括在本申請的精神和范圍內。
盡管主題用結構特征和/或動作專用的語言描述,但是將理解,所附權利要求中定義的主題不一定限于上述的具體的特征或動作。然而,上述的具體的特征和動作作為實現權利要求的示例被公開,其它等同的特征和動作旨在權利要求的范圍內。