本申请的母案为桑迪士克股份有限公司于2003年8月29日申请的国际申请PCT/US2003/027322,其于2005年3月30日进入中国国家阶段且中国国家阶段的申请号为“03823356.8”。该母案的发明创造名称为“用于存储并检索存储系统中信息的方法和存储装置”
具体实施方式
通过在存储数据之前变换数据格式,例如,从一较不佳情形变换为一较佳情形,则由于将一较不佳情形有效地存储为一较佳情形,从而可有效地避免存储实际上的较不佳情形。因此,可更有效地进行存储系统中数据的总体存储,这是因为存储较不佳情形所消耗的功率将通常不会大于存储较佳情形所消耗的功率,且可避免与存储较不佳情形相关的性能损失。另外,在一将较不佳情形存储为更佳情形的存储系统中,与数据存储相关的电路的复杂性可得到降低,例如,设计所花费的时间更短,且可在一定程度上更易于生产。亦即,可降低与功率耗用、性能损失、设计问题和生产问题中至少一项相关的总成本或成本因素。例如,可降低与功率消耗相关的成本、可降低性能损失或成本、可降低与设计复杂电路相关的成本及可降低生产成本。
当数据拟存储到诸如一非易失性存储装置的存储装置上时,主机系统可将该数据提供至该非易失性存储装置。在一实施例中,非易失性存储装置可有效地减少数据,以确定数据内所出现的逻辑状态和符号的相对密度,然后根据该相对密度选择一合适的变换来用于将数据变换为一有效存储格式。一符号可为一个位或实质上任何数量的位的组合。虽然一视为可有效存储的数据格式可视具体系统的要求而变化很大,但可有效存储的数据格式可包括:包含有实质上均匀分布的逻辑状态的格式;会将特定逻辑状态的最大密度最小化的格式;以及会将特定逻辑状态的最小密度最大化的格式。
首先参照图1a,下文将介绍一通用主机系统,其包括一非易失性存储装置120,例如一CompactFlash存储卡(CF卡)。主机或计算机系统100通常包括一系统总线104,该系统总线104使一微处理器108、一随机存取存储器(RAM)112及各输入/输出电路116能够进行通信。应了解,主机系统100可通常包含其他组件,例如显示装置及联网装置,此处出于图解说明目的,未展示出这些组件。
一般而言,主机系统100所能捕获的信息包括(但并不限于):静止图像信息、音频信息及视频图像信息。这些信息可实时捕获,并可以无线方式发送至主机系统100。虽然主机系统100实质上可为任一系统,但主机系统100通常为一如下系统:例如数字照像机、视频照像机、蜂窝式通信装置、音频播放器或视频播放器。然而,应了解,主机系统100一般而言可实质上为任一种存储数据或信息及检索数据或信息的系统。
应了解,主机系统100还可为一仅捕获数据或仅检索数据的系统。亦即,主机系统100可为一用于存储数据的专用系统,或者可为一用于读取数据的专用系统。例如,主机系统100可为一个仅设置用于写入或存储数据的存储记录器。或者,主机系统100可为一诸如MP3播放器等通常设置用于读取或检索数据而非捕获数据的装置。
非易失性存储装置120在一实施例中为一可拆式非易失性存储装置,其布置成介接至总线104以存储信息。一可选的输入/输出电路块130可使非易失性存储装置120间接地介接总线104。如所属技术领域的技术人员所了解,输入/输出电路块130,在存在时,用于降低总线104上的负荷。非易失性存储装置120包括非易失性存储器124和一存储器控制系统128。在一实施例中,非易失性存储装置120可构建在一单一芯片或电路小片上。或者,非易失性存储装置120可构建在一多芯片模块上或构建在可一同用作非易失性存储装置120的多个分立组件上。下文中将根据图1b更详细地介绍非易失性存储装置120的一实施例。
非易失性存储器124设置用于存储数据,以便可视需要存取和读取数据。存储于非易失性存储器124内的数据也可视需要擦除,当然应了解,非易失性存储器124内的某些数据不可擦除。数据存储、读取和擦除过程通常由存储器控制系统128控制。在一实施例中,存储器控制系统128管控非易失性存储器124的运行,以便通过基本上使非易失性存储器124的各区段大致上同等地耗损来使非易失性存储器124的寿命最大化。
上文已一般性地将非易失性存储装置120描述为包含一存储器控制系统128,即一控制器。通常,非易失性存储装置120可包括分别用于非易失性存储器124和存储器控制系统128(即控制器)功能的单独芯片。举例而言,尽管包括(但不仅限于)PC卡、CompactFlash卡、多媒体(MultiMedia)卡及安全数字(secure digital)卡在内的非易失性存储装置包含可构建于一单独芯片上的控制器,但其他非易失性存储装置可不包含构建于一单独芯片上的控制器。在一其中非易失性存储装置120不包含单独的存储器和控制器芯片的实施例中,如所属技术领域的技术人员所了解,存储器和控制器的功能可集成在一单一芯片内。
下文将参照图1b、根据本发明的一实施例更详细地阐述非易失性存储装置120。如前面所述,非易失性存储装置120包括非易失性存储器124和存储器控制系统128。存储器124和控制系统128(或控制器)是非易失性存储装置120的主要组件。存储器124可为一形成于一半导体衬底上的存储单元阵列,其中,通过将两个或多个电荷电平中的一个电荷电平存储于存储单元的各存储元件上而将一或多位数据存储在各存储单元中。用于此等系统的一常见类型存储器的实例是非易失性闪速电可擦可编程只读存储器(EEPROM)。
控制系统128通过总线15与一主机计算机或其他正使用该存储系统存储数据的系统进行通信。总线15通常是图1a中总线104的一部分。控制系统128还控制存储器124(其可包括一存储单元阵列11)的运行,以写入主机所提供的数据、读取主机所请求的数据、并在正运行的存储器124中执行各种内务功能。控制系统128通常包括一具有相关软件存储器和各种逻辑电路的通用微处理器。通常还包括一或多个状态机,以控制专用例行程序的性能。
存储单元阵列11一般由控制系统128通过地址解码器17进行寻址。解码器17向阵列11的各门极线和位线施加正确的电压,以便向正由控制系统128寻址的一组存储单元编程数据、从该组存储单元读取数据或者擦除该组存储单元。辅助电路19包括用于控制施加至阵列元件的电压的编程驱动器,该些电压取决于编程至一所寻址存储单元组中的数据。电路19还包括读出放大器和其他从一所寻址存储单元组读取数据所必需的电路。待编程至阵列11中的数据或从阵列11最新读取的数据通常存储在控制系统128内的一缓冲存储器21中。控制系统128通常还包括用于临时存储命令和状态数据及类似数据的各种寄存器。
阵列11分为大量的存储单元块BLOCKS 0-N。通常对于闪速EEPROM系统来说,块即为擦除单位。换言之,每个块均包含可一起擦除的最小数量的存储单元。亦如图1b所示,每个块通常分为若干页面。页面是编程单位。换言之,一基本编程操作是将数据写入一个单元页面这一最小单位内。每个页面内通常存储一个或多个数据扇区。如图1b所示,一个扇区包括用户数据和开销数据。开销数据一般包括一根据该扇区的用户数据计算出的纠错码(ECC)。控制系统128的一部分23在数据正编程至阵列11内时计算ECC,且亦在正从阵列11读取数据时校验ECC。或者,将ECC存储到与其所从属的用户数据不同的页面或不同的块中。
一用户数据扇区通常为512字节,此等于磁盘驱动器内一扇区的大小。开销数据通常为一附加的28字节。最常见地,每个页面中包含一个数据扇区,但两个或更多个扇区也可构成一个页面。大量页面即构成一个块,例如从8个页面到高达512个,1024个或更多个页面不等。块的数量的选择旨在为存储系统提供一所期望的数据存储容量。阵列11通常分为数个子阵列(未图示),其中每一子阵列皆包含这些块中的一部分,这些子阵列在一定程度上彼此独立运行以提高在执行各种存储作业时的平行度。美国专利第5,890,192号中阐述了使用多个子阵列的一个实例,该专利的全文以引用的方式并入本文中。
通过图1a中的总线104提供给非易失性存储装置120以存储到非易失性存储器124(例如,非易失性存储器124中的存储单元)中的数据通常可包括较佳情形和较不佳情形。较佳情形可包括相对频繁出现的数据样式或含有被视为相对易于存储或检索(例如,需要相对少的开销或功率)的符号(例如状态)密度的数据样式。另一方面,较不佳情形可包括相对不频繁地出现的数据样式或含有被视为相对难以存储或检索的符号密度的数据样式。在所述实施例中,较佳情形通常为相对易于或有效地存储到非易失性存储器124中或从非易失性存储器124检索出的数据样式,而较不佳情形通常为相对难以或低效地存储到非易失性存储器124中或从非易失性存储器124检索出的数据样式。
通过在将数据存储到非易失性存储器124中之前对数据进行变换,以便可有效地避免较不佳情形,亦即以便将较不佳情形变换或编码成更佳情形,会使数据得到有效地存储。通过对数据进行变换或操纵,以使基本上所有数据样式皆可作为相对较佳情形存储到非易失性存储器124中,使得能够相对廉价地进行存储作业。
通过动态地变换数据,会使在存储数据之前将一可能为较不佳情形的数据样式变换为一更佳情形。在非易失性存储器124中除存储变换后的数据外,还可存储用于指示曾对数据进行变换及所实施变换类型二者的其他数据。在从非易失性存储器124中检索该数据以将该数据重新变换成原始状态之前,可使用此信息。亦即,在变换和存储数据时,亦存储与该变换相关的信息,以便在接收到变换后的数据时能够逆向进行该变换,从而有效地使该数据恢复到其原始状态。在一实施例中,将与变换有关的信息存储为5位,当然位的数量可变化很大。一般而言,与变换有关的信息可预先考虑至、附加至、并入或插入到变换后的数据中。然而,应了解,该数据亦可独立于变换后的数据进行存储。
可实施一变换来确保不会有数据样式带有高于某一百分比的一第一符号或少于某一百分比的一第二符号。举例而言,可将任一特定符号的最大密度最小化,或将任一具体符号的最小密度最大化。在某些实施例中,可进行变换来有效地确保变换后的数据样式满足不同符号的一定最小百分比和一定最大百分比。通过确保各符号达到一定的百分比,例如,使每种符号的最大密度最小化,通常可避免较不佳情形。如所属技术领域的技术人员所了解,各符号可与表示不同状态相关联。
一般而言,数据可在存储到一非易失性存储系统中的一数据块中之前进行变换。虽然数据变换可在将数据提供给一非易失性存储系统之前在一主机上进行,但数据变换一般是在非易失性存储系统内进行。在一实施例中,数据变换是在将数据从主机读入一与该非易失性存储系统相关的缓冲器之后、但在数据存储到一数据块中之前进行。参照图2a,下文将根据本发明阐述一包括一变换器的非易失性存储系统的实施例。一非易失性存储系统202与一主机206进行通信,以使主机206可向系统202提供数据值。主机206向一缓冲器210和一统计信息产生器214提供数据,例如“原始”数据或未经变换的数据。在一实施例中,一非易失性存储系统202′可与一主机206进行通信,主机206将未经变换的数据提供至缓冲器210,但不提供至统计信息产生器214,如图2b所示。在此一实施例(即图2b所示的实施例)中,缓冲器210可设置为向统计信息产生器214提供未经变换的数据。
重新参照图2a,缓冲器210设置用于在由变换器218变换数据之前临时存储数据,而统计信息产生器214则对数据进行分析或缩减,以产生统计信息,该统计信息用于确定变换器218拟使用的变换。在一实施例中,统计信息产生器214设置用于确定在该数据中每种符号所出现的次数。统计信息产生器214亦可设置用于确定每种符号相对于整个数据流出现的总百分比。
变换器218使用由统计信息产生器214产生的统计信息将数据编码成一较佳的数据样式。一般而言,变换器218亦将已编码数据存储到一非易失性存储器222中,该非易失性存储器222可包括存储单元或存储块。如所属技术领域的技术人员所了解,使用统计信息产生器214所产生的统计信息的变换器218可仅为与非易失性存储系统202相关的复数个变换器中的一个。举例而言,如下文中根据图2c所阐述,在变换器218实施变换之前或之后可进行其他变换。
变换器218亦可向已编码数据中增加位,这些位设置用于指示(例如)当从非易失性存储器222获得该已编码数据时如何解码或重新变换该已编码数据,如前文所述。在一实施例中,可将一标识符单独存储到(例如)一与非易失性存储器222中不同于存储有该已编码数据的区段的另一区段相关的查找表中,而不是通过将位并入已编码数据中来指示如何解码该已编码数据。然后,当需要使用存储信息时或当需将已编码数据解码时,可存取此一标识符。
应了解,当数据已处于一较佳的或所期望的数据样式时,变换器218可选择不对该数据进行编码。换言之,并非所有通过变换器218的数据均得到变换。当一数据样式未经变换器218变换时,在将数据存储到非易失性存储器222中之前,变换器218亦可不将任何符号或位附加至、预先考虑至、并入或插入到该数据样式中,这是因为基本上不需要用于指示如何重新变换该数据样式的位。或者,变换器218可将用于指示数据样式已经过变换器218处理但未进行变换的位附加至、预先考虑至、并入或插入到一数据样式中。
在数据经过变换器218处理后,经处理的数据一般存储到非易失性存储器222中。如在下文中所更详细阐述,在一实施例中,可将通过变换器218的已编码数据读入到缓冲器210中,以在实施存储作业之前,可由变换器218对变换后的数据至少实施另一次变换,以进一步变换符号密度,例如状态密度。变换可包括校平过程,该等校平过程可设置用于减小一或多种符号在一数据样式中出现的频率、或者增加一或多种符号在该数据样式中出现的频率。校平过程亦可设置用于既减小一或多种符号在一数据样式中出现的频率、又增加一或多种符号在该数据样式中出现的频率。
如前文中所述,一非易失性存储系统可具有多于一个相关变换器。图2c是根据本发明一实施例,一主机与一非易失性存储系统进行通信的示意图,该非易失性存储系统包括复数个变换器。一非易失性存储系统202″与一主机206进行通信,以使主机206可向系统202″提供数据值。主机206可向一可选的第一变换器280提供数据,例如“原始”数据或未经变换的数据,该第一变换器280可利用基本上任何适当的变换演算法对数据进行变换。适当的变换演算法可包括,但不限于:一预先确定的变换演算法、一基于使用一随机数字产生器来识别一适当变换的变换演算法、或者一旋转变换演算法。然后,可将经可选的第一变换器280处理的数据提供给缓冲器210和一统计信息产生器214。
缓冲器210设置用于在由变换器218变换数据之前对数据进行临时存储。统计信息产生器214对数据进行分析或缩减,以产生统计信息,这些统计信息用于确定变换器218将使用的变换。在一实施例中,统计信息产生器214设置用于确定在数据(即由可选的第一变换器280处理的数据)中每种符号所出现的次数量。统计信息产生器214亦可设置用于确定每种符号相对于整个数据流出现的总百分比。
变换器218使用由统计信息产生器214产生的统计信息将数据编码成一较佳的数据样式。在所述实施例中,变换器218亦可将已编码数据提供给一第二可选变换器282,该第二可选变换器282可利用基本上任何未基于由统计信息产生器214产生的统计信息的变换对已编码数据进行变换。亦即,变换器218可将已编码数据提供给第二可选变换器282,第二可选变换器282可利用一传统的变换方法对已编码数据进行进一步变换。第二可选变换器282可将变换后的数据存储到一非易失性存储器222中,该非易失性存储器222可包括存储单元或存储块。应了解,非易失性存储系统202″中可包括第一可选变换器280和第二可选变换器282中的一个或同时包括两者。
图3a是根据本发明一实施例,一主机与一非易失性存储系统进行通信的示意图,其中,在存储数据之前可对数据实施多次变换。类似于图2a中的非易失性存储系统202,一非易失性存储系统302包括一缓冲器310、一变换器318、一统计信息产生器314和一非易失性存储器322。非易失性存储器322通常包括其中可存储数据的存储块或存储单元。系统302与一主机306或一源进行通信,以使主机306可向系统302内提供数据值或信息。
主机306将符号形式的数据提供给缓冲器310和统计信息产生器314。尽管是由主机306向统计信息产生器314提供数据,但在一实施例中,可由缓冲器310向统计信息产生器314提供数据,如图3b非易失性存储系统302′中所示。返回图3a,缓冲器设置用于对数据进行临时存储,例如,缓冲器310可在由变换器318变换数据之前用作数据的一中间停留区。统计信息产生器314可根据该数据产生统计信息,该统计信息有效地用于标识一将由变换器318用来处理数据的合适的变换。如所属技术领域的技术人员所了解,虽然所产生的统计信息可基本上为任何适当的信息,但可标识一数据样式中特定符号或状态的密度的统计信息可能尤其有用。
变换器318可利用由统计信息产生器314根据数据产生的统计信息将数据编码为一较佳的数据样式。在某些情况下,可使用多次变换来获得一可有效地存储到非易失性存储器322中的较佳数据样式,即便该数据样式可仅通过一次变换来获得。举例而言,由于电路考虑因素、功率考虑因素、设计考虑因素和速度考虑因素的任一组合,多次变换可能优于单次变换。相应地,变换器318可将变换后的数据提供给缓冲器310和统计信息产生器314。然后,统计信息产生器314可根据经变换的数据产生统计信息,变换器318可利用该统计信息对数据进行进一步变换。当经过变换器318处理的数据得到最终编码以使相关的数据样式成为一较佳情形时,将该数据连同用于标识在创建存储于非易失性存储器322中的数据样式时所曾使用的变换的位一起存储到非易失性存储器322中。在一实施例中,基本上包含用于对变换后的数据进行完全解码所需信息的信息可在一初始变换期间存储到非易失性存储器322中,例如,与所有变换相关的信息基本上仅可在进行初始变换时存储。
图4a是一过程流程图,其图解说明在本发明一实施例中与将一主机所提供的数据有效地存储到非易失性存储器中相关的步骤。一存储数据的过程400开始于步骤404,在步骤404中,(例如)由一诸如图2a中所示非易失性存储系统202或图3a中所示非易失性存储系统302的非易失性存储系统从一主机获得数据。在从主机获得数据后,在步骤408中对该数据进行分析。对从主机获得的数据进行分析可包括,但不限于:产生关于该数据中特定符号或状态的出现密度百分比的统计信息。
数据在步骤408中经过分析后,在步骤412中进行变换。在所述实施例中,根据在步骤408中所实施的分析来有效地变换数据。举例而言,如果通过分析确定出数据中特定符号或状态出现的密度和频率高于期望值,则可利用分析结果,以将所选的变换设置成减小彼等符号或状态的密度。应了解,当数据已呈一较佳情形的格式时,可不必对数据进行变换。
一般而言,当数据在步骤412中进行变换时,将产生一新数据样式。为使该新数据样式能够得到解码或“解除变换”,以便可有效地重新创建从主机获得的原始数据样式,可将一系列位预先考虑至、附加至或并入该新数据样式中。该一系列位可设置用于规定对原始数据样式进行编码时所曾使用的变换,或者规定一可用于将该新数据样式解码成原始数据样式的合适的逆变换。
在步骤416中,确定数据变换是否完成。亦即,确定在步骤412中实施的变换是否有效地创建了一可得到有效存储的数据样式。如果确定该变换尚未完成,则通常表明:在变换后的数据样式中至少一种符号或状态的出现频率过高或不够高。由此,可将变换后的数据样式至少再进行一次变换。相应地,过程流程从步骤416前进到步骤420,在步骤420中对变换后的数据进行分析,以产生关于已变换数据的统计信息。然后,在步骤424中,根据分析结果来变换该变换后的数据。当该变换后的数据在步骤424中得到变换后,过程流程返回到步骤416,在步骤416中确定该变换是否完成。
如果在步骤416中确定已将数据成功变换为一较佳情形,则表明该数据无需再实施额外的变换。此后,在步骤428中,将变换后的数据存储在非易失性存储器中,且有效存储数据的过程完成。
另一种用于将一主机所提供数据存储到非易失性存储器中的合适的方法显示在图4b中。图4b是一过程流程图,其图解说明根据本发明一实施例,与另一种将一主机所提供数据有效地存储到非易失性存储器中的方法相关的步骤。一存储数据的过程400′起始于步骤404′,在步骤404′中从一主机获得数据。在从该主机获得数据后,在步骤408′中对该数据进行分析。如前文所述,对从主机获得的数据进行分析可包括:产生关于该数据中特定符号或状态的出现密度百分比的统计信息。
数据在步骤408′中经过分析后,在步骤412′中进行变换,例如,利用步骤408′中所实施的分析的结果进行变换。当数据在步骤412′中进行变换时,通常会产生一新数据样式。为使该新数据样式能够得到解码或“解除变换”以便可有效地重新创建从主机获得的原始数据样式,可将一系列位并入(例如,预先考虑至)该新数据样式中。所附加的该一系列位可设置用于规定在对原始数据样式进行编码时所曾使用的变换,或者规定可用于将该新数据样式解码成原始数据样式的合适的逆变换。
在步骤416′中,确定在步骤412′中实施的变换是否有效地创建了一可有效得到存储的数据样式。如果确定出该变换尚未完成,则通常表明:在该变换后的数据样式中至少一种符号或状态的出现频率过高或不够高。由此,可将该变换后的数据样式至少再进行一次变换。相应地,过程流程从步骤416′前进到步骤424′,在步骤424′中,对变换后的数据进行变换。当该变换后的数据在步骤424′中得到变换后,过程流程返回到步骤416′,在步骤416′中确定该变换是否完成。如果在步骤416′中确定已将数据成功变换为一较佳情形,则表明该数据无需再实施额外的变换。此后,在步骤428′中,将变换后的数据存储在非易失性存储器中,且有效存储数据的过程完成。
编码为一相对较佳情形、然后存储到非易失性存储器中的数据可有效地得到存储。例如,与存储该数据相关的时间相对短,且存储该数据所消耗的功率相对低。更具体而言,对基本上所有所存储已编码数据情形而言,与存储该已编码数据相关的时间及存储该已编码数据的功率要求可保持恒定,因为即使较不佳的情形亦可变换为相对较佳的情形。另外,由于事实上不再存储较不佳情形,亦即,将较不佳情形存储为已变换成较佳情形的数据,故基本上不需要使用为存储较不佳情形所实际需要的电路。
在拟遵照一来自一主机的命令从一非易失性存储器获得已编码数据时,该已编码数据在提供给该主机之前通常得到解码。此解码作业一般是在与该非易失性存储器相关的非易失性存储系统内进行。参考图5,下文将根据本发明来阐述一非易失性存储系统的一实施例,该非易失性存储系统包括一用于对编码数据进行解码的变换器。一主机506与一非易失性存储系统502进行通信,以使主机506与系统502之间可交换数据或信息。当主机506试图从与系统502相关的一非易失性存储器522检索数据时,将已由一变换器处理(例如,由图3中变换器318编码)的数据读入变换器518中并提供给一变换信息处理器515。
变换信息处理器515通常从经处理的数据中读取信息,以确定为将经处理的数据解码而将由变换器518实施的一合适的变换。如上文所述,在存储变换后的数据时,该变换后的数据存储带有表明如下内容的信息:在变换该数据时所曾使用的变换,或可用于逆向进行在变换该数据时所曾使用的变换的逆变换。此后,变换信息处理器515研究随已编码数据存储的信息,例如,预先考虑到一经处理的数据样式上的信息,并有效地标识一拟由变换器518用于对已编码数据进行解码的合适的逆变换。在已编码数据得到解码,例如,在已编码数据恢复到一原始状态后,将已解码数据提供给系统502的一缓冲器510。此后,缓冲器510将已解码数据提供给主机506。
在一实施例中,例如在一其中将标识一合适的逆变换的信息预先考虑到经处理的数据样式的实施例中,可基本上省去缓冲器510。当将标识一合适的逆变换的信息预先考虑到经处理的数据样式中时,在将经处理的数据样式读入变换器518之前,事实上即已知晓该合适的逆变换。因此,由于将标识一合适的逆变换的信息预先考虑到经处理的数据中,所以在读入经处理的数据之前,变换器518将事实上知晓如何实施一逆变换。因此,在将经处理的数据提供给变换器518之前,事实上不需要先对经处理的数据进行缓冲,这是因为在从非易失性存储器522读取经处理的数据之前,可根据预先考虑的信息识别出合适的逆变换。
在另一实施例中,一变换器可将已解码数据直接提供给一主机。图6是根据本发明一实施例,一主机及一非易失性存储系统的示意图,该非易失性存储系统包括一向该主机直接提供已解码数据的变换器。在一主机606请求来自一非易失性存储系统602的信息时,系统602的一非易失性存储器622将经处理的(例如,经编码的)数据提供给一系统602的一缓冲器610和一变换信息处理器615。变换数据处理器615读取与从非易失性存储器622接收的经处理的数据相关的符号,该等符号指示在处理经处理的数据时所曾使用的变换,或指示适于将经处理的数据恢复到其原始格式或已解码格式的合适的逆变换。
变换信息处理器615将信息提供给变换器618,以使通过缓冲器610从非易失性存储器622接收经处理的数据的变换器618可逆向进行任何与经处理的数据相关的变换。亦即,变换器618利用由变换信息处理器615提供的信息将存储在非易失性存储器622中的已编码数据进行解码。在变换器618将该已编码数据进行解码后,将已解码数据提供给主机606。
如上文中关于图3所述,为满足与一非易失性存储器相关的存储要求,可对数据实施多次变换,以便可将数据编码为一较佳情形。亦即,可对数据实施多于一次变换,以将其变换为一视为可接受的格式,例如,以有效地确保与数据相关的存储元件或单元处于任一单一逻辑状态的百分比小于一最大允许百分比。当利用多次变换对数据进行变换时,通常利用多次逆变换将变换后的数据解码或者将变换后的数据恢复至其原始格式,即未经变换的格式。
图7是根据本发明一实施例,一主机及一非易失性存储系统的示意图,该非易失性存储系统包括一可在将已解码数据提供给该主机之前利用多次迭代进行数据解码的变换器。响应于一来自一主机706的对存储在一非易失性存储系统702中的信息的请求,系统702的一非易失性存储器722将数据(例如,已编码数据)提供给系统702的一变换器718和一变换信息处理器715。变换信息处理器715读取与接收自非易失性存储器722的已编码数据相关的用于指示以下内容的位:在处理已编码数据时所曾使用的变换,或适于将已编码数据恢复到其原始格式或经解码格式的合适的逆变换。在所述实施例中,指示相关的变换或逆变换的符号亦可包含指示实施变换所曾使用的顺序的信息,或者实施逆变换所拟使用的顺序的信息。另外,该等符号可包括关于所曾实施的变换次数的信息。
变换信息处理器715将信息提供给变换器718,以使变换器718可对已编码数据实施一第一次逆变换。由变换信息处理器715提供给变换器718的信息使变换器718能够确定一适于对已编码数据实施的合适的逆变换。在变换器718对已编码数据实施一第一次逆变换后,变换器718向一缓冲器710提供已至少部分解码的数据。
如果拟对已部分解码的数据实施额外的变换,则缓冲器710将已部分解码的数据提供给变换器718,且视需要提供给变换信息处理器715。在存储在非易失性存储器722中的已编码数据完全解码后,缓冲器710将已解码数据提供给主机706。应了解,用于指示对数据进行编码所实施的变换或可用于将已编码数据解码的逆变换的符号通常由变换器718从提供给主机706的数据样式中除去。
一般而言,与将已编码数据进行解码相关的步骤可变化很大。参考图8,下文将根据本发明一实施例说明一种将已编码数据解码的方法。一过程800起始于步骤804,在步骤804中,从一非易失性存储器,例如从一作为总存储系统之一部分的非易失性存储器获得数据。具体而言,通常在从一主机接收到一请求已编码数据的请求时,将已编码数据从非易失性存储器读入一变换器或一缓冲器。
在从非易失性存储器804获得数据后,在步骤808中根据变换信息对该数据进行变换。在所述实施例中,对存储在非易失性存储器中的数据进行一逆变换。如前文中所述,通过读取随非易失性存储器中所存储数据一起存储的符号,可确定对该数据实施的逆变换。
在步骤812中确定数据变换是否完成。亦即,确定在步骤804中获得的数据是否已变换回其原始格式,即数据在为进行存储而实施变换之前的格式。如果确定该数据变换已完成,则表明不需进行额外的逆变换来将数据完全解码。换言之,表明该数据已得到解码。由此,在步骤816中将已解码数据提供给主机,且数据解码的过程完成。
或者,如果在步骤812中确定数据变换尚未完成,则表明在数据恢复其原始格式之前,需对数据实施至少一次额外的逆变换。因此,过程流程从步骤812移动到步骤820,在步骤820中,根据随该数据一起存储的变换信息再次变换该已部分变换的数据,即已部分解码的数据。在完成对已部分变换的数据的变换之后,过程流程返回步骤812,在步骤812中,确定是否已完成对在步骤804中获得的数据的变换。
如前文中所述,一变换器对输入数据进行处理,例如编码,以创建该输入数据的一输出数据版本。变换器通常可利用任何适当的变换或变换演算法对输入数据进行处理。图9a是一根据本发明一实施例用于对数据进行编码的变换器的示意图。一变换器918(其可以是图2a中变换器218或图3a中变换器318的表示形式)设置为从一主机接受输入930。变换器918对输入930进行处理并产生输出934,输出934通常是输入930的表示形式。在一实施例中,输入930可设置成一可视为存储效率相对低的第一数据格式。当输入930为一第一格式时,变换器918可对输入930进行处理,以使输出934实际上成为输入930的一经过变换或编码的版本。如前文中所述,输出934除为输入930的一经过编码的表示形式外,通常还包括用于指示在产生输出934时所用变换的信息。该信息可存储在单元或额外的符号中,例如存储在两个单元或两个额外的符号中,这些存储单元或符号事实上附加到输出934中含有输入930的已变换版本的存储单元中。
变换器918通常可校平-例如减小或增大-基本上任何符号的密度。举例而言,变换器918可校平具有最大密度的符号或逻辑状态,以减小彼符号的密度。在一实施例中,可利用具有最小密度的符号来校平具有最大密度的符号,亦即,通过增大呈未编码格式的具有最小密度的符号的密度,可实现具有最大密度的符号的校平。在将经变换的输出存储到(例如)一非易失性存储器之前,可利用多次变换或校平过程来获得每种符号的所期望密度。据观察,在某些系统中,将一逻辑状态校平以使任何符号的出现时间均不大于约50%的时间,会将性能速度提高约5%。
图9b中显示一校平演算法的一实例。具体而言,图9b是一根据本发明一实施例,与图9a中编码变换器918相关的变换的示意图。如图中所示,输入930′中密度最大的符号标记为符号“D”,而输入930′中密度最小的符号标记为符号“S”。在所述实施例中,密度最大的符号和密度最小的符号是有可能与输入930′相关的十六种符号中的两种。为便于论述,图中仅主要显示符号“D”和“S”。然而,应了解,其他符号可出现于与输入930′相关的整个数据流中的基本上任何位置上。换言之,其他符号可出现在与输入930′相关的数据流之前、之后或插入到该数据流内。为进行图解说明起见,尽管符号“F”和“G”在输入930′中比符号“S”出现得更为频繁,但在与输入930′相关的数据流中显示每个符号“F”和“G”仅出现了一次。在所述实施例中,未实施涉及到使用符号“F”和“G”的校平。因此,变换器918′实际上未对符号“F”和“G”的出现进行变换。
虽然输入930′是一有序的数据流,亦即,其是一串行提供给编码变换器918′的数据流,但该数据流亦可以一无序格式提供。当该数据流以一无序格式提供时,可修改与编码变换器918′相关的过程,以变换该无序数据流。
输入930′提供给编码变换器918′,编码变换器918′设置用于利用符号“S”来校平符号“D”。亦即,编码变换器918′执行一通过使用符号“S”会来减小符号“D”的密度的变换演算法。在所述实施例中,编码变换器918′使首次出现的符号“D”或“S”保持相同。具体而言,在符号“D”和“S”之间,无论哪个符号首先出现在输入930′中,都将编码为相同的符号。所有随后出现的符号“S”都编码为与先前最近的编码符号“D”或“S”相同的符号。例如,如果先前最近的符号已编码为符号“S”,则将当前符号“S”编码为符号“S”;而如果先前最近的编码符号已编码为符号“D”,则当前符号“S”编码为符号“D”。所有随后出现的输入符号“D”情形均以与先前最近出现的编码符号相反的方式进行编码。举例而言,如果先前最近的符号已编码为符号“S”,则当前的符号“D”编码为符号“D”;如果先前最近的符号已编码为符号“D”,则当前的符号“D”编码为符号“S”。
如图所示,输出934′为输入930′的一经校平的表示形式,其包含的符号“D”的出现次数变少。换言之,输出934′中符号“D”的密度减小。应了解,虽然图中显示符号“S”的密度增加,但可通过利用另一符号校平符号“S”来减小符号“S”的密度。亦即,在输出934′中,符号“S”可标识为具有大于所期望密度的密度,且可通过将输出934′作为一新输入提供给编码变换器918′,利用一具有一更小密度的不同符号或一稀疏符号实施一第二次变换来校平符号“S”。
对于一其中存在16种状态或符号的实施例,最多可有约240种变换演算法,这些演算法可有效地用于校平输入918′中密度最大和最小的符号。在此一实施例中,一变换可涉及校平一单对符号,且与输入930′相关的密度最小的符号在该变换之后所出现的时间不少于约6.67%。变换器918′可用于校平符号,以使在经变换的数据样式中不会出现超过约50%的时间的符号。举例而言,如图所示,符号“D”可利用符号“S”进行校平,以使输出934′中符号“D”和符号“S”出现的时间均不超过约50%。
变换器918′亦可用于通过(例如)顺序性地实施多次变换对数据进行顺序性地编码。当对数据进行顺序性地编码时,变换器918′可利用一密度最小的状态或符号来校平一密度最大的状态或符号。在一已编码数据集934′形成后,变换器918′可利用新的最稀疏的符号或已编码数据中最稀疏的符号来校平新的密度最大的符号或已编码数据中密度最大的符号。在一有16种符号的实施例中,当进行两个顺序性的校平过程后,在所完成的变换中任何符号出现的时间均不超过约50%。在一实施例中,当进行两个顺序性的校平过程后,变换器918′可利用新的最稀疏的符号校平新的密度最大的符号,即在经两次编码后的数据中密度最大的符号和最稀疏的符号。此一第三次变换的结果是,在所完成的变换中任何符号出现的时间不超过约25%。
变换器918′可设置为基本上同时(即并行)校平至少两种密集的符号。每当通过变换器918′期间,变换器918′可设置用于利用一最稀疏的符号来校平一密度最大的符号,同时利用一第二最稀疏的符号来校平一第二最大密度的符号。例如,如上文中所述,当利用一密度最小的符号校平一密度最大的符号时,在已编码数据或输出934′中任何符号出现的时间不超过约50%。然而,当变换器918′对数据进行顺序性地编码以便在第二次通过变换器918′期间,利用已编码数据中最稀疏的符号校平已编码数据中密度最大的符号、同时利用已编码数据中第二最稀疏的符号校平已编码数据中第二最大密度的符号时,在经过两次编码后的数据中任何符号出现的时间不超过约25%。
如上述实例所示,增加与对一组数据实施重复变换相关的额外复杂性,通常会使一最大符号密度进一步减小。然而,与上述减小符号最大密度的过程相关的复杂性可能会影响一存储作业的总体性能,该影响可达到实际上可能会损害与增加校平度相关的优点的程度。该复杂性可与为完成多次变换所需的额外计算时间、额外电路或额外功率相关。因此,在与校平或变换过程相关的复杂性与存储优点之间可存在折衷。另外,在为实现并行或基本上同时的变换所需的逻辑(例如电路)成本与为顺序性地实施多次变换所需的时间之间亦可存在折衷。
当数据经过编码或校平后,在请求检索所存储的已编码数据时,已编码数据通常变为一解码变换器的输入。图10a是一根据本发明一实施例对数据进行解码的变换器的示意图。一解码变换器1018接受一输入1030,输入1030通常由一诸如图9a中编码变换器918的编码变换器进行处理,例如,编码或校平。在一实施例中,解码变换器1018和图9a中的编码变换器918可为一与一非易失性存储系统相关的总变换器之一部分。解码变换器1018对输入1030进行解码,以产生输出1034。一般而言,输出1034的格式与提供给一编码变换器的输入(如图9a中的输入930)的格式相同。
参照图10b,下文将根据本发明一实施例来阐述一解码变换器,该解码变换器适于有效地反演由图9b中的编码变换器918′实施的编码。已由图9b中的编码变换器918′编码的输入1030′提供给解码变换器1018′。解码变换器1018′设置为利用通过读取输入1030′中的符号(例如插入到输入1030′中的两个符号,其标识创建输入1030′所用的变换或对输入1030′进行解码所用的一合适的逆变换)而获得的信息,来创建输出1034′。
在所述实施例中,解码变换器1018′并不改变首次出现的符号“D”或符号“S”。解码变换器1018′设置为:在输入1030′中,如果在一当前出现的符号“S”之前所出现的一符号“S”比所出现的一符号“D”更近,则解码变换器1018′将基本上所有出现的符号“S”均解码为符号“S”。亦即,如果输入1030′中先前更近的符号是符号“S”,则将当前出现的符号“S”解码为符号“S”。否则,将当前出现的符号“S”解码为符号“D”,除非当前出现的符号“S”是首次出现且其出现在一第一次出现的符号“D”之前,在这种情况下,将当前出现的符号“S”解码为符号“S”。
解码变换器1018′亦设置为:如果符号“D”比符号“S”更近地位于一当前出现的符号“D”之前,则将该当前出现的符号“D”解码为符号“S”,而如果符号“S”更近地位于当前出现的符号“D”之前,则将该当前出现的符号“D”解码为符号“D”。如果第一次出现的符号“D”出现在输入1030′中所出现的任何符号“S”之前,则将该第一次出现的符号“D”解码为符号“D”。
虽然数据可变换为使一特定符号或状态的最大密度最小化,但数据亦可变换为有效地确保每种符号或状态均具有一最小密度。举例而言,在一其中符号为“1”或“0”的二进制系统中,可利用图9b中的变换器918′对数据进行变换,以使经变换后的数据中符号“1”和符号“0”的百分比均大于一约为33%的最小值。
尽管上文仅阐述了本发明的几个实施例,但应了解,也可以许多种其他特定形式来实施本发明,此不会背离本发明的精神或范围。举例而言,尽管上文将对数据进行编码和解码的过程一般性地阐述为在一与一主机系统通信的存储装置上进行,但编码过程和解码过程中的任一过程或两者亦可在该主机系统上进行。换言之,一主机系统可设置用于产生关于拟存储数据的统计信息,并在将经变换的数据存储到一存储装置上之前根据该统计信息将该数据变换为一不同的格式。或者,一主机系统可设置为从一存储装置读取已编码数据、确定一用于对该数据进行解码的合适的变换,然后对该数据进行解码。
本发明通常可对任何合适的存储装置实施。如前文中所述,合适的存储装置可包括:PC卡、CompactFlash卡、多媒体卡及安全数字卡。其他合适的存储装置可包括,但不限于:智能媒体(SmartMedia)卡和记忆棒(Memory Stick)卡。
在一实施例中,一主机可产生一数据样式的统计信息,然后将该数据样式及统计信息提供给一存储装置。当该主机产生统计信息时,该存储装置可将该数据样式变换为一较佳格式而不需产生任何统计信息。亦即,当该主机产生与一数据样式相关的统计信息时,一存储装置可仅使用彼等统计信息来变换该数据样式。
如前文中所述,可对一给定的数据集或样式实施多次变换,以将该数据集变换为一合适的格式进行存储。在一实施例中,在完成多次变换中的每次变换后,一统计信息产生器可对各变换或各中间变换进行研究或处理,以确定为创建一可有效存储的格式,是否需要再进行额外的变换。
虽然上文中是将一对数据进行编码的变换器与一对数据进行解码的变换器分别进行阐述,但应了解,一单个变换器通常既可对数据进行编码,又可对数据进行解码。亦即,一非易失性存储系统可包括一既具有数据编码功能、又具有数据解码功能的单个变换器。同样地,一统计信息产生器和一变换信息处理器可为一单个处理器的一部分,该单个处理器设置为既确定与待变换的数据相关的统计信息,又有效地确定已变换数据是如何得到变换的。
对与基本上任一非易失性存储系统相关的已变换数据均可实施多次逆变换。换言之,尽管在本文中将多次逆变换阐述为适用于在一其中将数据从一非易失性存储器读入一变换器、然后读入一缓冲器的系统中变换数据,但亦可在一其中已变换数据在由一变换器进行处理之前提供给一缓冲器的系统中实施多次逆变换。
尽管上文中是阐述为使数据得到更有效存储而实施数据变换以自较不佳的数据样式或边际情形有效地创建较佳或更常见数据样式,但应了解,亦可为了许多其他的目的而进行数据变换来创建较佳的数据样式。亦即,可为了基本上任何合适的目的而对一数据集中出现的符号实施校平。举例而言,对一拟从一个位置传输到另一位置的数据样式内的状态进行校平可使该传输过程更有效地进行,且亦可使接收过程更有效地进行。此等传输过程可包括在一网络内进行的有线传输或在一网络内进行的无线传输。
上文中已例如参照图9b将一变换阐述为适用于利用一状态来校平另一状态。如上文中所述,在拟减小一种以上的状态时,可使用多次变换。应了解,通常可将单次通过此一变换器设置为减小多于一种状态。举例而言,可在单次通过此一变换器中校平两个或更多个符号或状态对。当在单次通过此一变换器中校平多于一个状态对时,为完成对数据的一给定变换或校平而需通过变换器的总次数可减少。
一般而言,与数据编码和解码相关的步骤可变化很大。可增加、去除、修改及重排各步骤,此不会背离本发明的精神或范围。例如,在一编码或变换过程中,对于一如前文中所述在分析原始的或未经变换的数据时即确定为完成总的数据变换而需使用的变换的实施例中,基本上可以省去分析已变换数据的步骤。或者,分析已变换数据的步骤可居于确定一总体变换是否已完成之前。
在上文中已将对一数据集内的状态进行变换或校平阐述为适用于将该数据集的已变换版本内任一状态的最大密度基本最小化,或者适用于将该数据集的已变换版本内任一状态的最小密度基本最大化。亦可对各状态实施校平来使一特定状态的最大密度基本最小化、同时使另一状态的最小密度基本最大化。应了解,亦可对各状态实施校平来有效地确保一数据集的已变换版本内所有状态的密度均落入一给定范围内。换言之,可将各状态校平为:在一数据集的已变换版本内,任一状态的密度均不超过一上限阈值,且任一状态的密度均不下降到低于一下限阈值。虽然不同状态的上限阈值可基本上相同,且不同状态的下限阈值可基本上相同,但不同状态的各阈值亦可不同。
在上文中,将确定一数据样式或数据集内各特定状态的密度阐述为确定该数据样式内各特定状态的一百分比。在一实施例中,例如在一其中数据样式的长度基本上固定的实施例中,确定各特定状态的密度可基本上仅涉及计数这些特定状态所出现的次数。因此,确定各特定状态的密度通常可涉及使一数值(如一计数值或一百分比)与每个状态所出现的次数相关联。
虽然对一数据集实施的变换或校平的量通常可选择为使该数据集的一已变换版本内的状态可满足所期望的最大和最小密度,但变换或校平的量亦可根据其他标准进行选择,此不背离本发明的精神或范围。举例而言,校平的量可选择为使计算开销不超过一定的量。将校平量选择为使计算开销不超过一定的量可显著提高数据存储的效率,而不会显著影响与变换和存储数据相关的总体系统的性能。尽管一规定计算开销不超过一特定水平的实施例可能会稍微损害一变换过程,例如,一特定状态的最大密度可能稍高于较佳情况,但如果总体系统的性能保持在一特定水平,则上述损害可视为是可接受的。因此,应将这些实例视为举例说明性而非限制性,并且本发明并非仅限于本文所给出的详细阐述,而是可在随附权利要求范围内进行修改。