背景技術(shù):
存儲器和存儲常在精確度(錯誤)、持久性、性能、能量效率與密度(容量)之間具有各種權(quán)衡。單級單元(slc)存儲器(例如動態(tài)隨機存取存儲器(dram)和一些形式的閃存)在每個單元中存儲1位的數(shù)據(jù)。為了提供更高的密度,(例如閃存和相變存儲器(pcm)可用的)多級單元(mlc)存儲器將一個單元中的值范圍細分為許多級別以存儲多于1位的數(shù)據(jù)。例如,閃存代表存儲器單元的閾值電壓的值,pcm代表存儲器單元的電阻的值。由此,對于某些多級別存儲,單元允許的電阻范圍越大,單元中可用于存儲信息的級別數(shù)越高,從儲存觀點來看使得單元密度更大。也就是說,單元可以在每單位物理容積存儲更多的信息。然而,關(guān)于權(quán)衡,對于在保持便宜、可靠的同時制作密度多大的單元存在限制。
另外,單元密度越大,維持相同錯誤率需要的讀寫機制越精確。例如,對于固定的電阻范圍,使用更多的級別數(shù)要求更精確的硬件以每次正確地讀寫這些單元。更精確的硬件意味著更高的成本;對于相同的硬件,在單元中存儲更多的級別數(shù)會引發(fā)更高的讀寫錯誤率。其它電阻改變過程(例如pcm中的漂移)也影響讀錯誤率。
用于存儲增加的量的數(shù)據(jù)的云服務(wù)器、移動設(shè)備以及其它計算設(shè)備受益于更密的存儲。例如,圖像和圖片消耗了消費者設(shè)備和云中的存儲空間的很大一部分。壓縮技術(shù)可由一些應(yīng)用使用以減少需要被存儲的數(shù)據(jù)的量。糾錯技術(shù)常常用于通過對應(yīng)用隱藏錯誤來減輕硬錯誤和軟錯誤的影響。然而,在使用壓縮的文件格式時用較少的位表示圖像或其它文件,當(dāng)數(shù)據(jù)被輸出和解壓縮時錯誤可能會被放大。
技術(shù)實現(xiàn)要素:
本文描述的技術(shù)和系統(tǒng)允許應(yīng)用和操作系統(tǒng)利用放松存儲設(shè)備的存儲器中的區(qū)域的錯誤要求,以作為對增加的容量、持久性、性能、能量效率或存儲設(shè)備的其它屬性的交換,同時仍可以為數(shù)據(jù)維持適當(dāng)?shù)妮敵鲑|(zhì)量。
一種對單級單元或可變的多級單元存儲上的數(shù)據(jù)進行編碼的方法可包括:接收來自應(yīng)用的編碼數(shù)據(jù)的塊以及至少重要性屬性,重要性屬性與編碼數(shù)據(jù)的塊相關(guān)聯(lián),重要性屬性指示來自解碼編碼數(shù)據(jù)的輸出質(zhì)量中的塊的位的相對錯誤敏感性;以及至少根據(jù)重要性屬性將編碼數(shù)據(jù)的塊指派給存儲器的存儲器地址或特定區(qū)域,其中存儲器至少具有兩個精確度級別。這里,重要性屬性指示解碼編碼數(shù)據(jù)的輸出質(zhì)量中塊的位的相對錯誤敏感性。在一些情況中,操作系統(tǒng)或文件系統(tǒng)可執(zhí)行此方法的各方面。
還描述了一種近似感知算法,其可以為近似感知編碼算法的輸出數(shù)據(jù)位標(biāo)識至少兩個輸出質(zhì)量重要性級別;以及根據(jù)輸出數(shù)據(jù)位的經(jīng)標(biāo)識的輸出質(zhì)量重要性級別分割輸出數(shù)據(jù)位。近似感知算法可在一些情況下在訪問可對單級單元或可變的多級單元存儲上的數(shù)據(jù)編碼的操作系統(tǒng)或文件系統(tǒng)的應(yīng)用程序接口時,指示具有輸出質(zhì)量重要性級別的合適的重要性屬性。
本發(fā)明內(nèi)容被提供以用簡化形式介紹在下面的特定實施方式中進一步描述的概念的選擇。本發(fā)明內(nèi)容不旨在標(biāo)識所要求保護的主題的關(guān)鍵特征或必要特征,也不旨在用于限制所要求保護的主題的范圍。
附圖說明
圖1a和圖1b示出了在將編碼圖像存儲到?jīng)]有存儲精確度的近似存儲之前(圖1a)和之后(圖1b)的編碼圖像;
圖2圖示了用于可編程的存儲精確度的存儲器系統(tǒng);
圖3a-3c圖示了各種操作環(huán)境和對應(yīng)的存儲位置;
圖4a-4c圖示了在數(shù)據(jù)是編碼圖像的情況中存儲精確度的操作的示例實施方式;
圖5a-5c圖示了近似感知漸進變換編解碼(ptc)圖像編解碼中的編碼步驟;
圖6圖示了使用偏置以使漂移錯誤最小化的4級單元的模擬(電阻)范圍(對數(shù)標(biāo)度的x軸);
圖7a示出了均勻的(u)和偏置的(b)4級單元參數(shù)的表1;
圖7b示出了均勻的(u)和偏置的(b)8級單元參數(shù)的表2;
圖8示出了比較具有和不具有偏置的2級單元、4級單元和8級單元的峰值信噪比(psnr)與每個圖像像素的存儲器單元數(shù)目的曲線圖;
圖9示出了針對近似位流的psnr的曲線圖,其對在變化的誤碼率的情況下的向精確基片和近似基片的控制位—行程長度位—精細(refinement)位的分配進行比較位位;
圖10示出了具有針對指定的宏塊(mb)中的控制(ctrl)位和行程長度(rl)位的具有增加的錯誤率的psnr的曲線圖;
圖11示出了隨均勻的和偏置的pcm單元的時間的組合的原始位誤碼率(rber)的曲線圖;
圖12示出了對均勻的和偏置的pcm單元進行比較的具有增大的清理間隔的密度的曲線圖;
圖13示出了比較512數(shù)據(jù)位塊的糾錯碼(ecc)的容量與開銷的曲線圖;
圖14示出了圖示ecc存儲開銷與清理間隔之間的權(quán)衡的圖;以及
圖15示出了比較用于閃存的512數(shù)據(jù)字節(jié)塊上的ecc的容量與開銷的曲線圖。
特定實施方式
本文描述了技術(shù)和系統(tǒng),其允許應(yīng)用和操作系統(tǒng)利用放松對存儲設(shè)備的存儲器中的區(qū)域的錯誤要求,以作為增加的容量、持久性、性能、能量效率或存儲設(shè)備的其它屬性同時仍可以為數(shù)據(jù)維持適當(dāng)?shù)妮敵鲑|(zhì)量的交換。
所描述的技術(shù)適于任意編碼數(shù)據(jù),其中某些位與其它位相比對編碼器輸出質(zhì)量更重要。這些應(yīng)用包括圖像、音頻、視頻和文本編碼,例如用于圖像的jpeg、jpegxr、jpeg2000和webp,用于視頻的高效視頻編碼(hevc)、以及用于音頻的wma和mpeg-2層iii(mp3)。
對于這些應(yīng)用中的任一個,編碼算法被修改以將位指派不同的類別。也就是說,作為編碼過程的一部分,算法可被設(shè)計為基于它們對輸出質(zhì)量的相對作用來辨識不同類別的位(位是否包含錯誤)。這可被稱為“近似感知”。“近似感知”起源于“近似存儲”,指可以可能指示某些對象可以被存儲在具有較高錯誤可能性的存儲器中的存儲器優(yōu)化技術(shù)。存儲器的具有較高錯誤可能性的這些區(qū)域不一定是具有高錯誤率的區(qū)域,僅是對特定錯誤率的容忍性或要求被放松并且可能發(fā)生偶然的錯誤的區(qū)域。有利地,對存儲器區(qū)域的放松的錯誤約束還可貢獻用于存儲數(shù)據(jù)(尤其針對對于是至少一些數(shù)據(jù)不要求常規(guī)存儲器提供的精確度的應(yīng)用)的附加的容量。
術(shù)語“存儲器”和“存儲”在本文中可互換使用,并且可通過其上下文理解被應(yīng)用于該術(shù)語的任何特定含義。
圖1a所示的圖片(例如鸚鵡圖像)使用移動設(shè)備中的大部分的存儲,并常被上傳至云,從而消耗了更多的空間。為了節(jié)省存儲,這些圖像通常被壓縮至例如jpeg、jpegxr或jpeg2000的格式。盡管這些格式經(jīng)由量化已經(jīng)具有確定的質(zhì)量與存儲空間的權(quán)衡,但是可以通過以偶然的非確定的錯誤換取更高密度來實現(xiàn)附加的容量。挑戰(zhàn)在于:對于圖像輸出質(zhì)量而言一些編碼位比其它編碼位更重要。
圖1b圖示了此權(quán)衡,其示出了在圖1a所示的40db鸚鵡圖像被存儲在未優(yōu)化的8級近似單元存儲中28秒之后讀取和解碼重構(gòu)圖1a所示的圖像的結(jié)果。盡管因使用8級近似單元帶來(3倍)密度的改善,但是圖像下降大約22db。在沒有任何單元優(yōu)化或糾錯的前提下,在解碼時維持圖像質(zhì)量(40db)要求使用更高的目標(biāo)質(zhì)量級別(50db),從而在編碼時使用更小的量化因子,這導(dǎo)致幾乎雙倍的編碼圖像尺寸。備選地,糾錯可以用于保護圖像以防止錯誤,其代價是附加的存儲開銷(例如,關(guān)于bch-16的第三附加存儲的存儲開銷)。
如圖1a和圖1b所示,將編碼圖像的位任意存儲在未優(yōu)化和未調(diào)諧的近似單元可以帶來高圖像質(zhì)量,其代價是糾錯資源浪費的過度提供(并導(dǎo)致的密度損失),或可以帶來較低存儲要求,其代價是影響具有無法容忍錯誤率的(影響圖像質(zhì)量的)敏感位。通過分析包括圖1a和圖1b所示的研究確定:某些類型的編碼位中的錯誤對所產(chǎn)生的解碼圖像具有不同的影響。例如,低頻系數(shù)的錯誤影響對應(yīng)的整個塊,并且在最終圖像中可見,這在許多情況中造成不可接受的質(zhì)量下降。因此,通過使用近似感知編碼算法(在一些情況中進一步使用優(yōu)化和/或調(diào)諧的近似單元),可以維持足夠的圖像質(zhì)量并最大化資源。
近似感知編碼算法在與包含具有不同錯誤約束的不同區(qū)域的存儲合作時被優(yōu)化。存儲器區(qū)域的錯誤概率在本文中被稱為“精確度”,其中較低的錯誤概率表示較高的精確度。也就是說,較高的精確度具有較低的錯誤率。單元錯誤屬性經(jīng)由編碼算法與存儲基片的協(xié)同設(shè)計與編碼位的仔細匹配可以顯著提高圖像質(zhì)量,同時獲得近似存儲提供的大部分的密度益處。
圖2圖示了用于可編程存儲精確度的存儲器系統(tǒng)。存儲器200可通過包括例如用于動態(tài)改變多級單元存儲(例如,閃存和pcm)的閾值的電路201來實施動態(tài)近似存儲存儲器。代替被調(diào)諧用于通用行為的硬編碼閾值,用于動態(tài)改變閾值的電路201可以實施可變的閾值。也就是說,指示用于存儲器單元的級別的閾值可以針對特定應(yīng)用(或數(shù)據(jù)類型)而被優(yōu)化。例如,可為單元中的不同值創(chuàng)建非對稱范圍。pcm使用電阻值,然而,其它存儲器可使用包括電壓值的其它物理特性。
另外,在一些情況中,區(qū)域可被分配有特定錯誤代碼。在該情況的一些中,電路201可用于實施可變糾錯。也就是說,單元的錯誤率可以根據(jù)單元所屬區(qū)域的錯誤約束而使用不同的糾錯級別來修改。電路201可在芯片上或是存儲器控制器的一部分,并包括寄存器、解碼邏輯和可選地用于寄存器中數(shù)據(jù)的外部控制的邏輯。
在具有合適的存儲器200的情況下,訪問存儲器200的操作系統(tǒng)210包括利用存儲器200的手段。也就是說,包括數(shù)據(jù)的精確度級別的重要性屬性,使得操作系統(tǒng)210可以向存儲器200指示與數(shù)據(jù)的特定位和/或字節(jié)相關(guān)聯(lián)的精確度級別。該指示可以包括標(biāo)記。在一些情況中,操作系統(tǒng)210可接收多個圖像(或其它數(shù)據(jù)),并通過例如與存儲器200的存儲器控制器通信以指示針對位或字節(jié)集的精確度級別,來將標(biāo)識有相同重要級別的數(shù)據(jù)發(fā)送給相同類型的存儲器單元。精確度級別的粒度可以基于存儲器200的可用粒度。
操作系統(tǒng)210可包括標(biāo)識正被存儲的數(shù)據(jù)的類型(和相應(yīng)的適當(dāng)存儲精確度級別)的功能。在一些情況中,操作系統(tǒng)210可以接收請求數(shù)據(jù)存儲的應(yīng)用的類型(“應(yīng)用類型”)的指示(在一些情況下可與數(shù)據(jù)類型的指示相同)。附加地或備選地,操作系統(tǒng)可以經(jīng)由應(yīng)用可編程接口(api)220暴露不同的存儲精確度級別,從而應(yīng)用230可以更容易地為操作系統(tǒng)210標(biāo)識特定數(shù)據(jù)是否可以被存儲在具有放松要求的存儲器單元中。
應(yīng)用230被建立或修改以可以將圖像(或一些其它編碼數(shù)據(jù))的編碼位的相對優(yōu)先級指派為不同錯誤敏感性(和所導(dǎo)致的質(zhì)量損耗)種類。在與操作系統(tǒng)210通信以將數(shù)據(jù)存儲在存儲器200中時,應(yīng)用230為其數(shù)據(jù)請求(或指示)不同的精確度級別。不論由操作系統(tǒng)210理解還是經(jīng)由api220理解,操作系統(tǒng)210和/或(存儲器200的)存儲器控制器然后根據(jù)單元的期望錯誤率,將不同錯誤敏感性種類的位映射到不同的單元種類。
由此,如圖2所示的操作環(huán)境可以包括一個或多個存儲器芯片(存儲器200),存儲器芯片由存儲器控制器(或讀取/寫控制器)編程以具有為特定應(yīng)用230優(yōu)化的閾值(和/或錯誤代碼)。指派特定的精確度級別可以由系統(tǒng)執(zhí)行,但是取決于應(yīng)用和/或情形。例如,存儲某類(例如jpegxr)圖像的應(yīng)用230可以使用具有被優(yōu)化用于存儲jpegxr的閾值的存儲器200。在一些情況中,操作系統(tǒng)210和/或存儲器控制器可以基于存儲數(shù)據(jù)的應(yīng)用的類型訪問(存儲在精確存儲器和/或寄存器中的)簡檔以獲得系統(tǒng)參數(shù)。用戶還可以指定他們的圖像的最終質(zhì)量。
被編程的閾值還可以取決于存儲的位置。圖3a-3c圖示了各種操作環(huán)境和對應(yīng)的存儲位置。例如,如圖3a所示,云存儲301可以從在計算設(shè)備303上執(zhí)行的應(yīng)用230接收圖像302。計算設(shè)備303可以是或包括服務(wù)器、個人計算機、移動設(shè)備、可穿戴式計算機、游戲系統(tǒng)和電器中的一個或多個。圖3a所示的操作環(huán)境的一種情形是向microsoftone
在圖3b所示的示例中,從應(yīng)用230接收圖像305的存儲304是執(zhí)行應(yīng)用230的設(shè)備306上的(或與其相關(guān)聯(lián)的)本地存儲。繼續(xù)蜂窩電話示例,在此操作環(huán)境中,圖像305例如通過(例如在圖像由蜂窩電話的攝像頭捕獲時)將來自暫時存儲307的圖像寫入至計算設(shè)備306的存儲304的數(shù)據(jù)存儲308,而被存儲在蜂窩電話的存儲器中。應(yīng)用230還可被存儲在存儲系統(tǒng)304的應(yīng)用存儲309中。在一些情況中,數(shù)據(jù)存儲308和應(yīng)用存儲309可以是相同的存儲器芯片的一部分,而暫時存儲304是可與計算設(shè)備306的處理器分離或集成(例如,在芯片上)的高速緩存的一部分。在一些情況中,暫時存儲307是與數(shù)據(jù)存儲308同一芯片上的區(qū)域。當(dāng)然,特定的配置取決于設(shè)備和技術(shù)。
如之前所指出的,被編程的閾值的特定數(shù)量可以基于設(shè)備306的容量和存儲需求,設(shè)備306可以是或包括服務(wù)器、個人計算機、移動設(shè)備、可穿戴式計算機、游戲系統(tǒng)和電器中的一個或多個。在蜂窩電話示例中,存儲304的20%可被分配用于存儲器的最精確區(qū)域從而存在足夠的空間以用于應(yīng)用存儲304和重要的數(shù)據(jù),而剩余的存儲304可具有較高的允許錯誤率(例如,更密或具有較少位用于糾錯的位)。
在圖3c所示的示例中,存儲310可以與通過因特網(wǎng)314(經(jīng)由web瀏覽器413)從計算設(shè)備312接收上傳的圖像311(并將圖像存儲在與存儲310相關(guān)聯(lián)的服務(wù)器315)的網(wǎng)站相關(guān)聯(lián)。圖3c所示的示例可在圖3a所示的環(huán)境中實現(xiàn)。例如,網(wǎng)站可以由云服務(wù)托管和/或相關(guān)聯(lián)的存儲可以是云存儲。在其它情況中,指定的服務(wù)器用于托管網(wǎng)站并存儲相關(guān)聯(lián)的數(shù)據(jù)。這些設(shè)備的需求和容量可以影響閾值的數(shù)目和在每個閾值可用的存儲量的分配。
圖像編碼算法使用多個步驟以減小原始圖像的大小。這些算法可以是有損或無損的,最常見的是有損的(例如,jpeg)。圖像編碼算法可以被特別地剪裁用于近似存儲基片,使其成為近似感知編碼算法。而且,近似存儲基片可以針對正被存儲的數(shù)據(jù)而被優(yōu)化(動態(tài)近似存儲基片)。例如,編碼位的相對重要性可以被確定并且編碼位可以被存儲在近似存儲基片中,其中近似存儲基片被調(diào)諧以匹配針對特定編碼位的容錯。
圖4a-4c圖示了數(shù)據(jù)是編碼圖像的情況中存儲精確度的操作的示例實施方式。應(yīng)該理解,所示的操作適用于其它編碼數(shù)據(jù)。參考圖4a,編碼圖像400可以包括例如高重要性位401、中等重要性位402和較低重要性位403。
近似感知編碼應(yīng)用可以標(biāo)識至少兩種類型的位(或所有三種類型或如果期望更高粒度則甚至更多類型)并可以(或可以使得可能)將這些不同類型的位劃分成如圖4b所示的不同的流。近似存儲基片包括具有不同允許精確度級別(或錯誤率)的多個區(qū)域。具有類似容錯的位被映射到合適類型的存儲。例如,一個區(qū)域可以是最精確的,具有最低的錯誤可能性(例如,10-12錯誤);至少一個較不精確的、具有放松的錯誤率的其它區(qū)域被提供。這些區(qū)域可以是硬連線的或動態(tài)的(編程的)。錯誤率的差別可以由所應(yīng)用的糾錯類型和/或允許的密度引起。向?qū)?shù)據(jù)存儲至存儲的程序標(biāo)識包括放松的錯誤約束的區(qū)域。
在圖4c中,三種類型的存儲被示出作為近似存儲基片410一部分的存儲。具有最低錯誤率的第一類型區(qū)域411可以被優(yōu)化用于高重要性位401,以包括存儲器單元412和提供大糾錯開銷的糾錯單元413。第二類型區(qū)域421可以被優(yōu)化用于中等重要性位402,以包括比存儲器區(qū)域412密且具有中等錯誤率的單元422和提供一些糾錯開銷的糾錯單元423。第三區(qū)域431則包括具有最高的允許錯誤率的(可選地被優(yōu)化用于低重要性位403的)單元432,單元432為最密的存儲器且具有最少的(如果有的話)的糾錯。
盡管示出了三種類型的區(qū)域,但是在一些情況中可以使用兩種類型的區(qū)域,在其它情況中可使用多于三種類型。區(qū)域的類型數(shù)目可以取決于使用存儲器的特定應(yīng)用。在一些情況中,類型的數(shù)量是可編程的,并且可以在制造之后被調(diào)節(jié),甚至可以被重新編程。
動態(tài)近似存儲基片410可以是任何適當(dāng)?shù)拇鎯ζ鞔鎯υO(shè)備,包括slc存儲器和mlc存儲器。對于mlc存儲器(或包含slc單元和mlc單元的混合存儲器),第一類型區(qū)域411可以被配置為用于存儲單個位的單級單元區(qū)域(即使在mlc存儲器的情況中可能是多級別),第二類型區(qū)域412可以被配置為例如具有三級單元或四級單元的更密區(qū)域,第三類型區(qū)域413可以被配置為比第二類型區(qū)域412密,例如具有級別(例如,用于3位)或更密的單元。對于各種slc和mlc實施方式,區(qū)域可被指派不同類型的糾錯(例如,不同的錯誤代碼和/或糾錯位的數(shù)量)。
每個區(qū)域的存儲器單元可以是相同類型的單元,在該情況中,不同的區(qū)域通過如何解釋單元的值來被獲得。也就是說,針對多級單元的讀寫過程可以控制單元屬于哪類存儲器區(qū)域。例如,通過調(diào)節(jié)閾值(甚至指派特定的電阻范圍),四級的多級單元可以用于存儲1位或2位(或甚至3位)。
執(zhí)行案例研究以說明所描述的技術(shù)。案例研究涉及漸進變換編解碼(ptc)、jpegxr的先驅(qū)和pcm存儲基片。ptc已在若干實際應(yīng)用(例如microsoft
對于ptc圖像編碼算法,ptc圖像編碼格式被分析并且具有類似錯誤率要求的位分組被標(biāo)識以形成容錯類別。ptc編碼圖像包括可以由它們的頻率系數(shù)標(biāo)識的位。已觀察到,較低頻率系數(shù)(通常值中最大的系數(shù)),也是圖像質(zhì)量的最重要系數(shù)。這里,類似于圖4a和圖4b所示的方法,可以根據(jù)它們的頻率系數(shù)對數(shù)據(jù)塊分組是可能的。因此,參考圖4a和圖4b,標(biāo)識為401的塊對應(yīng)于針對最低頻率系數(shù)的控制和行程長度位,標(biāo)識為402的塊對應(yīng)于針對其它系數(shù)的控制和行程長度位,標(biāo)識為403的塊對應(yīng)于針對所有系數(shù)的表示精細位。
原始ptc算法將數(shù)據(jù)劃分為宏塊,其直截了當(dāng)?shù)貙⒉煌暮陦K引導(dǎo)至不同的存儲區(qū)域。然而,對于每個宏塊,ptc將控制、行程長度和精細位存儲在相同的位流中。在編碼期間,精細位已與控制和行程長度位隔離并被附于宏塊的尾部。然而,如果控制和行程長度位要被存入具有不同錯誤特性的存儲器區(qū)域,則它們需要被剝離到不同的位流。因此,修改ptc使其近似感知涉及標(biāo)識每個宏塊的控制和行程長度位并將它們隔離。
ptc可以基于系數(shù)所涉及的頻率組織系數(shù),通常從低頻到高頻。結(jié)果,較低頻系數(shù)一般存在于第一新宏塊中,并可以輕易地映射至提供低錯誤率的存儲器??刂莆槐刃谐涕L度位更能影響輸出質(zhì)量,行程長度位明顯比精細位更能影響輸出質(zhì)量。因此,這些類別的編碼位可以被分別存儲在具有增加的密度和錯誤率的存儲器區(qū)域中。例如,不同容錯類別中的位可以由修改的ptc算法存儲到具有如圖4c所示的區(qū)域的單個優(yōu)化的存儲基片的區(qū)域中,其中該存儲包括由合適的糾錯碼保護且具有所導(dǎo)致的不同錯誤率和存儲開銷的區(qū)域。最終結(jié)果是高存儲密度和少許圖像質(zhì)量下降。
圖5a-5c圖示了近似感知ptc圖像編解碼中的編碼步驟。如圖5a所示,ptc首先將圖像像素劃分成像素域500中的矩形塊,每個塊使用hlbt被變換(505)為頻域。接下來,量化(515)hblt頻域510系數(shù)以提供量化的系數(shù)520(即,定標(biāo)和四舍五入至最近整數(shù)的系數(shù))。量化分辨率因而用于表示系數(shù)的位的數(shù)目由目標(biāo)質(zhì)量確定,其通常由峰值信噪比(psnr)測量。然后,經(jīng)由‘收集’步驟(525)空間上收集和分組具有類似頻率的量化系數(shù)520以提供經(jīng)收集的系數(shù)530。
接下來,另一重排序步驟(535)以分層ping-pong方式訪問系數(shù)陣列。圖表540示出了訪問系數(shù)530的順序,這得到向量550(如圖5b所示),其中低頻系數(shù)聚集在開頭,高頻系數(shù)朝末尾聚集。由于低頻系數(shù)傾向于具有較高絕對值并且對圖像質(zhì)量而言更重要,所以頻域計算可以用于標(biāo)識不同的位。如圖5b所示,向量550被劃分成固定大小的宏塊551,隨后使用自適應(yīng)行程長度/golomb-rice算法對每個宏塊進行編碼。在熵編碼步驟(ptc的golomb-rice算法),執(zhí)行位重要性標(biāo)識(并且ptc可以變?yōu)榻聘兄?。
行程長度編碼算法使用三種類型朝位:控制位、行程長度位和精細位。如圖5b所示,朝向頂部的值傾向于比朝向底部的值大。每個系數(shù)的最重要信息片段是信號560(如果非零)和其最高有效位562(被圈的)的位置。由透印圖案指示的其余的位較不顯著位不那么重要:它們用于精細對應(yīng)的系數(shù)值,因而命名為“精細位”564。它們還具有近最大加密,所以行程長度編碼不能有效地壓縮它們。因此,精細位564僅被添加至分離的位流,其被附于編碼宏塊551的末尾。另外,一組系數(shù)的前導(dǎo)零不被編碼,因為它們隱含地通過最高有效位(msb)562的編碼被定義。前導(dǎo)零在附圖5b中被指示為“隱含零”566。其余的位是零(“零行程”568)和最高有效(1)位562,其通過編碼連續(xù)零的垂直行程而被壓縮,因為0比1常見。
參考圖5c,最終編碼可以包括宏塊551的控制和行程長度位570以及所附的精細位564。msb(由圖5c中的“m”指示)包括在編碼宏塊中,隨后的第二位指示當(dāng)其最高有效位中斷行程時系數(shù)的信號(+或-)。
還如圖5c所示,算法使用控制位區(qū)分完全行程與部分行程,并在無行程模式區(qū)分單獨的1與單獨的0。特定地,如果的連續(xù)0的數(shù)目達到最大行程大小,則0行程568可組成完全行程(圖5c中的“f”),或者如果算法在完成完全行程之前遭遇最高有效位,則0行程568可組成部分行程(圖5c中的“p”)。對于部分行程,行程長度自身在它們相應(yīng)的控制位之后立即被編碼并精確地地使用log2(最大行程大小)的位。當(dāng)最大行程大小是1(無行程模式)時1和0可以被偶然地單獨存儲。示例近似感知ptc算法可使用存儲在最不易出錯存儲器(即,“精確的”存儲器)中的頭部以記錄宏塊的位流與存儲器的存儲它們的區(qū)域之間的映射。注意,控制和行程長度位570中的錯誤可以在解碼期間影響宏塊551中所有后續(xù)位的含義。因此,此時單個位錯誤可以影響宏塊551內(nèi)的多個系數(shù)。
示例性案例研究—漸進變換編解碼
ptc圖像編碼算法參考圖5a-5c所述被修改以感知到存儲單元的不同可靠性級別(即,變?yōu)榻聘兄幋a算法)。ptc在結(jié)構(gòu)上類似于其它圖像編碼算法,所以此方法適用于其它圖像編碼算法(例如jpetxr和jpeg2000)。作為協(xié)同設(shè)計的一部分,存儲器單元設(shè)計被優(yōu)化。在示例案例研究中,除了修改ptc以變成近似感知以外,pcm存儲基片經(jīng)由偏置被優(yōu)化以使錯誤最小化,并且經(jīng)由選擇性糾錯被調(diào)諧至不同的錯誤率級別。
也就是說,單元電阻級別至它們的數(shù)字值的映射可以被調(diào)節(jié),以便執(zhí)行偏置用以優(yōu)化pcm單元從而平衡寫入錯誤與漂移錯誤,然后優(yōu)化的單元可以利用選擇性糾錯被調(diào)諧以匹配這些單元希望存儲的ptc編碼的位。
有利地,ptc的組合的近似感知編碼算法和優(yōu)化的pcm實現(xiàn)有損壓縮性能的顯著增益。與存儲在精確的pcm單元中的清晰的ptc編碼的圖像相比,示例性系統(tǒng)可將存儲基片密度增大2.7×且具有少許解碼圖像降質(zhì)。
存儲基片優(yōu)化
pcm存儲基片可以被優(yōu)化,以提供高密度,經(jīng)由偏置提供合理的錯誤率,并且提供極低頻率的清理。所描述的優(yōu)化實現(xiàn)4級配置(2位/單元)中的低錯誤率位和8級配置(3位/單元)中的相當(dāng)?shù)湾e誤率位。
相變存儲器單元將信息存儲在硫?qū)倩衔锊牧系碾娮柚?,這提供了足夠?qū)挼碾娮璺秶栽试S多級單元。電阻基于單元中的非晶態(tài)和晶態(tài)材料的量而改變,該量可以通過對材料應(yīng)用不同振幅的電流脈沖而被控制。對于slc,單個位的信息以完全非晶態(tài)(高電阻)或幾乎晶態(tài)(低電阻)被存儲。對于mlc,每個模擬值范圍(級別)被映射至某一二進制值。在寫入操作時,寫入電路迭代地應(yīng)用脈沖并驗證是否達到目標(biāo)級別。
典型地,對每個電阻范圍的劃分是均勻的并且每個級別位于2t的目標(biāo)級別邊界內(nèi),其中距級別分布的波峰的大于b的距離(b>t)可導(dǎo)致指示單元的下一級別的值。gray碼可用于使相鄰級別之間的漢明距離最小化。
pcm的均勻劃分的示例是最小電阻帶l0:103-104ω、第二最小電阻帶l1:104-105ω、第二最高電阻帶l2:105-106ω、以及最高電阻帶l3:106-107ω。寫過程通常以這些均勻劃分的帶的中點(例如,分別103.5ω、104.5ω、105.5ω、106.5ω)為目標(biāo)。
在pcm中,材料松弛導(dǎo)致單元電阻漂移至較高電阻級別,這導(dǎo)致漂移錯誤。電阻漂移由材料的結(jié)構(gòu)松弛導(dǎo)致,這隨時間使電阻增大。電阻越高,漂移越強。單向漂移增加了單元電阻并且高電阻級別的漂移效應(yīng)比低電阻級別的漂移效應(yīng)更明顯。
其中的含義是即使單元最初被正確地(在電阻范圍2t內(nèi))寫入,它可隨時間漂移至不同的值,這導(dǎo)致軟錯誤(例如,如果l0值漂移到l0+b外)。
由于單元電阻范圍中的帶的大小和位置確定由寫過程和漂移引起的錯誤數(shù)目,所以可以通過改變單元的電阻范圍以及位如何被映射至單元而使某些類型的錯誤最小是可能的。
圖6圖示了使用偏置使漂移錯誤最小化的4級單元的模擬(電阻)范圍(對數(shù)標(biāo)度的x軸)。代替均勻的級別分布(即,所有級別(在對數(shù)空間)具有相同的大小),可實施偏置級別,在偏置級別中模擬值范圍被調(diào)諧以使組合的(寫和漂移)錯誤率最小化。
例如,在上述的映射中,因為l2是4級單元中可能經(jīng)受最多漂移錯誤的級別,所以使第二最高電阻帶較寬(例如,105-106.5ω),同時在寫操作期間仍以105.5ω為目標(biāo)將導(dǎo)致pcm中的較少漂移錯誤。
偏置重定位每個電阻級別和重新調(diào)節(jié)每個電阻級別的大小。組合的漂移錯誤率可以通過均衡每個單獨級別的漂移錯誤率(假設(shè)所存儲的數(shù)據(jù)映射均勻地映射至每個級別)而被最小化。如圖3c所示,漂移更容易作用的級別具有較寬的值范圍,即較高電阻級別。級別偏置可以基于自最后一次寫起的固定消逝時間(“清理間隔”)被優(yōu)化。這假設(shè)系統(tǒng)在此清理間隔清理存儲內(nèi)容并將電阻水平重置為目標(biāo)電阻。值得注意的是,單元將以不同的清理間隔工作,但是與它們被優(yōu)化的間隔相比它們將經(jīng)受更高的錯誤率,因為級別的錯誤率未被完全均衡。
偏置從每級別(具有相等的帶bb)的中點改變目標(biāo)電阻以在左側(cè)形成窄帶(d)和在右側(cè)形成較寬帶(bi)以留出更多的空間用于漂移。然而,隨著目標(biāo)電阻移至較低值且d減小,因為寫電阻分布的尾部更接近級別的下端,所以寫錯誤率開始增大。因此,d和bi的大小是寫錯誤率與漂移錯誤率之間的權(quán)衡。對于其它技術(shù)的漂移,這種關(guān)系和解決方案可以是不同的。例如,一些技術(shù)可以經(jīng)受到范圍中的較低值的漂移。其它技術(shù)可以經(jīng)受到整個值范圍中的中心值或特定值范圍的漂移。對于這些類型的技術(shù)中的任一個,可進行偏置以在可能發(fā)生漂移的方向形成較寬的帶。
為了優(yōu)化,pcm單元的電阻范圍被劃分為偏置級別。一旦電阻范圍被劃分到偏置級別,下一步驟是將數(shù)字值映射至個體的偏置級別。在一般圖像和ptc編碼的圖像中,0是最常見的(‘00’用于4級單元并且“0000”用于8級單元),所以值0被映射至不受漂移影響的最高級別。不存在圖像的其它值看起來比余下的值更常見,所以使用簡單的gray碼為剩余的級別指派值。
在案例研究實施例的優(yōu)選實施方式中,使用三個單元配置:精確配置、4級配置和8級配置。4級配置和8級配置以其原始形式都未實現(xiàn)固態(tài)存儲產(chǎn)品的已公布的不可糾錯的誤位率(10-16),但是可以實現(xiàn)可以被糾錯至商用可靠性級別的相當(dāng)?shù)偷腻e誤率。即使對于具有較高錯誤率的8級單元,糾錯的存儲開銷也低于100%,所以甚至利用此開銷,偏置的8級單元與未糾錯的偏置的4級單元相比,提供更密的存儲。
不幸的是,即使在偏置之后,將建模電路用于16級單元也導(dǎo)致了太高的錯誤率(寫入錯誤率大約為10-4是合理的,但是在1秒的寫入操作之后漂移錯誤率卻是無法忍受地高—10-1),并且該錯誤率不能利用足夠低的存儲開銷通過糾錯而被降至用以證明級數(shù)增加正確的合理的錯誤率。2級單元和3級單元被用作精確基線,因為它們顯示了極低的錯誤率。在一個方面,2級單元更簡單且更快。在另一方面,3級單元以被認(rèn)為精確的仍然足夠低的錯誤率提供更高的密度。4級單元和8級單元然后用作近似存儲器單元。
甚至在偏置之后,漂移可能仍然是個長期的問題。為了減輕過度的漂移,可以使用清理來重寫單元并使電阻級別降回來?;?在下面更詳細描述的)pcm單元模型,希望清理周期為3個月(107秒)量級。每千兆位存儲100位/秒量級的平均存取帶寬是可忽略的數(shù)字。而且,如果無論如何數(shù)據(jù)將要被清理,則這可能還是一個執(zhí)行損耗平衡的好機會。
一旦單元被優(yōu)化,單元可以被調(diào)諧以提供不同的錯誤率級別。存儲控制器負(fù)責(zé)提供各種糾錯碼,每個糾錯碼位于由元數(shù)據(jù)存儲所需的存儲開銷和所提供的錯誤率降低限定的空間中的不同點。原理上,這導(dǎo)致更高的控制器復(fù)雜性,但是實踐中在相同族(例如,bch-4和bch-16)中使用多個代碼可以保持復(fù)雜性得到控制。
控制器還負(fù)責(zé)將存儲組織成區(qū)域,每個區(qū)域具有不同的糾錯強度。控制器將區(qū)域至配置映射存儲在表中,該表駐留在控制器中且由預(yù)配置的精確的存儲區(qū)域支持,其在電力循環(huán)期間存留該映射。系統(tǒng)軟件將特殊的配置命令發(fā)送給控制器以分配和配置區(qū)域。一旦被配置,控制器使用所請求的地址和區(qū)域至配置映射中的信息確定該請求針對哪個區(qū)域和在為所述請求服務(wù)時使用的合適的糾錯強度。不同區(qū)域的數(shù)目小(例如,在此示例中為8),所以區(qū)域至配置映射可以支持可變大小區(qū)域并完全關(guān)聯(lián)。
實施修改的算法的代碼分配不同配置的存儲。假設(shè)存儲系統(tǒng)通過處理器地址空間可直接被訪問,則每個位流可以簡單地經(jīng)由持續(xù)對象接口被分配,并由頭部指向分配的空間。如果文件系統(tǒng)被使用,則塊中的所有存儲需要是相同的配置。文件系統(tǒng)提供在開放流時指定存儲器配置的調(diào)用以及拼接多個流形成單個文件的調(diào)用。如果文件系統(tǒng)可能無變化或希望文件系統(tǒng)無變化,則多精確度存儲器(例如,動態(tài)近似存儲基片)可被暴露為獨立的容積,提供使用近似存儲維持和服務(wù)圖像收集的“圖像存儲”,其中每個圖像可以被鏈接自主文件系統(tǒng)。操作系統(tǒng)或存儲控制器可以負(fù)責(zé)任何必需的維護任務(wù),例如平均讀寫、刷新存儲器以限制隨時間的降質(zhì)、在電源故障之后重新配置存儲。
具有不同糾錯的區(qū)域具有不同的元數(shù)據(jù)開銷。如此,不同的區(qū)域需要不同數(shù)量的單元來存儲相同數(shù)目的數(shù)據(jù)位。整個存儲空間可以兩種方式之一被管理。靜態(tài)管理在制造時將存儲簡單地劃分成多個區(qū)域。這種方法不靈活,它不允許不同比例的存儲專用于一個區(qū)域。第二種方法是允許區(qū)域的動態(tài)重配置以匹配應(yīng)用需求。在此情況中,區(qū)域大小重調(diào)節(jié)導(dǎo)致附加的復(fù)雜性。假設(shè)存儲設(shè)備在制造時使所有區(qū)域默認(rèn)地被初始化為最強可用糾錯,當(dāng)區(qū)域第一次被配置時,其密度增長因此可用的大小也增大。應(yīng)對它的簡單方式是將此區(qū)域暴露為兩個區(qū)域,一個具有重新配置之前的原始大小的區(qū)域和具有剩余存儲的虛擬區(qū)域。這使得尋址更簡單。如果系統(tǒng)可以在別處容納剩余區(qū)域的內(nèi)容,則區(qū)域可以僅被重配置為更小的大小。
評估設(shè)置
定制仿真基礎(chǔ)設(shè)施用于多級單元仿真。質(zhì)量測量基于kodakpcd圖像集中768×512像素分辨率的24灰度級原始圖像。圖7a和圖7b分別概括了用于4級單元和8級單元的配置和參數(shù)設(shè)置。圖7a示出了均勻的(u)和偏置的(b)4級單元參數(shù)的表1。rt表示級別的平均電阻,rb表示級別的上邊界處的電阻。圖7b示出了均勻的(u)和偏置的(b)8級單元參數(shù)的表2。注意,與均勻的單元相比,偏置單元使目標(biāo)水平(logrt)和級別邊界(logrb)朝向低電阻移動適當(dāng)?shù)牧?,這導(dǎo)致以增大的寫錯誤為代價的較低的漂移所引致的錯誤。偏置單元的寫錯誤率根據(jù)應(yīng)用的特性被設(shè)置為10-6。整體漂移錯誤率可以通過均衡所有級別的漂移錯誤率(除了第一級別和最后一個級別)而被最小化。單元在被寫入之后以清理間隔t=107(約3個月)被優(yōu)化。在清理期間,它們的原始目標(biāo)電阻被恢復(fù)。
所建議的系統(tǒng)由兩個度量評估:峰值信噪比(psnr)和存儲器密度。psnr逐個像素比較原始圖像與解碼圖像,其中解碼圖像包含來自有損壓縮算法(例如,量化)和存儲器子系統(tǒng)的錯誤(在此情況中,未糾正的寫錯誤和漂移錯誤)。psnr值越高,原始圖像與重構(gòu)圖像之間的差別越小。
近似存儲器系統(tǒng)使用來自若干目標(biāo)psnr級別(即35db、38db、40db和42db)的圖像進行評估。對于大多數(shù)圖像,40-42db范圍表示高圖像質(zhì)量且失真在視覺上幾乎無法察覺;然而38db和35db分別表示普通質(zhì)量和低質(zhì)量。由于近似存儲器系統(tǒng)中的非確定性錯誤模式,每個圖像的100個樣本在該標(biāo)準(zhǔn)檢查程序(benchmark)中運行并且使用最小psnr,這給出了重構(gòu)圖像的質(zhì)量的下界。存儲器密度被定義為由單元存儲的數(shù)據(jù)位的數(shù)目。易出錯存儲器(例如,pcm)通常使用糾錯碼(ecc)以從某一數(shù)目的錯誤恢復(fù)。糾錯位的存儲開銷可以使存儲器密度降低。
仿真結(jié)果
為pcm近似存儲基片剪裁ptc圖像編碼算法的優(yōu)點可以從下面的結(jié)果看出。
圖8示出了比較具有和不具有偏置的2級單元、4級單元和8級元的峰值信噪比(psnr)與每個圖像像素的存儲器單元數(shù)目的曲線圖。此曲線圖以質(zhì)量相對存儲器區(qū)域示出了完全優(yōu)化設(shè)計和中間備選與slcpcm上的ptc的比較。存儲器區(qū)域(x軸)由正被使用的存儲器單元的數(shù)目測量,規(guī)范化為像素中的圖像大小。y軸示出了已經(jīng)被編碼和存儲在近似存儲器持續(xù)清理間隔(107s)之后的重構(gòu)圖像質(zhì)量。由于高密度存儲器單元常常經(jīng)受較高錯誤率,所以圖像質(zhì)量和存儲器區(qū)域不想稱。如此,曲線越往左,其表示的質(zhì)量相對存儲器區(qū)域均衡越好。
從右到左,最差的性能來自slcpcm(“2lc”)上的ptc算法,質(zhì)量與區(qū)域權(quán)衡僅由量化因素控制,之前建議的三級的pcm(“3lc”)得到密度的1.58×(log23)增加而沒有編碼圖像的任何質(zhì)量損耗。然而,處理基變換的電路向存儲器系統(tǒng)接口添加了復(fù)雜性。相比之下,不要求復(fù)雜的基變換電路的偏置的4級單元(“bias4lc”)帶來較高的密度(2lc的1.85×),同時仍然維持相同級別的圖像質(zhì)量。偏置的僅有代價是設(shè)計時單元級別和邊界的優(yōu)化。
最后,可以在左側(cè)看到三個偏置的8級單元配置:具有徹底糾錯的偏置的8級單元(“bias8lctc”)、具有選擇性糾錯的偏置的8級單元(“bias8lcsc”)和具有理想的糾錯的8級單元(“理想的8lc”)。注意,8級單元配置使用糾錯,因為在此密度如果不使用糾錯質(zhì)量將急劇下降(10db范圍,其是不可接受的)。特定地,所示的配置包括徹底且等同地應(yīng)用于整個存儲的糾錯(bias8lctc)、基于算法的需要應(yīng)用的選擇性糾錯(近似感知)(bias8lcsc)以及不具有存儲開銷且糾正所有錯誤的理想的糾錯機制(理想的8lc)。
盡管獲得相對2lc2.28×的密度,但是bias8lctc使用比維持高質(zhì)量必要的糾錯強度更大的糾錯強度。相反,通過為每個編碼位類別仔細選擇合適的ecc方案,bias8lcsc實現(xiàn)相對2lc2.73×的密度(比理想的8級單元密度增益(即3×)低10%以下),同時將質(zhì)量損耗維持在可接受的級別(<1db損耗)。
不同編碼位對重構(gòu)圖像的質(zhì)量的影響被評估。可能希望將編碼圖像的質(zhì)量損耗保持在1db內(nèi)。例如,40db的目標(biāo)質(zhì)量僅允許下降至39db。為了評估錯誤對編碼位類型的作用,跨所有宏塊評估控制位、行程長度位和精細位。
圖9示出了針對近似位流的psnr的曲線圖,其對在變化的誤碼率的情況下的向精確基片和近似基片的控制位—行程長度位—精細位的分配進行比較位位位位位。當(dāng)不同的近似位流用于三個位流時,圖像質(zhì)量被顯示下降。在圖例中,p表示精確基片,a表示具有沿x軸變化的位誤碼率(ber)的近似基片。第一個字母表示控制位,第二個字母表示行程長度位,第三個字母表示精細位。
直觀地,控制位比行程長度位對精確度更為關(guān)鍵,然后是精細位。圖9通過基于位的類型對位子集應(yīng)用可變的錯誤率以及通過測量所導(dǎo)致的質(zhì)量下降證實了這個觀點。所有圖像都以40db的目標(biāo)質(zhì)量被編碼。每個曲線標(biāo)有三個字母,表示錯誤率(x軸)分別被應(yīng)用(a)或未被應(yīng)用(p)于控制位、行程長度位和精細位中的每一個。
如圖9中的曲線圖所示,p-p-p沒有任何失效并將質(zhì)量維持在40db。精細位對圖像質(zhì)量的影響最少,如此,p-p-a可容忍相當(dāng)高的錯誤率(此曲線僅在ber到達10-4時開始掉落)。接下來,p-a-p和p-a-a(引入了行程長度錯誤)可容忍高達10-7的錯誤率且不具有圖像質(zhì)量下降或具有非常少的圖像質(zhì)量下降??刂莆皇清e誤最敏感的(a-p-p和a-a-a),而且當(dāng)錯誤率超過質(zhì)量10-7時質(zhì)量迅速下降。此分析支持選擇性地調(diào)節(jié)糾錯,從而維持控制位和行程長度位的較低錯誤率(10-7)和精細位的較高錯誤率的理念。由于精細位與其它類型的位的錯誤率要求的大差距,精細錯誤率被固定在10-3,帶來1db質(zhì)量下降預(yù)算的0.2db。
接下來,研究了不同宏塊對質(zhì)量的作用。圖10示出了具有針對指定的宏塊(mb)中的控制(ctrl)位和行程長度(rl)位的具有增加的錯誤率的psnr的曲線圖位位。在每個仿真中,指示的mb之外的ctrl位和rl位使用10-16的ber,精細位使用10-3的ber。
如上所述,保持有最低頻系數(shù)的第一宏塊對編碼圖像質(zhì)量起到了最重要的作用。圖10通過將強糾錯(10-16的錯誤率)應(yīng)用于總共128宏塊的編碼圖像的第一n個宏塊、將可變的錯誤率應(yīng)用于其余塊的控制位和行程長度位、以及將固定的糾錯(錯誤率10-3)應(yīng)用于所有塊的精細位來證明此陳述。
如所預(yù)測的,保護第一宏塊的控制位和行程長度位的ctrl&rl(mb2-128)與使第一宏塊留在與其它宏塊相同的錯誤率的ctrl&rl(mb1-128)相比實質(zhì)地提高了質(zhì)量。另一方面,保護附加的宏塊具有遞減的收益。這些結(jié)果建議使用商用錯誤率(10-16)的強糾錯保護第一宏塊的控制位和行程長度位、然后用中等強度碼(10-6)保護其余的控制位和行程長度位將質(zhì)量完好地保持在1db下降限制內(nèi)。
在具有針對容錯類別的目標(biāo)錯誤率的情況下,焦點轉(zhuǎn)向使pcm基片達到這些標(biāo)準(zhǔn)。首先,基片通過經(jīng)由偏置優(yōu)化單元被優(yōu)化用于任意清理率(107s或近似3個月)。圖11示出了隨均勻的和偏置的pcm單元的時間的組合的原始誤碼率(rber)的曲線圖位。這里,示出了對于4級單元和8級單元而言偏置對錯誤率的作用,報告了所有級別的組合的錯誤率。由于漂移作用,錯誤率隨時間增長。
最初,4級和均勻的8級單元(均勻的4lc和均勻的8lc)被使用。如所期望的,4級單元的錯誤率總是低于8級單元的錯誤率,因為較少的級別允許更多的空間用于每級別的漂移。然而,即使僅在寫入之后的1個小時,兩種類型的單元開始呈現(xiàn)過度高的錯誤率。相反,偏置的4lc在該時間范圍保持極低的漂移錯誤率(1010s處的10-20)。偏置的4lc的原始位誤碼率(rber)由寫入錯誤占據(jù)主導(dǎo)。將最高密度與相當(dāng)?shù)湾e誤率結(jié)合的偏置的8lc在107s處提供大約10-3的錯誤率的良好權(quán)衡,比均勻的8lc低2個數(shù)量級。幸運地,其還滿足最多容錯位(即,精細位)的需求。這允許不對所有這些位使用糾錯,從而消除了不必要的元數(shù)據(jù)開銷。
圖12示出了對均勻的和偏置的pcm單元進行比較的具有增大的清理間隔的密度的曲線圖。圖12提供了哪個單元配置在示例性實施方式的整體密度與清理開銷之間提供最佳權(quán)衡的觀點,該示例性實施方式包括糾錯以將不可糾錯的誤碼率(uber)維持在商用錯誤率(10-16)位。2lc和3lc單元具有如精確存儲器一樣低的rber,因而不需要糾錯。3lc提供了2lc的1.58×的更高密度。均勻的單元(即,4lc、8lc和16lc)的密度盡管對于短清理間隔(太短以致于不引人注意)高,但是在較長的間隔因為漂移引致錯誤快速產(chǎn)生而急劇下降。相反,偏置抑制了漂移錯誤率的顯著增長:bias4lc具有穩(wěn)定的1.86×密度增益(由寫錯誤引起的),bias8lc經(jīng)歷更加平滑的密度下降從而在大約3個月(107s)之后實現(xiàn)了2.28×的密度提高。
一旦算法錯誤率要求被確定,并且基片被優(yōu)化用于最低可能錯誤率,算法和基片可以經(jīng)由糾錯進行匹配。這依賴于理解糾錯機制的存儲開銷與其糾正力量之間的權(quán)衡。圖13示出了比較512數(shù)據(jù)位塊的糾錯碼(ecc)的容量與開銷的曲線圖。在圖13中,提供了各種糾錯機制(具有存儲開銷)、以及原始位誤碼率(rber)與不可糾錯的位誤碼率(uber)之間的對應(yīng)關(guān)系。
單糾錯和雙檢錯(secded)ecc在72位中糾正一個錯誤并檢測多達兩個錯誤,每個bch碼糾正512數(shù)據(jù)位加開銷中多達指示數(shù)目的錯誤。bias8lc單元已經(jīng)滿足精細位的需求,所以它們不需要任何糾正。對于第一宏塊中的控制位和行程長度位,期望一種糾正機制接受10-3的rber并產(chǎn)生10-16的uber。bch-16是以最低存儲開銷(31.25%)提供此容量的代碼。幸運地,需要這種強糾錯的位僅占所有位的一小部分(2.13%)。最后,對于其余的81.67%位,bch-6以11.7%的開銷提供10-6uber。
還值得注意的是,隨著rber增大,維持相同uber所需的代碼強度迅速增長。這突出了偏置的價值:要不是其使錯誤率降低2個量級,8級單元設(shè)計將提供如此高的rber,以致于糾正所有錯誤的開銷將過高。
為偏置優(yōu)化所選擇的清理周期選擇在某種程度上是任意的。為了說明使用具有其它清理間隔的相同的描述的單元設(shè)計的效果(所以單元被“超出規(guī)定地”用于不同的清理間隔),在不同的清理間隔上執(zhí)行仿真。如果間隔短于規(guī)定,則寫入錯誤占據(jù)主導(dǎo);如果間隔較長,則代替地漂移錯誤占據(jù)主導(dǎo)。
圖14示出了圖示ecc存儲開銷與清理間隔之間的權(quán)衡的圖表。對于每列,第一行中的代碼被應(yīng)用于徹底糾錯(tc)中的所有位;選擇性糾錯(sc)將第一行ecc用于mb1中的控制和行程長度位,將第二行ecc用于其它mb中的控制和行程長度位,并留下所有的精細位不被保護。第三行示出了用于sc的總開銷。在圖14中,可以看出糾錯選擇針對不同的清理間隔如何變化(假設(shè)<1db質(zhì)量下降)。
圖14中的圖表在每個間隔將徹底糾錯(bias8lctc)與選擇性糾錯(bias8lcsc)并列比較。隨著清理間隔增大(朝向x軸右側(cè)),必須采用更強的ecc機制抑制漂移錯誤率的增長,這導(dǎo)致更高的存儲開銷。在另一方面,較大的間隔減少了系統(tǒng)功耗、由數(shù)據(jù)移動引起的帶寬開銷和由清理產(chǎn)生的校驗位計算。
盡管107秒被選擇作為密的近似圖像存儲系統(tǒng)的目標(biāo)清理間隔,但是如果更高的密度是最優(yōu)先的,則對其它系統(tǒng)而言更短的間隔也是可接受的。然而這些結(jié)果的中心思想是:僅在需要時選擇性地應(yīng)用糾錯可以顯著地減少密度損失同時使存儲器具有算法要求的錯誤率,如每對線條中的巨大差別所證明的。通過包括偏置(以107的清理間隔被優(yōu)化),僅需要10.22%(從幾乎32%下降到)的存儲開銷,這導(dǎo)致可以達到2級基線的2.7×的存儲密度。
盡管所建議的圖像編碼算法和近似存儲器的協(xié)同設(shè)計基于多級別pcm進行研究,但是框架容易地適用于其它技術(shù),例如閃存,尤其多級別閃存(例如,tlcnand閃存)。在這些設(shè)備中,ecc(bch和ldpc是常見的)被應(yīng)用于512字節(jié)(或更大,例如1024字節(jié))的扇區(qū)。圖15示出了比較512字節(jié)塊數(shù)據(jù)(典型地閃存)的ecc的容量與存儲開銷的曲線圖。每個代碼可以糾正512字節(jié)閃存扇區(qū)中的指示數(shù)目的錯誤和增擴的ecc校驗位。
現(xiàn)有研究報告tlcnand閃存設(shè)備具有初始的10-4的rber,其隨程序/擦除循環(huán)的數(shù)目逐漸增加。由此,tlc閃存可為存儲mb1中的控制和行程長度位的單元使用bch-16,為其余的控制和行程長度的位使用bch-6,并且留下精細位不被糾錯。這共同導(dǎo)致比slc高的2.96×的密度同時維持<1db質(zhì)量損耗。然而,這些數(shù)字僅適用于全新的設(shè)備。rber隨同程序/擦除循環(huán)增大,所以逐漸要求更強的ecc。例如,rber在大致3000個程序/擦除循環(huán)之后達到10-3。此時,選擇性糾錯和徹底糾錯的密度改進分別降低至2.88×和2.49×,使選擇性糾錯更具吸引力。
由此,協(xié)同設(shè)計的圖像編碼和存儲機制提供更密的近似存儲。通過標(biāo)識編碼位對輸出圖像質(zhì)量的相對重要性和根據(jù)所標(biāo)識的相對重要性執(zhí)行糾錯,可以增大存儲容量。級別偏置可被進一步并入存儲中以降低經(jīng)受漂移的基片中的錯誤率。示例性案例研究的結(jié)果是2.7×的存儲密度增加和少許質(zhì)量下降(小于1db)。盡管在本文中特定討論了ptc圖像編碼和pcm,但是所描述的系統(tǒng)和技術(shù)適用于其它存儲基片和對頻域信號進行編碼隨后進行熵編碼的其它算法,例如音頻和視頻編解碼。
為了修改示例性圖像編碼算法,開發(fā)了一種方法以確定由特定編碼算法建立的編碼位的相對重要性。這些位然后可被單獨存儲在近似存儲基片的特別被優(yōu)化用于編碼位的相對重要性的區(qū)域中。這些區(qū)域中的每個通過應(yīng)用特定的糾錯碼(選擇性糾錯)匹配至它們所存儲的位的容錯,但是其它方法是可能的。位的容錯越高,空間節(jié)省越高。算法修改可由被給予由存儲硬件提供的各種糾錯選項以及它們的相應(yīng)錯誤率的圖像編碼的程序員專家實現(xiàn)。最終的算法被封裝到庫中。
此協(xié)同操作設(shè)計工作可由運送它們的硬件以及支持的庫的存儲器制造商、或由設(shè)計包括數(shù)字成像的產(chǎn)品的系統(tǒng)集成商承擔(dān),其中庫從不被暴露。這些產(chǎn)品的最終用戶可以與用戶如何與有損編碼算法例如當(dāng)今的jpeg交互的類似方式設(shè)置圖像的期望質(zhì)量。因為從用戶的角度來看由近似存儲導(dǎo)致的錯誤僅是圖像質(zhì)量損耗的一個或多個源,所以這是可能的。
所描述的近似感知編碼算法的某些實施方式可被實現(xiàn)為計算機過程、計算機系統(tǒng)、或制品例如計算機程序產(chǎn)品或計算機可讀介質(zhì)。本文描述的某些方法和過程可被實施為代碼和/或數(shù)據(jù),它們可被存儲在一個或多個計算機可讀介質(zhì)中。本發(fā)明的某些實施方式設(shè)想到使用計算機系統(tǒng)形式的機器,在該計算機中指令集在被執(zhí)行時使系統(tǒng)執(zhí)行上面討論的方法中的任一個或多個。某些計算機程序產(chǎn)品可以是由計算機系統(tǒng)可讀且對用于執(zhí)行計算機過程的指令的計算機程序進行編碼的一個或多個計算機可讀存儲介質(zhì)。計算機可讀介質(zhì)可以是任意可用的計算機可讀存儲介質(zhì)或可由計算機系統(tǒng)接入的通信媒介。
通信媒介包括包含例如計算機可讀指令、數(shù)據(jù)結(jié)構(gòu)、程序模塊、或其它數(shù)據(jù)的通信信號從一個系統(tǒng)傳輸至另一系統(tǒng)所借助的媒介。通信媒介可包括導(dǎo)波型傳輸媒介例如電纜和電線(例如,光纖、同軸電纜等)和無線(非導(dǎo)波型傳輸)媒介例如可傳播能量波的聲波、電磁波、rf、微波和紅外線。載波和可包含可由計算機系統(tǒng)使用的數(shù)據(jù)的其它傳播信號自身不是“計算機可讀存儲介質(zhì)”。真正地,計算機可讀存儲介質(zhì)明確地不由載波或傳播信號構(gòu)成。
本發(fā)明的某些方面提供了下面的非限制性實施方式:
示例1.一種對單級單元或可變的多級單元存儲上的數(shù)據(jù)編碼的方法,包括:接收來自應(yīng)用的編碼數(shù)據(jù)的塊以及至少重要性屬性,重要性屬性與編碼數(shù)據(jù)的塊相關(guān)聯(lián),重要性屬性指示來自解碼編碼數(shù)據(jù)的輸出質(zhì)量中的塊的位的相對錯誤敏感性;以及至少根據(jù)重要性屬性將編碼數(shù)據(jù)的塊指派給存儲器的存儲器地址或特定區(qū)域,其中存儲器至少具有兩個精確度級別。
示例2.根據(jù)示例1的方法,其中至少根據(jù)重要性屬性將編碼數(shù)據(jù)的塊指派給存儲器的存儲器地址或特定區(qū)域包括:響應(yīng)于重要性屬性指示相對低的錯誤敏感性,將塊指派給存儲器的低精確度級別區(qū)域;響應(yīng)于重要性屬性指示相對中等的錯誤敏感性,將塊指派給存儲器的中等精確度級別區(qū)域;以及響應(yīng)于重要性屬性指示對錯誤相對高的敏感性,將塊指派給存儲器的高精確度級別區(qū)域。
示例3.根據(jù)示例1或2的方法,其中至少兩個精確度級別包括低精確度級別、中等精確度級別和高精確度級別,低精確度級別比中等精確度級別和高精確度級別在每個單元存儲更多的位,高精確度級別具有比中等精確度級別更多的糾錯開銷。
示例4.根據(jù)示例1-3的任一個的方法,進一步包括:接收應(yīng)用的應(yīng)用類型的指示;以及根據(jù)應(yīng)用類型指派閾值級別,以執(zhí)行用于至少兩個精確度級別中的至少一個精確度級別的單元中的值的范圍的偏置。
示例5.根據(jù)示例1-4的任一個的方法,進一步包括:基于用于應(yīng)用的位模式的出現(xiàn)頻率,將二進制值指派給用于至少兩個精確度級別中的至少一個精確度級別的單元中的范圍,其中指派編碼數(shù)據(jù)的塊進一步根據(jù)用于來自應(yīng)用的編碼數(shù)據(jù)的位模式。
示例6.根據(jù)示例1-5的任一個的方法,其中存儲器包括具有至少兩種類型的可用糾錯開銷的單級單元存儲器。
示例7.根據(jù)示例1-6的任一個的方法,其中存儲器包括具有至少兩個不同密度的區(qū)域的多級單元存儲器。
示例8.根據(jù)示例1-7的任一個的方法,其中存儲器包括具有至少兩種類型的可用糾錯開銷的多級單元存儲器。
示例9.根據(jù)示例1-8的任一個的方法,其中應(yīng)用包括近似感知圖像編碼算法。
示例10.一個或多個計算機可讀存儲介質(zhì),計算機可讀存儲介質(zhì)具有存儲于其上的用于近似感知圖像編碼算法的指令,指令在由處理器執(zhí)行時引導(dǎo)處理器:為近似感知編碼算法的輸出數(shù)據(jù)位標(biāo)識至少兩個輸出質(zhì)量重要性級別;以及根據(jù)輸出數(shù)據(jù)位的經(jīng)標(biāo)識的輸出質(zhì)量重要性級別分割輸出數(shù)據(jù)位。
示例11.根據(jù)示例10的介質(zhì),其中引導(dǎo)處理器標(biāo)識至少兩個輸出質(zhì)量重要性級別的指令引導(dǎo)處理器:將圖像的像素從空間域轉(zhuǎn)換成頻率域;以及將編碼低頻分量的系數(shù)指派給指示高錯誤敏感性的重要性屬性,以及將編碼高頻分量的系數(shù)指派給指示較低錯誤敏感性的重要性屬性。
示例12.根據(jù)示例11的介質(zhì),其中引導(dǎo)處理器將編碼低頻分量的系數(shù)指派給指示高錯誤敏感性的重要性屬性以及將編碼高頻分量的系數(shù)指派給指示較低錯誤敏感性的重要性屬性的指令包括引導(dǎo)處理器執(zhí)行以下動作的指令:將類似頻率的頻率系數(shù)匯聚到向量中,使得落入相對低頻率系數(shù)范圍內(nèi)的頻率系數(shù)被聚集在向量的開頭并且落入相對高頻率系數(shù)范圍內(nèi)的頻率系數(shù)朝向向量的尾部被聚集,而落入相對中間頻率系數(shù)范圍內(nèi)的頻率系數(shù)被聚集在其間;將向量劃分成宏塊;以及執(zhí)行宏塊的熵編碼以生成編碼宏塊,編碼宏塊包括控制位、行程長度位和附加的精細位。
示例13.根據(jù)示例12的介質(zhì),其中頭部和第一宏塊的控制位和行程長度位被指派給指示較高錯誤敏感性的重要性屬性;除了第一宏塊以外的宏塊的控制位和行程長度位被指派給指示中等錯誤敏感性的重要性屬性;并且其中附加的精細位被指派給指示較低錯誤敏感性的重要性屬性。
示例14.根據(jù)示例11的介質(zhì),進一步包括存儲于其上的指令,該指令在由處理器執(zhí)行時引導(dǎo)處理器為近似感知算法指示特定位模式的頻率。
示例15.一種系統(tǒng),包括:處理系統(tǒng);一個或多個計算機可讀存儲介質(zhì),一個或多個計算機可讀存儲介質(zhì)包括至少一個近似存儲;被存儲在一個或多個計算機可讀介質(zhì)中的至少一個計算機可讀介質(zhì)上的操作或文件系統(tǒng),操作或文件系統(tǒng)在由處理系統(tǒng)執(zhí)行時引導(dǎo)處理系統(tǒng):至少根據(jù)指示編碼數(shù)據(jù)的塊的容錯率的重要性屬性,將編碼數(shù)據(jù)的塊指派給至少一個近似存儲的存儲器地址或特定區(qū)域。
示例16.根據(jù)示例15的系統(tǒng),其中操作或文件系統(tǒng)進一步引導(dǎo)處理器系統(tǒng):指定用于近似存儲的存儲器配置。
示例17.根據(jù)示例16的系統(tǒng),其中用以指定用于近似存儲的存儲器配置的指令引導(dǎo)處理系統(tǒng):根據(jù)應(yīng)用的應(yīng)用類型提供閾值級別,以執(zhí)行用于特定區(qū)域中的單元的值的范圍的偏置,編碼數(shù)據(jù)的塊從應(yīng)用被接收。
示例18.根據(jù)示例16或17的系統(tǒng),其中用以指定用于近似存儲的存儲器配置的指令指引處理系統(tǒng):基于重要性屬性為特定區(qū)域中的單元提供糾錯級別的指示。
示例19.根據(jù)示例16-18的任一個的系統(tǒng),基于用于應(yīng)用的位模式的出現(xiàn)頻率,將二進制值指派給用于至少兩個精確度級別中的至少一個精確度級別的單元中的范圍,其中指派編碼數(shù)據(jù)的塊進一步根據(jù)用于來自應(yīng)用的編碼數(shù)據(jù)的位模式。
示例20.根據(jù)示例15-19的任一個的系統(tǒng),其中將編碼數(shù)據(jù)的塊指派給至少一個近似存儲的存儲器地址或特定區(qū)域的指令引導(dǎo)處理系統(tǒng)寫入指示與編碼數(shù)據(jù)的塊相關(guān)聯(lián)的精確度級別的標(biāo)記。
示例21.根據(jù)示例15-20的任一個的系統(tǒng),其中操作或文件系統(tǒng)進一步引導(dǎo)處理系統(tǒng):為近似感知應(yīng)用提供應(yīng)用編程接口以指示待被存儲的數(shù)據(jù)的重要性屬性。
示例22.一種用于執(zhí)行示例1-9的任一個的方法的系統(tǒng)或產(chǎn)品。
示例23.一種系統(tǒng),包括:用于接收來自應(yīng)用的編碼數(shù)據(jù)的塊以及至少重要性屬性的裝置,重要性屬性與編碼數(shù)據(jù)的塊相關(guān)聯(lián),重要性屬性指示來自解碼編碼數(shù)據(jù)的輸出質(zhì)量中的塊的位的相對錯誤敏感性;以及用于至少根據(jù)重要性屬性將編碼數(shù)據(jù)的塊指派給存儲器的存儲器地址或特定區(qū)域的裝置,其中存儲器至少具有兩個精確度級別。
應(yīng)該理解,本文描述的示例和實施方式僅用于說明目的,對本領(lǐng)域技術(shù)人員教導(dǎo)其各種修改或改變并且修改或改變包括在本申請的精神和范圍內(nèi)。
盡管主題用結(jié)構(gòu)特征和/或動作專用的語言描述,但是將理解,所附權(quán)利要求中定義的主題不一定限于上述的特定的特征或動作。然而,上述的特定的特征和動作作為實現(xiàn)權(quán)利要求的示例被公開,其它等同的特征和動作旨在權(quán)利要求的范圍內(nèi)。