单级单元和可变的多级单元存储上的数据编码转让专利

申请号 : CN201680012449.7

文献号 : CN107258083B

文献日 :

基本信息:

PDF:

法律信息:

相似专利:

发明人 : K·施特劳斯L·H·塞泽H·S·马尔瓦郭青

申请人 : 微软技术许可有限责任公司

摘要 :

一种对单级单元或可变的多级单元存储上的数据编码的方法包括:接收来自近似感知应用的编码数据的块和至少重要属性,该重要属性与编码数据的块相关联;至少根据重要性属性将编码数据的块指派给存储器的存储器地址或特定区域,其中存储器至少具有两个精确度级别。重要属性指示解码编码数据的输出质量中块的位的相对错误敏感性。近似感知应用可以是图像编码应用,图像编码应用具有支持根据错误敏感性识别位和将位分组的修改的熵编码步骤。

权利要求 :

1.一种对单级单元或可变的多级单元存储上的数据进行编码的方法,包括:接收来自应用的编码数据的块以及至少重要性属性,所述重要性属性与编码数据的所述块相关联,编码数据的每个块对类似频率的频率系数分量进行编码,使得所有低频系数分量被一起分组到与高频系数分量分离的块中,并且所述重要性属性指示来自解码所述编码数据的输出质量中的所述块的位的相对错误敏感性;以及至少根据所述重要性属性将编码数据的所述块指派给存储器的存储器地址或特定区域,其中所述存储器具有可标识的区域,所述可标识的区域提供至少两个精确度级别中的对应精确度级别,所述指派是至少根据所述重要性属性而指向所述存储器的具有所述至少两个精确度级别中适当精确度级别的所述存储器地址或者所述特定区域。

2.根据权利要求1所述的方法,其中提供至少两个精确度级别中的所述对应精确度级别的所述可标识区域包括低精确度级别区域、中等精确度级别区域和高精确度级别区域,其中至少根据所述重要性属性将编码数据的所述块指派给所述存储器的所述存储器地址或特定区域包括:响应于所述重要性属性指示相对低的错误敏感性,将所述块指派给所述存储器的所述低精确度级别区域;

响应于所述重要性属性指示相对中等的错误敏感性,将所述块指派给所述存储器的所述中等精确度级别区域;以及响应于所述重要性属性指示对错误相对高的敏感性,将所述块指派给所述存储器的所述高精确度级别区域。

3.根据权利要求1所述的方法,其中所述至少两个精确度级别包括低精确度级别、中等精确度级别和高精确度级别,其中所述低精确度级别相比所述中等精确度级别和所述高精确度级别每个单元存储更多位,并且所述高精度级别相比所述中等精度级别具有更大的纠错开销。

4.根据权利要求1所述的方法,进一步包括:

接收所述应用的应用类型的指示;以及

根据所述应用类型指派阈值级别,以执行用于所述至少两个精确度级别中的至少一个精确度级别的单元中的值的范围的偏置。

5.根据权利要求1所述的方法,进一步包括:

基于用于所述应用的位模式的出现频率,将二进制值指派给用于所述至少两个精确度级别中的至少一个精确度级别的单元中的范围,其中指派编码数据的所述块进一步根据用于来自所述应用的所述编码数据的所述位模式。

6.根据权利要求1所述的方法,其中所述存储器包括具有至少两种类型的可用纠错开销的单级单元存储器。

7.根据权利要求1所述的方法,其中所述存储器包括具有至少两个不同密度的区域的多级单元存储器。

8.根据权利要求1所述的方法,其中所述存储器包括具有至少两种类型的可用纠错开销的多级单元存储器。

9.根据权利要求1所述的方法,其中所述应用包括近似感知图像编码算法。

10.一个或多个计算机可读存储介质,所述计算机可读存储介质具有存储于其上的用于近似感知图像编码算法的指令,所述指令在由处理器执行时引导所述处理器:为所述近似感知编码算法的输出数据位标识至少两个输出质量重要性级别;

将数据编码到输出数据位中;以及

根据所述输出数据位的经标识的输出质量重要性级别分割所述输出数据位,以用于存储在具有不同错误特性的对应的适当存储器区域中,其中引导所述处理器标识所述至少两个输出质量重要性级别的所述指令引导所述处理器:将图像的像素从空间域转换成频率域;以及

将编码低频分量的系数指派给指示高错误敏感性的重要性属性,以及将编码高频分量的系数指派给指示较低错误敏感性的重要性属性。

11.根据权利要求10所述的介质,其中引导所述处理器将编码低频分量的系数指派给指示高错误敏感性的重要性属性、将编码高频分量的系数指派给指示较低错误敏感性的重要性属性以及将所述数据编码到所述输出数据位中的所述指令包括引导所述处理器执行以下动作的指令:将类似频率的频率系数汇聚到向量中,使得落入相对低频率系数范围内的所述频率系数被聚集在所述向量的开头并且落入相对高频率系数范围内的所述频率系数朝向所述向量的尾部被聚集,而落入相对中间频率系数范围内的所述频率系数被聚集在其间;

将所述向量划分成宏块;以及

执行所述宏块的熵编码以生成编码宏块,所述编码宏块包括控制位、行程长度位和附加的精细位。

12.根据权利要求11所述的介质,其中头部和第一宏块的所述控制位和所述行程长度位被指派给指示较高错误敏感性的所述重要性属性;除了所述第一宏块以外的所述宏块的所述控制位和所述行程长度位被指派给指示中等错误敏感性的所述重要性属性;并且其中附加的所述精细位被指派给指示较低错误敏感性的所述重要性属性。

13.根据权利要求10所述的介质,还包括存储于其上的指令,所述指令在由所述处理器执行时引导所述处理器:为所述近似感知算法指示特定位模式的频率。

14.一种系统,包括:

处理系统;

一个或多个计算机可读存储介质,所述一个或多个计算机可读存储介质包括至少一个近似存储;

被存储在所述一个或多个计算机可读介质中的至少一个计算机可读介质上的操作或文件系统,所述操作或文件系统在由所述处理系统执行时引导所述处理系统:至少根据指示编码数据的块的容错率的重要性属性,将编码数据的所述块指派给所述至少一个近似存储的存储器地址或特定区域,编码数据的每个块对类似频率的频率系数分量进行编码,使得所有低频系数分量被一起分组到与高频系数分量分离的块中。

15.根据权利要求14所述的系统,其中所述操作或文件系统进一步引导所述处理器系统:指定用于所述近似存储的存储器配置。

16.根据权利要求15所述的系统,其中用以指定用于所述近似存储的存储器配置的指令引导所述处理系统:根据应用的应用类型提供阈值级别,以执行用于所述特定区域中的单元的值的范围的偏置,编码数据的所述块从所述应用被接收。

17.根据权利要求15所述的系统,其中用以指定用于所述近似存储的存储器配置的指令指引所述处理系统:基于所述重要性属性为所述特定区域中的单元提供纠错级别的指示。

18.根据权利要求14所述的系统,其中将编码数据的所述块指派给所述至少一个近似存储的所述存储器地址或者所述特定区域的指令引导所述处理系统写入标记,所述标记指示与编码数据的所述块相关联的精确度级别。

19.根据权利要求14所述的系统,其中所述操作或文件系统进一步引导所述处理系统:为近似感知应用提供应用编程接口以指示待被存储的数据的所述重要性属性。

说明书 :

单级单元和可变的多级单元存储上的数据编码

背景技术

[0001] 存储器和存储常在精确度(错误)、持久性、性能、能量效率与密度(容量)之间具有各种权衡。单级单元(SLC)存储器(例如动态随机存取存储器(DRAM)和一些形式的闪存)在每个单元中存储1位的数据。为了提供更高的密度,(例如闪存和相变存储器(PCM)可用的)多级单元(MLC)存储器将一个单元中的值范围细分为许多级别以存储多于1位的数据。例如,闪存代表存储器单元的阈值电压的值,PCM代表存储器单元的电阻的值。由此,对于某些多级别存储,单元允许的电阻范围越大,单元中可用于存储信息的级别数越高,从储存观点来看使得单元密度更大。也就是说,单元可以在每单位物理容积存储更多的信息。然而,关于权衡,对于在保持便宜、可靠的同时制作密度多大的单元存在限制。
[0002] 另外,单元密度越大,维持相同错误率需要的读写机制越精确。例如,对于固定的电阻范围,使用更多的级别数要求更精确的硬件以每次正确地读写这些单元。更精确的硬件意味着更高的成本;对于相同的硬件,在单元中存储更多的级别数会引发更高的读写错误率。其它电阻改变过程(例如PCM中的漂移)也影响读错误率。
[0003] 用于存储增加的量的数据的云服务器、移动设备以及其它计算设备受益于更密的存储。例如,图像和图片消耗了消费者设备和云中的存储空间的很大一部分。压缩技术可由一些应用使用以减少需要被存储的数据的量。纠错技术常常用于通过对应用隐藏错误来减轻硬错误和软错误的影响。然而,在使用压缩的文件格式时用较少的位表示图像或其它文件,当数据被输出和解压缩时错误可能会被放大。

发明内容

[0004] 本文描述的技术和系统允许应用和操作系统利用放松存储设备的存储器中的区域的错误要求,以作为对增加的容量、持久性、性能、能量效率或存储设备的其它属性的交换,同时仍可以为数据维持适当的输出质量。
[0005] 一种对单级单元或可变的多级单元存储上的数据进行编码的方法可包括:接收来自应用的编码数据的块以及至少重要性属性,重要性属性与编码数据的块相关联,重要性属性指示来自解码编码数据的输出质量中的块的位的相对错误敏感性;以及至少根据重要性属性将编码数据的块指派给存储器的存储器地址或特定区域,其中存储器至少具有两个精确度级别。这里,重要性属性指示解码编码数据的输出质量中块的位的相对错误敏感性。在一些情况中,操作系统或文件系统可执行此方法的各方面。
[0006] 还描述了一种近似感知算法,其可以为近似感知编码算法的输出数据位标识至少两个输出质量重要性级别;以及根据输出数据位的经标识的输出质量重要性级别分割输出数据位。近似感知算法可在一些情况下在访问可对单级单元或可变的多级单元存储上的数据编码的操作系统或文件系统的应用程序接口时,指示具有输出质量重要性级别的合适的重要性属性。
[0007] 本发明内容被提供以用简化形式介绍在下面的特定实施方式中进一步描述的概念的选择。本发明内容不旨在标识所要求保护的主题的关键特征或必要特征,也不旨在用于限制所要求保护的主题的范围。

附图说明

[0008] 图1A和图1B示出了在将编码图像存储到没有存储精确度的近似存储之前(图1A)和之后(图1B)的编码图像;
[0009] 图2图示了用于可编程的存储精确度的存储器系统;
[0010] 图3A-3C图示了各种操作环境和对应的存储位置;
[0011] 图4A-4C图示了在数据是编码图像的情况中存储精确度的操作的示例实施方式;
[0012] 图5A-5C图示了近似感知渐进变换编解码(PTC)图像编解码中的编码步骤;
[0013] 图6图示了使用偏置以使漂移错误最小化的4级单元的模拟(电阻)范围(对数标度的x轴);
[0014] 图7A示出了均匀的(u)和偏置的(b)4级单元参数的表1;
[0015] 图7B示出了均匀的(u)和偏置的(b)8级单元参数的表2;
[0016] 图8示出了比较具有和不具有偏置的2级单元、4级单元和8级单元的峰值信噪比(PSNR)与每个图像像素的存储器单元数目的曲线图;
[0017] 图9示出了针对近似位流的PSNR的曲线图,其对在变化的误码率的情况下的向精确基片和近似基片的控制位—行程长度位—精细(refinement)位的分配进行比较位位;
[0018] 图10示出了具有针对指定的宏块(MB)中的控制(Ctrl)位和行程长度(RL)位的具有增加的错误率的PSNR的曲线图;
[0019] 图11示出了随均匀的和偏置的PCM单元的时间的组合的原始位误码率(RBER)的曲线图;
[0020] 图12示出了对均匀的和偏置的PCM单元进行比较的具有增大的清理间隔的密度的曲线图;
[0021] 图13示出了比较512数据位块的纠错码(ECC)的容量与开销的曲线图;
[0022] 图14示出了图示ECC存储开销与清理间隔之间的权衡的图;以及
[0023] 图15示出了比较用于闪存的512数据字节块上的ECC的容量与开销的曲线图。
[0024] 特定实施方式
[0025] 本文描述了技术和系统,其允许应用和操作系统利用放松对存储设备的存储器中的区域的错误要求,以作为增加的容量、持久性、性能、能量效率或存储设备的其它属性同时仍可以为数据维持适当的输出质量的交换。
[0026] 所描述的技术适于任意编码数据,其中某些位与其它位相比对编码器输出质量更重要。这些应用包括图像、音频、视频和文本编码,例如用于图像的JPEG、JPEG XR、JPEG 2000和WebP,用于视频的高效视频编码(HEVC)、以及用于音频的WMA和MPEG-2层III(MP3)。
[0027] 对于这些应用中的任一个,编码算法被修改以将位指派不同的类别。也就是说,作为编码过程的一部分,算法可被设计为基于它们对输出质量的相对作用来辨识不同类别的位(位是否包含错误)。这可被称为“近似感知”。“近似感知”起源于“近似存储”,指可以可能指示某些对象可以被存储在具有较高错误可能性的存储器中的存储器优化技术。存储器的具有较高错误可能性的这些区域不一定是具有高错误率的区域,仅是对特定错误率的容忍性或要求被放松并且可能发生偶然的错误的区域。有利地,对存储器区域的放松的错误约束还可贡献用于存储数据(尤其针对对于是至少一些数据不要求常规存储器提供的精确度的应用)的附加的容量。
[0028] 术语“存储器”和“存储”在本文中可互换使用,并且可通过其上下文理解被应用于该术语的任何特定含义。
[0029] 图1A所示的图片(例如鹦鹉图像)使用移动设备中的大部分的存储,并常被上传至云,从而消耗了更多的空间。为了节省存储,这些图像通常被压缩至例如JPEG、JPEG XR或JPEG 2000的格式。尽管这些格式经由量化已经具有确定的质量与存储空间的权衡,但是可以通过以偶然的非确定的错误换取更高密度来实现附加的容量。挑战在于:对于图像输出质量而言一些编码位比其它编码位更重要。
[0030] 图1B图示了此权衡,其示出了在图1A所示的40dB鹦鹉图像被存储在未优化的8级近似单元存储中28秒之后读取和解码重构图1A所示的图像的结果。尽管因使用8级近似单元带来(3倍)密度的改善,但是图像下降大约22dB。在没有任何单元优化或纠错的前提下,在解码时维持图像质量(40dB)要求使用更高的目标质量级别(50dB),从而在编码时使用更小的量化因子,这导致几乎双倍的编码图像尺寸。备选地,纠错可以用于保护图像以防止错误,其代价是附加的存储开销(例如,关于BCH-16的第三附加存储的存储开销)。
[0031] 如图1A和图1B所示,将编码图像的位任意存储在未优化和未调谐的近似单元可以带来高图像质量,其代价是纠错资源浪费的过度提供(并导致的密度损失),或可以带来较低存储要求,其代价是影响具有无法容忍错误率的(影响图像质量的)敏感位。通过分析包括图1A和图1B所示的研究确定:某些类型的编码位中的错误对所产生的解码图像具有不同的影响。例如,低频系数的错误影响对应的整个块,并且在最终图像中可见,这在许多情况中造成不可接受的质量下降。因此,通过使用近似感知编码算法(在一些情况中进一步使用优化和/或调谐的近似单元),可以维持足够的图像质量并最大化资源。
[0032] 近似感知编码算法在与包含具有不同错误约束的不同区域的存储合作时被优化。存储器区域的错误概率在本文中被称为“精确度”,其中较低的错误概率表示较高的精确度。也就是说,较高的精确度具有较低的错误率。单元错误属性经由编码算法与存储基片的协同设计与编码位的仔细匹配可以显著提高图像质量,同时获得近似存储提供的大部分的密度益处。
[0033] 图2图示了用于可编程存储精确度的存储器系统。存储器200可通过包括例如用于动态改变多级单元存储(例如,闪存和PCM)的阈值的电路201来实施动态近似存储存储器。代替被调谐用于通用行为的硬编码阈值,用于动态改变阈值的电路201可以实施可变的阈值。也就是说,指示用于存储器单元的级别的阈值可以针对特定应用(或数据类型)而被优化。例如,可为单元中的不同值创建非对称范围。PCM使用电阻值,然而,其它存储器可使用包括电压值的其它物理特性。
[0034] 另外,在一些情况中,区域可被分配有特定错误代码。在该情况的一些中,电路201可用于实施可变纠错。也就是说,单元的错误率可以根据单元所属区域的错误约束而使用不同的纠错级别来修改。电路201可在芯片上或是存储器控制器的一部分,并包括寄存器、解码逻辑和可选地用于寄存器中数据的外部控制的逻辑。
[0035] 在具有合适的存储器200的情况下,访问存储器200的操作系统210包括利用存储器200的手段。也就是说,包括数据的精确度级别的重要性属性,使得操作系统210可以向存储器200指示与数据的特定位和/或字节相关联的精确度级别。该指示可以包括标记。在一些情况中,操作系统210可接收多个图像(或其它数据),并通过例如与存储器200的存储器控制器通信以指示针对位或字节集的精确度级别,来将标识有相同重要级别的数据发送给相同类型的存储器单元。精确度级别的粒度可以基于存储器200的可用粒度。
[0036] 操作系统210可包括标识正被存储的数据的类型(和相应的适当存储精确度级别)的功能。在一些情况中,操作系统210可以接收请求数据存储的应用的类型(“应用类型”)的指示(在一些情况下可与数据类型的指示相同)。附加地或备选地,操作系统可以经由应用可编程接口(API)220暴露不同的存储精确度级别,从而应用230可以更容易地为操作系统210标识特定数据是否可以被存储在具有放松要求的存储器单元中。
[0037] 应用230被建立或修改以可以将图像(或一些其它编码数据)的编码位的相对优先级指派为不同错误敏感性(和所导致的质量损耗)种类。在与操作系统210通信以将数据存储在存储器200中时,应用230为其数据请求(或指示)不同的精确度级别。不论由操作系统210理解还是经由API 220理解,操作系统210和/或(存储器200的)存储器控制器然后根据单元的期望错误率,将不同错误敏感性种类的位映射到不同的单元种类。
[0038] 由此,如图2所示的操作环境可以包括一个或多个存储器芯片(存储器200),存储器芯片由存储器控制器(或读取/写控制器)编程以具有为特定应用230优化的阈值(和/或错误代码)。指派特定的精确度级别可以由系统执行,但是取决于应用和/或情形。例如,存储某类(例如JPEG XR)图像的应用230可以使用具有被优化用于存储JPEGXR的阈值的存储器200。在一些情况中,操作系统210和/或存储器控制器可以基于存储数据的应用的类型访问(存储在精确存储器和/或寄存器中的)简档以获得系统参数。用户还可以指定他们的图像的最终质量。
[0039] 被编程的阈值还可以取决于存储的位置。图3A-3C图示了各种操作环境和对应的存储位置。例如,如图3A所示,云存储301可以从在计算设备303上执行的应用230接收图像302。计算设备303可以是或包括服务器、个人计算机、移动设备、可穿戴式计算机、游戏系统和电器中的一个或多个。图3A所示的操作环境的一种情形是向Microsoft One 账户发送图像302的蜂窝电话。被编程的阈值的数目和实施云存储的特定的存储器类型(例如,闪存、PCM等)可被选择以适于处理对云存储常见的大量数据。在利用此情形的一种实施方式中,计算设备303可以是对位于设备上的图像302越长时间未被访问的副本越强制降低其质量的电话。图像302可作为较高质量副本被存储在云存储301中,计算设备303可从该副本恢复高质量图像。
[0040] 在图3B所示的示例中,从应用230接收图像305的存储304是执行应用230的设备306上的(或与其相关联的)本地存储。继续蜂窝电话示例,在此操作环境中,图像305例如通过(例如在图像由蜂窝电话的摄像头捕获时)将来自暂时存储307的图像写入至计算设备
306的存储304的数据存储308,而被存储在蜂窝电话的存储器中。应用230还可被存储在存储系统304的应用存储309中。在一些情况中,数据存储308和应用存储309可以是相同的存储器芯片的一部分,而暂时存储304是可与计算设备306的处理器分离或集成(例如,在芯片上)的高速缓存的一部分。在一些情况中,暂时存储307是与数据存储308同一芯片上的区域。当然,特定的配置取决于设备和技术。
[0041] 如之前所指出的,被编程的阈值的特定数量可以基于设备306的容量和存储需求,设备306可以是或包括服务器、个人计算机、移动设备、可穿戴式计算机、游戏系统和电器中的一个或多个。在蜂窝电话示例中,存储304的20%可被分配用于存储器的最精确区域从而存在足够的空间以用于应用存储304和重要的数据,而剩余的存储304可具有较高的允许错误率(例如,更密或具有较少位用于纠错的位)。
[0042] 在图3C所示的示例中,存储310可以与通过因特网314(经由web浏览器413)从计算设备312接收上传的图像311(并将图像存储在与存储310相关联的服务器315)的网站相关联。图3C所示的示例可在图3A所示的环境中实现。例如,网站可以由云服务托管和/或相关联的存储可以是云存储。在其它情况中,指定的服务器用于托管网站并存储相关联的数据。这些设备的需求和容量可以影响阈值的数目和在每个阈值可用的存储量的分配。
[0043] 图像编码算法使用多个步骤以减小原始图像的大小。这些算法可以是有损或无损的,最常见的是有损的(例如,JPEG)。图像编码算法可以被特别地剪裁用于近似存储基片,使其成为近似感知编码算法。而且,近似存储基片可以针对正被存储的数据而被优化(动态近似存储基片)。例如,编码位的相对重要性可以被确定并且编码位可以被存储在近似存储基片中,其中近似存储基片被调谐以匹配针对特定编码位的容错。
[0044] 图4A-4C图示了数据是编码图像的情况中存储精确度的操作的示例实施方式。应该理解,所示的操作适用于其它编码数据。参考图4A,编码图像400可以包括例如高重要性位401、中等重要性位402和较低重要性位403。
[0045] 近似感知编码应用可以标识至少两种类型的位(或所有三种类型或如果期望更高粒度则甚至更多类型)并可以(或可以使得可能)将这些不同类型的位划分成如图4B所示的不同的流。近似存储基片包括具有不同允许精确度级别(或错误率)的多个区域。具有类似容错的位被映射到合适类型的存储。例如,一个区域可以是最精确的,具有最低的错误可能性(例如,10-12错误);至少一个较不精确的、具有放松的错误率的其它区域被提供。这些区域可以是硬连线的或动态的(编程的)。错误率的差别可以由所应用的纠错类型和/或允许的密度引起。向将数据存储至存储的程序标识包括放松的错误约束的区域。
[0046] 在图4C中,三种类型的存储被示出作为近似存储基片410一部分的存储。具有最低错误率的第一类型区域411可以被优化用于高重要性位401,以包括存储器单元412和提供大纠错开销的纠错单元413。第二类型区域421可以被优化用于中等重要性位402,以包括比存储器区域412密且具有中等错误率的单元422和提供一些纠错开销的纠错单元423。第三区域431则包括具有最高的允许错误率的(可选地被优化用于低重要性位403的)单元432,单元432为最密的存储器且具有最少的(如果有的话)的纠错。
[0047] 尽管示出了三种类型的区域,但是在一些情况中可以使用两种类型的区域,在其它情况中可使用多于三种类型。区域的类型数目可以取决于使用存储器的特定应用。在一些情况中,类型的数量是可编程的,并且可以在制造之后被调节,甚至可以被重新编程。
[0048] 动态近似存储基片410可以是任何适当的存储器存储设备,包括SLC存储器和MLC存储器。对于MLC存储器(或包含SLC单元和MLC单元的混合存储器),第一类型区域411可以被配置为用于存储单个位的单级单元区域(即使在MLC存储器的情况中可能是多级别),第二类型区域412可以被配置为例如具有三级单元或四级单元的更密区域,第三类型区域413可以被配置为比第二类型区域412密,例如具有级别(例如,用于3位)或更密的单元。对于各种SLC和MLC实施方式,区域可被指派不同类型的纠错(例如,不同的错误代码和/或纠错位的数量)。
[0049] 每个区域的存储器单元可以是相同类型的单元,在该情况中,不同的区域通过如何解释单元的值来被获得。也就是说,针对多级单元的读写过程可以控制单元属于哪类存储器区域。例如,通过调节阈值(甚至指派特定的电阻范围),四级的多级单元可以用于存储1位或2位(或甚至3位)。
[0050] 执行案例研究以说明所描述的技术。案例研究涉及渐进变换编解码(PTC)、JPEG XR的先驱和PCM存储基片。PTC已在若干实际应用(例如Microsoft 游戏的图像文本存储)中使用。PTC通过包括时频变换、量化、从2D阵列至1D的系数映射和熵编码的经典步骤来处理正被编码的图像中的像素。PTC使用代替离散正弦变换(DCT)或小波的多分辨重叠双正交变换(HLBT)、用于宏块的ping-pong式扫描模式、以及自适应行程长度/Golomb-Rice熵编码。
[0051] 对于PTC图像编码算法,PTC图像编码格式被分析并且具有类似错误率要求的位分组被标识以形成容错类别。PTC编码图像包括可以由它们的频率系数标识的位。已观察到,较低频率系数(通常值中最大的系数),也是图像质量的最重要系数。这里,类似于图4A和图4B所示的方法,可以根据它们的频率系数对数据块分组是可能的。因此,参考图4A和图4B,标识为401的块对应于针对最低频率系数的控制和行程长度位,标识为402的块对应于针对其它系数的控制和行程长度位,标识为403的块对应于针对所有系数的表示精细位。
[0052] 原始PTC算法将数据划分为宏块,其直截了当地将不同的宏块引导至不同的存储区域。然而,对于每个宏块,PTC将控制、行程长度和精细位存储在相同的位流中。在编码期间,精细位已与控制和行程长度位隔离并被附于宏块的尾部。然而,如果控制和行程长度位要被存入具有不同错误特性的存储器区域,则它们需要被剥离到不同的位流。因此,修改PTC使其近似感知涉及标识每个宏块的控制和行程长度位并将它们隔离。
[0053] PTC可以基于系数所涉及的频率组织系数,通常从低频到高频。结果,较低频系数一般存在于第一新宏块中,并可以轻易地映射至提供低错误率的存储器。控制位比行程长度位更能影响输出质量,行程长度位明显比精细位更能影响输出质量。因此,这些类别的编码位可以被分别存储在具有增加的密度和错误率的存储器区域中。例如,不同容错类别中的位可以由修改的PTC算法存储到具有如图4C所示的区域的单个优化的存储基片的区域中,其中该存储包括由合适的纠错码保护且具有所导致的不同错误率和存储开销的区域。最终结果是高存储密度和少许图像质量下降。
[0054] 图5A-5C图示了近似感知PTC图像编解码中的编码步骤。如图5A所示,PTC首先将图像像素划分成像素域500中的矩形块,每个块使用HLBT被变换(505)为频域。接下来,量化(515)HBLT频域510系数以提供量化的系数520(即,定标和四舍五入至最近整数的系数)。量化分辨率因而用于表示系数的位的数目由目标质量确定,其通常由峰值信噪比(PSNR)测量。然后,经由‘收集’步骤(525)空间上收集和分组具有类似频率的量化系数520以提供经收集的系数530。
[0055] 接下来,另一重排序步骤(535)以分层ping-pong方式访问系数阵列。图表540示出了访问系数530的顺序,这得到向量550(如图5B所示),其中低频系数聚集在开头,高频系数朝末尾聚集。由于低频系数倾向于具有较高绝对值并且对图像质量而言更重要,所以频域计算可以用于标识不同的位。如图5B所示,向量550被划分成固定大小的宏块551,随后使用自适应行程长度/Golomb-Rice算法对每个宏块进行编码。在熵编码步骤(PTC的Golomb-Rice算法),执行位重要性标识(并且PTC可以变为近似感知)。
[0056] 行程长度编码算法使用三种类型朝位:控制位、行程长度位和精细位。如图5B所示,朝向顶部的值倾向于比朝向底部的值大。每个系数的最重要信息片段是信号560(如果非零)和其最高有效位562(被圈的)的位置。由透印图案指示的其余的位较不显著位不那么重要:它们用于精细对应的系数值,因而命名为“精细位”564。它们还具有近最大加密,所以行程长度编码不能有效地压缩它们。因此,精细位564仅被添加至分离的位流,其被附于编码宏块551的末尾。另外,一组系数的前导零不被编码,因为它们隐含地通过最高有效位(MSB)562的编码被定义。前导零在附图5B中被指示为“隐含零”566。其余的位是零(“零行程”568)和最高有效(1)位562,其通过编码连续零的垂直行程而被压缩,因为0比1常见。
[0057] 参考图5C,最终编码可以包括宏块551的控制和行程长度位570以及所附的精细位564。MSB(由图5C中的“m”指示)包括在编码宏块中,随后的第二位指示当其最高有效位中断行程时系数的信号(+或-)。
[0058] 还如图5C所示,算法使用控制位区分完全行程与部分行程,并在无行程模式区分单独的1与单独的0。特定地,如果的连续0的数目达到最大行程大小,则0行程568可组成完全行程(图5C中的“f”),或者如果算法在完成完全行程之前遭遇最高有效位,则0行程568可组成部分行程(图5C中的“p”)。对于部分行程,行程长度自身在它们相应的控制位之后立即被编码并精确地地使用log2(最大行程大小)的位。当最大行程大小是1(无行程模式)时1和0可以被偶然地单独存储。示例近似感知PTC算法可使用存储在最不易出错存储器(即,“精确的”存储器)中的头部以记录宏块的位流与存储器的存储它们的区域之间的映射。注意,控制和行程长度位570中的错误可以在解码期间影响宏块551中所有后续位的含义。因此,此时单个位错误可以影响宏块551内的多个系数。
[0059] 示例性案例研究—渐进变换编解码
[0060] PTC图像编码算法参考图5A-5C所述被修改以感知到存储单元的不同可靠性级别(即,变为近似感知编码算法)。PTC在结构上类似于其它图像编码算法,所以此方法适用于其它图像编码算法(例如JPET XR和JPEG 2000)。作为协同设计的一部分,存储器单元设计被优化。在示例案例研究中,除了修改PTC以变成近似感知以外,PCM存储基片经由偏置被优化以使错误最小化,并且经由选择性纠错被调谐至不同的错误率级别。
[0061] 也就是说,单元电阻级别至它们的数字值的映射可以被调节,以便执行偏置用以优化PCM单元从而平衡写入错误与漂移错误,然后优化的单元可以利用选择性纠错被调谐以匹配这些单元希望存储的PTC编码的位。
[0062] 有利地,PTC的组合的近似感知编码算法和优化的PCM实现有损压缩性能的显著增益。与存储在精确的PCM单元中的清晰的PTC编码的图像相比,示例性系统可将存储基片密度增大2.7×且具有少许解码图像降质。
[0063] 存储基片优化
[0064] PCM存储基片可以被优化,以提供高密度,经由偏置提供合理的错误率,并且提供极低频率的清理。所描述的优化实现4级配置(2位/单元)中的低错误率位和8级配置(3位/单元)中的相当低错误率位。
[0065] 相变存储器单元将信息存储在硫属化合物材料的电阻中,这提供了足够宽的电阻范围以允许多级单元。电阻基于单元中的非晶态和晶态材料的量而改变,该量可以通过对材料应用不同振幅的电流脉冲而被控制。对于SLC,单个位的信息以完全非晶态(高电阻)或几乎晶态(低电阻)被存储。对于MLC,每个模拟值范围(级别)被映射至某一二进制值。在写入操作时,写入电路迭代地应用脉冲并验证是否达到目标级别。
[0066] 典型地,对每个电阻范围的划分是均匀的并且每个级别位于2T的目标级别边界内,其中距级别分布的波峰的大于B的距离(B>T)可导致指示单元的下一级别的值。Gray码可用于使相邻级别之间的汉明距离最小化。
[0067] PCM的均匀划分的示例是最小电阻带L0:103-104Ω、第二最小电阻带L1:104-105Ω、第二最高电阻带L2:105-106Ω、以及最高电阻带L3:106-107Ω。写过程通常以这些均匀划分的带的中点(例如,分别103.5Ω、104.5Ω、105.5Ω、106.5Ω)为目标。
[0068] 在PCM中,材料松弛导致单元电阻漂移至较高电阻级别,这导致漂移错误。电阻漂移由材料的结构松弛导致,这随时间使电阻增大。电阻越高,漂移越强。单向漂移增加了单元电阻并且高电阻级别的漂移效应比低电阻级别的漂移效应更明显。
[0069] 其中的含义是即使单元最初被正确地(在电阻范围2T内)写入,它可随时间漂移至不同的值,这导致软错误(例如,如果L0值漂移到L0+B外)。
[0070] 由于单元电阻范围中的带的大小和位置确定由写过程和漂移引起的错误数目,所以可以通过改变单元的电阻范围以及位如何被映射至单元而使某些类型的错误最小是可能的。
[0071] 图6图示了使用偏置使漂移错误最小化的4级单元的模拟(电阻)范围(对数标度的x轴)。代替均匀的级别分布(即,所有级别(在对数空间)具有相同的大小),可实施偏置级别,在偏置级别中模拟值范围被调谐以使组合的(写和漂移)错误率最小化。
[0072] 例如,在上述的映射中,因为L2是4级单元中可能经受最多漂移错误的级别,所以使第二最高电阻带较宽(例如,105-106.5Ω),同时在写操作期间仍以105.5Ω为目标将导致PCM中的较少漂移错误。
[0073] 偏置重定位每个电阻级别和重新调节每个电阻级别的大小。组合的漂移错误率可以通过均衡每个单独级别的漂移错误率(假设所存储的数据映射均匀地映射至每个级别)而被最小化。如图3C所示,漂移更容易作用的级别具有较宽的值范围,即较高电阻级别。级别偏置可以基于自最后一次写起的固定消逝时间(“清理间隔”)被优化。这假设系统在此清理间隔清理存储内容并将电阻水平重置为目标电阻。值得注意的是,单元将以不同的清理间隔工作,但是与它们被优化的间隔相比它们将经受更高的错误率,因为级别的错误率未被完全均衡。
[0074] 偏置从每级别(具有相等的带BB)的中点改变目标电阻以在左侧形成窄带(D)和在右侧形成较宽带(Bi)以留出更多的空间用于漂移。然而,随着目标电阻移至较低值且D减小,因为写电阻分布的尾部更接近级别的下端,所以写错误率开始增大。因此,D和Bi的大小是写错误率与漂移错误率之间的权衡。对于其它技术的漂移,这种关系和解决方案可以是不同的。例如,一些技术可以经受到范围中的较低值的漂移。其它技术可以经受到整个值范围中的中心值或特定值范围的漂移。对于这些类型的技术中的任一个,可进行偏置以在可能发生漂移的方向形成较宽的带。
[0075] 为了优化,PCM单元的电阻范围被划分为偏置级别。一旦电阻范围被划分到偏置级别,下一步骤是将数字值映射至个体的偏置级别。在一般图像和PTC编码的图像中,0是最常见的(‘00’用于4级单元并且“0000”用于8级单元),所以值0被映射至不受漂移影响的最高级别。不存在图像的其它值看起来比余下的值更常见,所以使用简单的Gray码为剩余的级别指派值。
[0076] 在案例研究实施例的优选实施方式中,使用三个单元配置:精确配置、4级配置和8级配置。4级配置和8级配置以其原始形式都未实现固态存储产品的已公布的不可纠错的误位率(10-16),但是可以实现可以被纠错至商用可靠性级别的相当低的错误率。即使对于具有较高错误率的8级单元,纠错的存储开销也低于100%,所以甚至利用此开销,偏置的8级单元与未纠错的偏置的4级单元相比,提供更密的存储。
[0077] 不幸的是,即使在偏置之后,将建模电路用于16级单元也导致了太高的错误率(写入错误率大约为10-4是合理的,但是在1秒的写入操作之后漂移错误率却是无法忍受地高—-110 ),并且该错误率不能利用足够低的存储开销通过纠错而被降至用以证明级数增加正确的合理的错误率。2级单元和3级单元被用作精确基线,因为它们显示了极低的错误率。在一个方面,2级单元更简单且更快。在另一方面,3级单元以被认为精确的仍然足够低的错误率提供更高的密度。4级单元和8级单元然后用作近似存储器单元。
[0078] 甚至在偏置之后,漂移可能仍然是个长期的问题。为了减轻过度的漂移,可以使用清理来重写单元并使电阻级别降回来。基于(在下面更详细描述的)PCM单元模型,希望清理周期为3个月(107秒)量级。每千兆位存储100位/秒量级的平均存取带宽是可忽略的数字。而且,如果无论如何数据将要被清理,则这可能还是一个执行损耗平衡的好机会。
[0079] 一旦单元被优化,单元可以被调谐以提供不同的错误率级别。存储控制器负责提供各种纠错码,每个纠错码位于由元数据存储所需的存储开销和所提供的错误率降低限定的空间中的不同点。原理上,这导致更高的控制器复杂性,但是实践中在相同族(例如,BCH-4和BCH-16)中使用多个代码可以保持复杂性得到控制。
[0080] 控制器还负责将存储组织成区域,每个区域具有不同的纠错强度。控制器将区域至配置映射存储在表中,该表驻留在控制器中且由预配置的精确的存储区域支持,其在电力循环期间存留该映射。系统软件将特殊的配置命令发送给控制器以分配和配置区域。一旦被配置,控制器使用所请求的地址和区域至配置映射中的信息确定该请求针对哪个区域和在为所述请求服务时使用的合适的纠错强度。不同区域的数目小(例如,在此示例中为8),所以区域至配置映射可以支持可变大小区域并完全关联。
[0081] 实施修改的算法的代码分配不同配置的存储。假设存储系统通过处理器地址空间可直接被访问,则每个位流可以简单地经由持续对象接口被分配,并由头部指向分配的空间。如果文件系统被使用,则块中的所有存储需要是相同的配置。文件系统提供在开放流时指定存储器配置的调用以及拼接多个流形成单个文件的调用。如果文件系统可能无变化或希望文件系统无变化,则多精确度存储器(例如,动态近似存储基片)可被暴露为独立的容积,提供使用近似存储维持和服务图像收集的“图像存储”,其中每个图像可以被链接自主文件系统。操作系统或存储控制器可以负责任何必需的维护任务,例如平均读写、刷新存储器以限制随时间的降质、在电源故障之后重新配置存储。
[0082] 具有不同纠错的区域具有不同的元数据开销。如此,不同的区域需要不同数量的单元来存储相同数目的数据位。整个存储空间可以两种方式之一被管理。静态管理在制造时将存储简单地划分成多个区域。这种方法不灵活,它不允许不同比例的存储专用于一个区域。第二种方法是允许区域的动态重配置以匹配应用需求。在此情况中,区域大小重调节导致附加的复杂性。假设存储设备在制造时使所有区域默认地被初始化为最强可用纠错,当区域第一次被配置时,其密度增长因此可用的大小也增大。应对它的简单方式是将此区域暴露为两个区域,一个具有重新配置之前的原始大小的区域和具有剩余存储的虚拟区域。这使得寻址更简单。如果系统可以在别处容纳剩余区域的内容,则区域可以仅被重配置为更小的大小。
[0083] 评估设置
[0084] 定制仿真基础设施用于多级单元仿真。质量测量基于Kodak PCD图像集中768×512像素分辨率的24灰度级原始图像。图7A和图7B分别概括了用于4级单元和8级单元的配置和参数设置。图7A示出了均匀的(u)和偏置的(b)4级单元参数的表1。RT表示级别的平均电阻,RB表示级别的上边界处的电阻。图7B示出了均匀的(u)和偏置的(b)8级单元参数的表
2。注意,与均匀的单元相比,偏置单元使目标水平(log RT)和级别边界(log RB)朝向低电阻移动适当的量,这导致以增大的写错误为代价的较低的漂移所引致的错误。偏置单元的写错误率根据应用的特性被设置为10-6。整体漂移错误率可以通过均衡所有级别的漂移错
7
误率(除了第一级别和最后一个级别)而被最小化。单元在被写入之后以清理间隔t=10(约3个月)被优化。在清理期间,它们的原始目标电阻被恢复。
[0085] 所建议的系统由两个度量评估:峰值信噪比(PSNR)和存储器密度。PSNR逐个像素比较原始图像与解码图像,其中解码图像包含来自有损压缩算法(例如,量化)和存储器子系统的错误(在此情况中,未纠正的写错误和漂移错误)。PSNR值越高,原始图像与重构图像之间的差别越小。
[0086] 近似存储器系统使用来自若干目标PSNR级别(即35dB、38dB、40dB和42Db)的图像进行评估。对于大多数图像,40-42dB范围表示高图像质量且失真在视觉上几乎无法察觉;然而38dB和35dB分别表示普通质量和低质量。由于近似存储器系统中的非确定性错误模式,每个图像的100个样本在该标准检查程序(benchmark)中运行并且使用最小PSNR,这给出了重构图像的质量的下界。存储器密度被定义为由单元存储的数据位的数目。易出错存储器(例如,PCM)通常使用纠错码(ECC)以从某一数目的错误恢复。纠错位的存储开销可以使存储器密度降低。
[0087] 仿真结果
[0088] 为PCM近似存储基片剪裁PTC图像编码算法的优点可以从下面的结果看出。
[0089] 图8示出了比较具有和不具有偏置的2级单元、4级单元和8级元的峰值信噪比(PSNR)与每个图像像素的存储器单元数目的曲线图。此曲线图以质量相对存储器区域示出了完全优化设计和中间备选与SLC PCM上的PTC的比较。存储器区域(x轴)由正被使用的存储器单元的数目测量,规范化为像素中的图像大小。y轴示出了已经被编码和存储在近似存储器持续清理间隔(107s)之后的重构图像质量。由于高密度存储器单元常常经受较高错误率,所以图像质量和存储器区域不想称。如此,曲线越往左,其表示的质量相对存储器区域均衡越好。
[0090] 从右到左,最差的性能来自SLC PCM(“2LC”)上的PTC算法,质量与区域权衡仅由量化因素控制,之前建议的三级的PCM(“3LC”)得到密度的1.58×(log23)增加而没有编码图像的任何质量损耗。然而,处理基变换的电路向存储器系统接口添加了复杂性。相比之下,不要求复杂的基变换电路的偏置的4级单元(“Bias4LC”)带来较高的密度(2LC的1.85×),同时仍然维持相同级别的图像质量。偏置的仅有代价是设计时单元级别和边界的优化。
[0091] 最后,可以在左侧看到三个偏置的8级单元配置:具有彻底纠错的偏置的8级单元(“Bias8LC TC”)、具有选择性纠错的偏置的8级单元(“Bias8LC SC”)和具有理想的纠错的8级单元(“理想的8LC”)。注意,8级单元配置使用纠错,因为在此密度如果不使用纠错质量将急剧下降(10dB范围,其是不可接受的)。特定地,所示的配置包括彻底且等同地应用于整个存储的纠错(Bias8LC TC)、基于算法的需要应用的选择性纠错(近似感知)(Bias8LC SC)以及不具有存储开销且纠正所有错误的理想的纠错机制(理想的8LC)。
[0092] 尽管获得相对2LC2.28×的密度,但是Bias8LC TC使用比维持高质量必要的纠错强度更大的纠错强度。相反,通过为每个编码位类别仔细选择合适的ECC方案,Bias8LC SC实现相对2LC2.73×的密度(比理想的8级单元密度增益(即3×)低10%以下),同时将质量损耗维持在可接受的级别(<1dB损耗)。
[0093] 不同编码位对重构图像的质量的影响被评估。可能希望将编码图像的质量损耗保持在1dB内。例如,40dB的目标质量仅允许下降至39dB。为了评估错误对编码位类型的作用,跨所有宏块评估控制位、行程长度位和精细位。
[0094] 图9示出了针对近似位流的PSNR的曲线图,其对在变化的误码率的情况下的向精确基片和近似基片的控制位—行程长度位—精细位的分配进行比较位位位位位。当不同的近似位流用于三个位流时,图像质量被显示下降。在图例中,P表示精确基片,A表示具有沿x轴变化的位误码率(BER)的近似基片。第一个字母表示控制位,第二个字母表示行程长度位,第三个字母表示精细位。
[0095] 直观地,控制位比行程长度位对精确度更为关键,然后是精细位。图9通过基于位的类型对位子集应用可变的错误率以及通过测量所导致的质量下降证实了这个观点。所有图像都以40dB的目标质量被编码。每个曲线标有三个字母,表示错误率(x轴)分别被应用(A)或未被应用(P)于控制位、行程长度位和精细位中的每一个。
[0096] 如图9中的曲线图所示,P-P-P没有任何失效并将质量维持在40dB。精细位对图像质量的影响最少,如此,P-P-A可容忍相当高的错误率(此曲线仅在BER到达10-4时开始掉落)。接下来,P-A-P和P-A-A(引入了行程长度错误)可容忍高达10-7的错误率且不具有图像质量下降或具有非常少的图像质量下降。控制位是错误最敏感的(A-P-P和A-A-A),而且当错误率超过质量10-7时质量迅速下降。此分析支持选择性地调节纠错,从而维持控制位和行程长度位的较低错误率(10-7)和精细位的较高错误率的理念。由于精细位与其它类型的位的错误率要求的大差距,精细错误率被固定在10-3,带来1dB质量下降预算的0.2dB。
[0097] 接下来,研究了不同宏块对质量的作用。图10示出了具有针对指定的宏块(MB)中的控制(Ctrl)位和行程长度(RL)位的具有增加的错误率的PSNR的曲线图位位。在每个仿真中,指示的MB之外的Ctrl位和RL位使用10-16的BER,精细位使用10-3的BER。
[0098] 如上所述,保持有最低频系数的第一宏块对编码图像质量起到了最重要的作用。-16
图10通过将强纠错(10 的错误率)应用于总共128宏块的编码图像的第一n个宏块、将可变的错误率应用于其余块的控制位和行程长度位、以及将固定的纠错(错误率10-3)应用于所有块的精细位来证明此陈述。
[0099] 如所预测的,保护第一宏块的控制位和行程长度位的Ctrl&RL(MB2-128)与使第一宏块留在与其它宏块相同的错误率的Ctrl&RL(MB1-128)相比实质地提高了质量。另一方面,保护附加的宏块具有递减的收益。这些结果建议使用商用错误率(10-16)的强纠错保护第一宏块的控制位和行程长度位、然后用中等强度码(10-6)保护其余的控制位和行程长度位将质量完好地保持在1dB下降限制内。
[0100] 在具有针对容错类别的目标错误率的情况下,焦点转向使PCM基片达到这些标准。首先,基片通过经由偏置优化单元被优化用于任意清理率(107s或近似3个月)。图11示出了随均匀的和偏置的PCM单元的时间的组合的原始误码率(RBER)的曲线图位。这里,示出了对于4级单元和8级单元而言偏置对错误率的作用,报告了所有级别的组合的错误率。由于漂移作用,错误率随时间增长。
[0101] 最初,4级和均匀的8级单元(均匀的4LC和均匀的8LC)被使用。如所期望的,4级单元的错误率总是低于8级单元的错误率,因为较少的级别允许更多的空间用于每级别的漂移。然而,即使仅在写入之后的1个小时,两种类型的单元开始呈现过度高的错误率。相反,偏置的4LC在该时间范围保持极低的漂移错误率(1010s处的10-20)。偏置的4LC的原始位误码率(RBER)由写入错误占据主导。将最高密度与相当低错误率结合的偏置的8LC在107s处提-3供大约10 的错误率的良好权衡,比均匀的8LC低2个数量级。幸运地,其还满足最多容错位(即,精细位)的需求。这允许不对所有这些位使用纠错,从而消除了不必要的元数据开销。
[0102] 图12示出了对均匀的和偏置的PCM单元进行比较的具有增大的清理间隔的密度的曲线图。图12提供了哪个单元配置在示例性实施方式的整体密度与清理开销之间提供最佳权衡的观点,该示例性实施方式包括纠错以将不可纠错的误码率(UBER)维持在商用错误率(10-16)位。2LC和3LC单元具有如精确存储器一样低的RBER,因而不需要纠错。3LC提供了2LC的1.58×的更高密度。均匀的单元(即,4LC、8LC和16LC)的密度尽管对于短清理间隔(太短以致于不引人注意)高,但是在较长的间隔因为漂移引致错误快速产生而急剧下降。相反,偏置抑制了漂移错误率的显著增长:Bias4LC具有稳定的1.86×密度增益(由写错误引起的),Bias8LC经历更加平滑的密度下降从而在大约3个月(107s)之后实现了2.28×的密度提高。
[0103] 一旦算法错误率要求被确定,并且基片被优化用于最低可能错误率,算法和基片可以经由纠错进行匹配。这依赖于理解纠错机制的存储开销与其纠正力量之间的权衡。图13示出了比较512数据位块的纠错码(ECC)的容量与开销的曲线图。在图13中,提供了各种纠错机制(具有存储开销)、以及原始位误码率(RBER)与不可纠错的位误码率(UBER)之间的对应关系。
[0104] 单纠错和双检错(SECDED)ECC在72位中纠正一个错误并检测多达两个错误,每个BCH码纠正512数据位加开销中多达指示数目的错误。Bias8LC单元已经满足精细位的需求,所以它们不需要任何纠正。对于第一宏块中的控制位和行程长度位,期望一种纠正机制接受10-3的RBER并产生10-16的UBER。BCH-16是以最低存储开销(31.25%)提供此容量的代码。幸运地,需要这种强纠错的位仅占所有位的一小部分(2.13%)。最后,对于其余的81.67%-6
位,BCH-6以11.7%的开销提供10 UBER。
[0105] 还值得注意的是,随着RBER增大,维持相同UBER所需的代码强度迅速增长。这突出了偏置的价值:要不是其使错误率降低2个量级,8级单元设计将提供如此高的RBER,以致于纠正所有错误的开销将过高。
[0106] 为偏置优化所选择的清理周期选择在某种程度上是任意的。为了说明使用具有其它清理间隔的相同的描述的单元设计的效果(所以单元被“超出规定地”用于不同的清理间隔),在不同的清理间隔上执行仿真。如果间隔短于规定,则写入错误占据主导;如果间隔较长,则代替地漂移错误占据主导。
[0107] 图14示出了图示ECC存储开销与清理间隔之间的权衡的图表。对于每列,第一行中的代码被应用于彻底纠错(TC)中的所有位;选择性纠错(SC)将第一行ECC用于MB1中的控制和行程长度位,将第二行ECC用于其它MB中的控制和行程长度位,并留下所有的精细位不被保护。第三行示出了用于SC的总开销。在图14中,可以看出纠错选择针对不同的清理间隔如何变化(假设<1dB质量下降)。
[0108] 图14中的图表在每个间隔将彻底纠错(Bias8LC TC)与选择性纠错(Bias8LC SC)并列比较。随着清理间隔增大(朝向x轴右侧),必须采用更强的ECC机制抑制漂移错误率的增长,这导致更高的存储开销。在另一方面,较大的间隔减少了系统功耗、由数据移动引起的带宽开销和由清理产生的校验位计算。
[0109] 尽管107秒被选择作为密的近似图像存储系统的目标清理间隔,但是如果更高的密度是最优先的,则对其它系统而言更短的间隔也是可接受的。然而这些结果的中心思想是:仅在需要时选择性地应用纠错可以显著地减少密度损失同时使存储器具有算法要求的错误率,如每对线条中的巨大差别所证明的。通过包括偏置(以107的清理间隔被优化),仅需要10.22%(从几乎32%下降到)的存储开销,这导致可以达到2级基线的2.7×的存储密度。
[0110] 尽管所建议的图像编码算法和近似存储器的协同设计基于多级别PCM进行研究,但是框架容易地适用于其它技术,例如闪存,尤其多级别闪存(例如,TLC NAND闪存)。在这些设备中,ECC(BCH和LDPC是常见的)被应用于512字节(或更大,例如1024字节)的扇区。图15示出了比较512字节块数据(典型地闪存)的ECC的容量与存储开销的曲线图。每个代码可以纠正512字节闪存扇区中的指示数目的错误和增扩的ECC校验位。
[0111] 现有研究报告TLC NAND闪存设备具有初始的10-4的RBER,其随程序/擦除循环的数目逐渐增加。由此,TLC闪存可为存储MB1中的控制和行程长度位的单元使用BCH-16,为其余的控制和行程长度的位使用BCH-6,并且留下精细位不被纠错。这共同导致比SLC高的2.96×的密度同时维持<1dB质量损耗。然而,这些数字仅适用于全新的设备。RBER随同程序/擦除循环增大,所以逐渐要求更强的ECC。例如,RBER在大致3000个程序/擦除循环之后达到10-3。此时,选择性纠错和彻底纠错的密度改进分别降低至2.88×和2.49×,使选择性纠错更具吸引力。
[0112] 由此,协同设计的图像编码和存储机制提供更密的近似存储。通过标识编码位对输出图像质量的相对重要性和根据所标识的相对重要性执行纠错,可以增大存储容量。级别偏置可被进一步并入存储中以降低经受漂移的基片中的错误率。示例性案例研究的结果是2.7×的存储密度增加和少许质量下降(小于1dB)。尽管在本文中特定讨论了PTC图像编码和PCM,但是所描述的系统和技术适用于其它存储基片和对频域信号进行编码随后进行熵编码的其它算法,例如音频和视频编解码。
[0113] 为了修改示例性图像编码算法,开发了一种方法以确定由特定编码算法建立的编码位的相对重要性。这些位然后可被单独存储在近似存储基片的特别被优化用于编码位的相对重要性的区域中。这些区域中的每个通过应用特定的纠错码(选择性纠错)匹配至它们所存储的位的容错,但是其它方法是可能的。位的容错越高,空间节省越高。算法修改可由被给予由存储硬件提供的各种纠错选项以及它们的相应错误率的图像编码的程序员专家实现。最终的算法被封装到库中。
[0114] 此协同操作设计工作可由运送它们的硬件以及支持的库的存储器制造商、或由设计包括数字成像的产品的系统集成商承担,其中库从不被暴露。这些产品的最终用户可以与用户如何与有损编码算法例如当今的JPEG交互的类似方式设置图像的期望质量。因为从用户的角度来看由近似存储导致的错误仅是图像质量损耗的一个或多个源,所以这是可能的。
[0115] 所描述的近似感知编码算法的某些实施方式可被实现为计算机过程、计算机系统、或制品例如计算机程序产品或计算机可读介质。本文描述的某些方法和过程可被实施为代码和/或数据,它们可被存储在一个或多个计算机可读介质中。本发明的某些实施方式设想到使用计算机系统形式的机器,在该计算机中指令集在被执行时使系统执行上面讨论的方法中的任一个或多个。某些计算机程序产品可以是由计算机系统可读且对用于执行计算机过程的指令的计算机程序进行编码的一个或多个计算机可读存储介质。计算机可读介质可以是任意可用的计算机可读存储介质或可由计算机系统接入的通信媒介。
[0116] 通信媒介包括包含例如计算机可读指令、数据结构、程序模块、或其它数据的通信信号从一个系统传输至另一系统所借助的媒介。通信媒介可包括导波型传输媒介例如电缆和电线(例如,光纤、同轴电缆等)和无线(非导波型传输)媒介例如可传播能量波的声波、电磁波、RF、微波和红外线。载波和可包含可由计算机系统使用的数据的其它传播信号自身不是“计算机可读存储介质”。真正地,计算机可读存储介质明确地不由载波或传播信号构成。
[0117] 本发明的某些方面提供了下面的非限制性实施方式:
[0118] 示例1.一种对单级单元或可变的多级单元存储上的数据编码的方法,包括:接收来自应用的编码数据的块以及至少重要性属性,重要性属性与编码数据的块相关联,重要性属性指示来自解码编码数据的输出质量中的块的位的相对错误敏感性;以及至少根据重要性属性将编码数据的块指派给存储器的存储器地址或特定区域,其中存储器至少具有两个精确度级别。
[0119] 示例2.根据示例1的方法,其中至少根据重要性属性将编码数据的块指派给存储器的存储器地址或特定区域包括:响应于重要性属性指示相对低的错误敏感性,将块指派给存储器的低精确度级别区域;响应于重要性属性指示相对中等的错误敏感性,将块指派给存储器的中等精确度级别区域;以及响应于重要性属性指示对错误相对高的敏感性,将块指派给存储器的高精确度级别区域。
[0120] 示例3.根据示例1或2的方法,其中至少两个精确度级别包括低精确度级别、中等精确度级别和高精确度级别,低精确度级别比中等精确度级别和高精确度级别在每个单元存储更多的位,高精确度级别具有比中等精确度级别更多的纠错开销。
[0121] 示例4.根据示例1-3的任一个的方法,进一步包括:接收应用的应用类型的指示;以及根据应用类型指派阈值级别,以执行用于至少两个精确度级别中的至少一个精确度级别的单元中的值的范围的偏置。
[0122] 示例5.根据示例1-4的任一个的方法,进一步包括:基于用于应用的位模式的出现频率,将二进制值指派给用于至少两个精确度级别中的至少一个精确度级别的单元中的范围,其中指派编码数据的块进一步根据用于来自应用的编码数据的位模式。
[0123] 示例6.根据示例1-5的任一个的方法,其中存储器包括具有至少两种类型的可用纠错开销的单级单元存储器。
[0124] 示例7.根据示例1-6的任一个的方法,其中存储器包括具有至少两个不同密度的区域的多级单元存储器。
[0125] 示例8.根据示例1-7的任一个的方法,其中存储器包括具有至少两种类型的可用纠错开销的多级单元存储器。
[0126] 示例9.根据示例1-8的任一个的方法,其中应用包括近似感知图像编码算法。
[0127] 示例10.一个或多个计算机可读存储介质,计算机可读存储介质具有存储于其上的用于近似感知图像编码算法的指令,指令在由处理器执行时引导处理器:为近似感知编码算法的输出数据位标识至少两个输出质量重要性级别;以及根据输出数据位的经标识的输出质量重要性级别分割输出数据位。
[0128] 示例11.根据示例10的介质,其中引导处理器标识至少两个输出质量重要性级别的指令引导处理器:将图像的像素从空间域转换成频率域;以及将编码低频分量的系数指派给指示高错误敏感性的重要性属性,以及将编码高频分量的系数指派给指示较低错误敏感性的重要性属性。
[0129] 示例12.根据示例11的介质,其中引导处理器将编码低频分量的系数指派给指示高错误敏感性的重要性属性以及将编码高频分量的系数指派给指示较低错误敏感性的重要性属性的指令包括引导处理器执行以下动作的指令:将类似频率的频率系数汇聚到向量中,使得落入相对低频率系数范围内的频率系数被聚集在向量的开头并且落入相对高频率系数范围内的频率系数朝向向量的尾部被聚集,而落入相对中间频率系数范围内的频率系数被聚集在其间;将向量划分成宏块;以及执行宏块的熵编码以生成编码宏块,编码宏块包括控制位、行程长度位和附加的精细位。
[0130] 示例13.根据示例12的介质,其中头部和第一宏块的控制位和行程长度位被指派给指示较高错误敏感性的重要性属性;除了第一宏块以外的宏块的控制位和行程长度位被指派给指示中等错误敏感性的重要性属性;并且其中附加的精细位被指派给指示较低错误敏感性的重要性属性。
[0131] 示例14.根据示例11的介质,进一步包括存储于其上的指令,该指令在由处理器执行时引导处理器为近似感知算法指示特定位模式的频率。
[0132] 示例15.一种系统,包括:处理系统;一个或多个计算机可读存储介质,一个或多个计算机可读存储介质包括至少一个近似存储;被存储在一个或多个计算机可读介质中的至少一个计算机可读介质上的操作或文件系统,操作或文件系统在由处理系统执行时引导处理系统:至少根据指示编码数据的块的容错率的重要性属性,将编码数据的块指派给至少一个近似存储的存储器地址或特定区域。
[0133] 示例16.根据示例15的系统,其中操作或文件系统进一步引导处理器系统:指定用于近似存储的存储器配置。
[0134] 示例17.根据示例16的系统,其中用以指定用于近似存储的存储器配置的指令引导处理系统:根据应用的应用类型提供阈值级别,以执行用于特定区域中的单元的值的范围的偏置,编码数据的块从应用被接收。
[0135] 示例18.根据示例16或17的系统,其中用以指定用于近似存储的存储器配置的指令指引处理系统:基于重要性属性为特定区域中的单元提供纠错级别的指示。
[0136] 示例19.根据示例16-18的任一个的系统,基于用于应用的位模式的出现频率,将二进制值指派给用于至少两个精确度级别中的至少一个精确度级别的单元中的范围,其中指派编码数据的块进一步根据用于来自应用的编码数据的位模式。
[0137] 示例20.根据示例15-19的任一个的系统,其中将编码数据的块指派给至少一个近似存储的存储器地址或特定区域的指令引导处理系统写入指示与编码数据的块相关联的精确度级别的标记。
[0138] 示例21.根据示例15-20的任一个的系统,其中操作或文件系统进一步引导处理系统:为近似感知应用提供应用编程接口以指示待被存储的数据的重要性属性。
[0139] 示例22.一种用于执行示例1-9的任一个的方法的系统或产品。
[0140] 示例23.一种系统,包括:用于接收来自应用的编码数据的块以及至少重要性属性的装置,重要性属性与编码数据的块相关联,重要性属性指示来自解码编码数据的输出质量中的块的位的相对错误敏感性;以及用于至少根据重要性属性将编码数据的块指派给存储器的存储器地址或特定区域的装置,其中存储器至少具有两个精确度级别。
[0141] 应该理解,本文描述的示例和实施方式仅用于说明目的,对本领域技术人员教导其各种修改或改变并且修改或改变包括在本申请的精神和范围内。
[0142] 尽管主题用结构特征和/或动作专用的语言描述,但是将理解,所附权利要求中定义的主题不一定限于上述的特定的特征或动作。然而,上述的特定的特征和动作作为实现权利要求的示例被公开,其它等同的特征和动作旨在权利要求的范围内。