CN1701513A - 数据存储系统内的符号频率校平 - Google Patents
数据存储系统内的符号频率校平 Download PDFInfo
- Publication number
- CN1701513A CN1701513A CNA038233568A CN03823356A CN1701513A CN 1701513 A CN1701513 A CN 1701513A CN A038233568 A CNA038233568 A CN A038233568A CN 03823356 A CN03823356 A CN 03823356A CN 1701513 A CN1701513 A CN 1701513A
- Authority
- CN
- China
- Prior art keywords
- information
- data format
- data
- symbol
- density
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F12/00—Accessing, addressing or allocating within memory systems or architectures
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M5/00—Conversion of the form of the representation of individual digits
-
- G—PHYSICS
- G11—INFORMATION STORAGE
- G11C—STATIC STORES
- G11C16/00—Erasable programmable read-only memories
- G11C16/02—Erasable programmable read-only memories electrically programmable
- G11C16/06—Auxiliary circuits, e.g. for writing into memory
- G11C16/10—Programming or data input circuits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
-
- H—ELECTRICITY
- H03—ELECTRONIC CIRCUITRY
- H03M—CODING; DECODING; CODE CONVERSION IN GENERAL
- H03M7/00—Conversion of a code where information is represented by a given sequence or number of digits to a code where the same, similar or subset of information is represented by a different sequence or number of digits
- H03M7/30—Compression; Expansion; Suppression of unnecessary data, e.g. redundancy reduction
- H03M7/40—Conversion to or from variable length codes, e.g. Shannon-Fano code, Huffman code, Morse code
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
- Compression, Expansion, Code Conversion, And Decoders (AREA)
- Read Only Memory (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Circuits Of Receivers In General (AREA)
- Signal Processing For Digital Recording And Reproducing (AREA)
Abstract
本发明揭示用于将数据变换为一可有效地存储于一非易失性存储器中的格式的方法和装置。根据本发明的一个方面,一种用于将一第一数据格式的信息存储到一存储系统中的方法包括:产生与该第一数据格式相关的统计信息,及利用该统计信息将该信息从该第一数据格式变换为一第二数据格式。在将该信息变换为该第二数据格式后,将该信息存储到一存储器中。将该第二数据格式的该信息存储到该存储器中包括:存储一标识一用于将该信息变换为该第二数据格式的变换的标识符。在一实施例中,与存储该第二数据格式的信息相关的成本小于或等于与存储该第一数据格式的信息相关的成本。
Description
技术领域
本发明大体而言涉及大容量数字数据存储系统。更具体而言,本发明涉及用于在一存储系统中自动实施符号或状态频率校平、以在该存储系统中存储基本上任何数据样式时均有效满足性能目标的系统和方法。
背景技术
目前,诸如闪速存储器存储系统等非易失性存储系统的应用日益广泛,这是因为此种存储系统的实体尺寸紧凑、而且非易失性存储器能够重复性再编程。闪速存储器存储系统紧凑的实体尺寸有利于此种存储系统用于各种日益流行的装置内。使用闪速存储器存储系统的装置包括,但不仅限于:数字照相机、数字摄像机、数字音乐播放机、手持式个人计算机及全球定位装置。闪速存储器存储系统内所包含的非易失性存储器重复编程的能力使人们能够使用和重复使用闪速存储器存储系统。
存储在一非易失性存储系统的一数据块中的数据集可实质上具有任何可能的数据值组合。一个含有“N”个符号且每一符号均可存储为“m”个可能值之一的数据块可具有“mN”个可能的数据值。考虑到所有可能的数据值均存储在一数据块中,存储系统的设计方式通常须使其满足所有可能数据值的性能目标,而对于最常存储的数据样式而言此可能并非最佳。亦即,为保证满足包括较不佳情形或不可能发生的情形在内的所有可能数据值或数据样式的性能要求,可能要牺牲与最常用或较佳数据值相关的性能。若考虑将所有可能的数据值存储在一存储系统的一数据块中,还可能导致相对复杂的设计问题、可靠性问题增大、功率消耗增加、成本升高。
在一数据块中可能存储的数据样式的数量可相对较大。甚至在一数据块中实质上仅可存储二进制状态时,有可能存储在该数据块中的数据样式的数量也会很大。对于一可存储一百个二进制位的数据块而言,实际上要安排该数据块存储2100个数据样式或情形。对一存储这一百个二进制位的存储系统的要求是由少量的较不佳情形来设定或限制,这些少量的较不佳情形可能需要专用电路来满足最低性能要求或可能消耗额外的功率。举例而言,在某些系统中,将一百个二进制位存储为“1”可能是一较不佳情形,因为与涉及到以“1”和“0”值的混合来存储一百个二进制位的更佳情形相比,其所需的存储系统更加昂贵。或者,一在存储较不佳或罕见情形时满足最低性能要求的存储系统可能会牺牲与存储更佳情形相关的性能水平。通过牺牲与存储较佳情形相关的性能水平来满足与存储较不佳情形相关的最低性能要求通常证明是低效的。
除(或代替)可能导致牺牲性能外,若考虑将所有可能的数据值都存储在一个存储系统的数据决中,通常会导致生产成本升高,这是因为与存储所有可能的数据值相关的电路成本可能较高。此种电路亦可能需消耗相对大的功率值。在数据存储及纳入额外的电路来实现较不佳情形的存储两方面而言,一存储所有可能数据值的存储系统亦可能不甚可靠。由于与为存储系统设计能使所有可能数据值得到存储的电路相关的设计问题,存储所有可能数据值这一需要还可能导致开发时间变长,此本身又可能导致存储系统可上市之前的设计至投产时间变长。
因此,人们期望具有一种使较不佳情形能够有效地存储在非易失性存储器中而基本不会牺牲与存储较佳情形相关的性能的系统。亦即,人们需要一种可有效地存储较不佳情形及较佳情形二者的方法和装置。
发明内容
本发明涉及一种用於将数据变换为一可有效地存储于一非易失性存储器中的格式的系统和方法。根据本发明的一个方面,一种用於在一存储系统中存储一第一数据格式的信息的方法包括:产生与该第一数据格式相关的统计信息,利用该统计信息将该信息从该第一数据格式变换为一第二数据格式。在该信息变换为该第二数据格式后,将该信息以第二数据格式存储到一存储器中。将该信息以第二数据格式存储到存储器包括:在该存储器中存储一标识符,该标识符指示或标识一用于将该信息从第一数据格式变换至第二数据格式的变换。知晓该标识符通常使人们能够将该信息从第二数据格式变换回第一数据格式。在一实施例中,与以第二数据格式存储信息相关的成本少于或等于与以第一数据格式存储信息相关的成本。
在另一实施例中,第一数据格式包括一第一符号的至少一次出现,且产生与该第一数据格式相关的统计信息包括确定该第一数据格式的该第一符号的密度。确定该密度可包括确定与该第一数据格式的第一符号的出现相关的百分比。在此一实施例中,利用统计信息将信息从第一数据格式变换为第二数据格式可涉及将信息从第一数据格式变换为第二数据格式,以减小信息中第一符号的密度。
需存储到一存储系统中的数据可能具有多种不同的格式。某些格式(例如逻辑状态或符号的组合)的存储效率可能比其他格式的存储效率低,这是因为某些格式可能允许较不佳的情形。对于较不佳的情形(例如,其中一种逻辑状态构成一组数据的绝大部分的情形)而言,如果其存储拟满足性能要求,则其可能需要专用电路或极大的功率需求来实现存储目的。另外,一满足较不佳情形的存储性能要求的存储系统可能会牺牲与存储更佳情形(例如,相对频繁出现的情形)相关的性能。通过在存储数据之前变换数据格式,例如,从一种较不佳情形变换为一种较佳情形,则由于将较不佳情形有效地存储为较佳情形,可有效地避免存储实际的较不佳情形。因此,可更有效地进行存储系统中数据的总体存储。另外,可降低与存储系统相关的成本,且可增强存储系统的可靠性。
根据本发明的另一方面,一种用于在一存储系统的一存储装置中检索以一第一数据格式存储的信息的方法包括:对第一数据格式的信息进行分析。对第一数据格式的信息进行分析包括:确定至少一种适用于将信息从该第一数据格式变换为一第二数据格式的合适的变换。该方法亦包括利用该合适的变换将信息从该第一数据格式变换为该第二数据格式。一与将信息以该第一数据格式存储到该存储装置中相关的成本不高于一与将该信息以该第二数据格式存储到该存储装置中相关的成本。在一实施例中,分析该第一数据格式的信息包括:读取该第一数据格式的信息的一段,以标识合适的变换。在另一实施例中,该存储系统与一主机系统进行通信,该方法进一步包括向主机系统提供变换后的该第二数据格式的信息。
根据本发明的又一方面,一种能够变换及存储数据的系统包括一主机系统和一存储装置。该存储装置介接该主机系统以从该主机系统获得设置成一第一数据格式的信息,并包括一存储器、一统计信息产生器和一变换器。该统计信息产生器产生与该第一数据格式相关的统计信息,该变换器利用该统计信息将该信息从该第一数据格式变换为一第二数据格式。该变换器还将该信息以该第二数据格式存储到该存储器中。在一实施例中,该第二数据格式的信息至少与该第一数据格式的信息同样容易地存储到该存储器中。
在一实施例中,该变换器将一标识符作为该第二数据格式的信息的一部分进行存储,该标识符实质上标识至少一种用于将信息从该第一数据格式变换为该第二数据格式的变换。在此一实施例中,该主机系统可包括一信息处理器和一第二变换器。此一信息处理器可读取该标识符,并与该第二变换器相协作,以标识至少一种用于将信息从该第二数据格式变换为该第一数据格式的合适的变换。应了解,该变换器和该第二变换器可为分立的变换器、并入一单个变换器中的变换器、或共享相同逻辑变换器、或者甚至为具有相同逻辑但构造为起不同作用的变换器。
在阅读以下详细说明并研究图式中的各图后,本发明的这些及其他优点即显而易见。
附图说明
结合附图并参阅下文说明,可最佳地了解本发明,附图如下:
图1a是一根据本发明一实施例,一包括一非易失性存储装置的通用主机系统的示意图。
图1b是根据本发明一实施例,一非易失性存储装置(例如图1a中的非易失性存储装置120)的示意图。
图2a是根据本发明一实施例,一包括一变换器的第一非易失性存储系统的示意图。
图2b是根据本发明一实施例,一包括一变换器的第二非易失性存储系统的示意图。
图2c是根据本发明一实施例,一包括一变换器的第三非易失性存储系统的示意图。
图3a是根据本发明一实施例,一主机与一第一非易失性存储系统进行通信的示意图,其中在存储数据之前对数据实施多次变换。
图3b是根据本发明一实施例,一主机与一第二非易失性存储系统进行通信的示意图,其中在存储数据之前对数据实施多次变换。
图4a是一根据本发明一实施例的过程流程图,其图解说明与一种将一主机提供的数据有效地存储到非易失性存储器中的方法相关的步骤。
图4b是一根据本发明一实施例分过程流程图,其图解说明与另一种将一主机提供的数据有效地存储到非易失性存储器中的方法相关的步骤。
图5是根据本发明一实施例,一非易失性存储系统的示意图,该非易失性存储系统包括一对已编码数据进行解码的变换器。
图6是根据本发明一实施例,一主机及一非易失性存储系统的示意图,该非易失性存储系统包括一向该主机直接提供已解码数据的变换器。
图7是根据本发明一实施例,一主机及一非易失性存储系统的示意图,该非易失性存储系统包括一可在将已解码数据提供给该主机之前利用多次迭代进行数据解码的变换器。
图8是一根据本发明一实施例的过程流程图,其图解说明与对已编码数据进行解码相关的步骤。
图9a是根据本发明一实施例,一对数据进行编码的变换器的示意图。
图9b是根据本发明一实施例,一与图9a中的编码变换器918相关的变换的示意图。
图10a是根据本发明一实施例,一对数据进行解码的变换器的示意图。
图10b是根据本发明一实施例,一解码变换器的示意图,该解码变换器适合将图9b中的编码变换器918′实施的编码进行反演。
具体实施方式
通过在存储数据之前变换数据格式,例如,从一较不佳情形变换为一较佳情形,则由于将一较不佳情形有效地存储为一较佳情形,从而可有效地避免存储实际上的较不佳情形。因此,可更有效地进行存储系统中数据的总体存储,这是因为存储较不佳情形所消耗的功率将通常不会大于存储较佳情形所消耗的功率,且可避免与存储较不佳情形相关的性能损失。另外,在一将较不佳情形存储为更佳情形的存储系统中,与数据存储相关的电路的复杂性可得到降低,例如,设计所花费的时间更短,且可在一定程度上更易于生产。亦即,可降低与功率耗用、性能损失、设计问题和生产问题中至少一项相关的总成本或成本因素。例如,可降低与功率消耗相关的成本、可降低性能损失或成本、可降低与设计复杂电路相关的成本及可降低生产成本。
当数据拟存储到诸如一非易失性存储装置的存储装置上时,主机系统可将该数据提供至该非易失性存储装置。在一实施例中,非易失性存储装置可有效地减少数据,以确定数据内所出现的逻辑状态和符号的相对密度,然后根据该相对密度选择一合适的变换来用于将数据变换为一有效存储格式。一符号可为一个位或实质上任何数量的位的组合。虽然一视为可有效存储的数据格式可视具体系统的要求而变化很大,但可有效存储的数据格式可包括:包含有实质上均匀分布的逻辑状态的格式;会将特定逻辑状态的最大密度最小化的格式;以及会将特定逻辑状态的最小密度最大化的格式。
首先参照图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将一变换阐述为适用于利用一状态来校平另一状态。如上文中所述,在拟减小一种以上的状态时,可使用多次变换。应了解,通常可将单次通过此一变换器设置为减小多于一种状态。举例而言,可在单次通过此一变换器中校平两个或更多个符号或状态对。当在单次通过此一变换器中校平多于一个状态对时,为完成对数据的一给定变换或校平而需通过变换器的总次数可减少。
一般而言,与数据编码和解码相关的步骤可变化很大。可增加、去除、修改及重排各步骤,此不会背离本发明的精神或范围。例如,在一编码或变换过程中,对于一如前文中所述在分析原始的或未经变换的数据时即确定为完成总的数据变换而需使用的变换的实施例中,基本上可以省去分析已变换数据的步骤。或者,分析已变换数据的步骤可居于确定一总体变换是否已完成之前。
在上文中已将对一数据集内的状态进行变换或校平阐述为适用于将该数据集的已变换版本内任一状态的最大密度基本最小化,或者适用于将该数据集的已变换版本内任一状态的最小密度基本最大化。亦可对各状态实施校平来使一特定状态的最大密度基本最小化、同时使另一状态的最小密度基本最大化。应了解,亦可对各状态实施校平来有效地确保一数据集的已变换版本内所有状态的密度均落入一给定范围内。换言之,可将各状态校平为:在一数据集的已变换版本内,任一状态的密度均不超过一上限阈值,且任一状态的密度均不下降到低于一下限阈值。虽然不同状态的上限阈值可基本上相同,且不同状态的下限阈值可基本上相同,但不同状态的各阈值亦可不同。
在上文中,将确定一数据样式或数据集内各特定状态的密度阐述为确定该数据样式内各特定状态的一百分比。在一实施例中,例如在一其中数据样式的长度基本上固定的实施例中,确定各特定状态的密度可基本上仅涉及计数这些特定状态所出现的次数。因此,确定各特定状态的密度通常可涉及使一数值(如一计数值或一百分比)与每个状态所出现的次数相关联。
虽然对一数据集实施的变换或校平的量通常可选择为使该数据集的一已变换版本内的状态可满足所期望的最大和最小密度,但变换或校平的量亦可根据其他标准进行选择,此不背离本发明的精神或范围。举例而言,校平的量可选择为使计算开销不超过一定的量。将校平量选择为使计算开销不超过一定的量可显著提高数据存储的效率,而不会显著影响与变换和存储数据相关的总体系统的性能。尽管一规定计算开销不超过一特定水平的实施例可能会稍微损害一变换过程,例如,一特定状态的最大密度可能稍高于较佳情况,但如果总体系统的性能保持在一特定水平,则上述损害可视为是可接受的。因此,应将这些实例视为举例说明性而非限制性,并且本发明并非仅限于本文所给出的详细阐述,而是可在随附权利要求范围内进行修改。
Claims (65)
1、一种用于在一存储系统中存储信息的方法,所述信息为一第一数据格式,该方法包括:
产生与所述第一数据格式相关的统计信息;
利用所述统计信息将所述信息从所述第一数据格式变换为一第二数据格式;及
将所述第二数据格式的信息存储到一与所述存储系统相关的存储器中,其中将所述第二数据格式的信息存储到所述存储器中包括将一标识符存储到所述存储器中,所述标识符指示一用于将所述信息从所述第一数据格式变换为所述第二数据格式的变换。
2、根据权利要求1所述的方法,其中所述第一数据格式包括一第一符号的至少一次出现,且产生与所述第一数据格式相关的所述统计信息包括:
确定所述第一数据格式的第一符号的一密度,其中确定所述密度包括确定一与所述第一数据格式的第一符号的出现次数相关的数值,所述数值可表示所述密度。
3、根据权利要求2所述的方法,其中利用所述统计信息将所述信息从所述第一数据格式变换为所述第二数据格式包括:
将所述信息从所述第一数据格式变换为所述第二数据格式,以减小所述信息中所述第一符号的密度。
4、根据权利要求1所述的方法,其中产生与所述第一数据格式相关的统计信息包括:
确定一所述第一数据格式的第一符号的一密度,其中确定所述密度包括确定一与所述第一数据格式的第一符号的出现次数相关的百分比。
5、根据权利要求4所述的方法,其中利用所述统计信息将所述信息从所述第一数据格式变换为所述第二数据格式包括:
将所述信息从所述第一数据格式变换为所述第二数据格式,以增加所述信息中所述第一符号的密度。
6、根据权利要求1所述的方法,其中在所述存储系统上接收所述第一数据格式的信息包括:
从一主机系统接收所述信息,所述主机系统与所述存储系统进行通信。
7、根据权利要求1所述的方法,其中至少一个与存储所述第二数据格式的信息相关的成本小于或等于至少一个与存储所述第一数据格式的信息相关的成本。
8、根据权利要求1所述的方法,其中所述存储系统用于存储所述第二数据格式的信息的功率小于或等于所述存储系统用于存储所述第一数据格式的信息的功率。
9、一种用于在一存储器中检索信息的方法,所述信息以一第一数据格式存储于所述存储系统的一存储器中,所述方法包括:
分析所述第一数据格式的信息,其中分析所述第一数据格式的信息包括确定至少一种合适的变换以用于将所述信息从所述第一数据格式变换为一第二数据格式;及
利用所述合适的变换将所述信息从所述第一数据格式变换为所述第二数据格式。
10、根据权利要求9所述的方法,其中利用与所述第二数据格式相关的统计信息对所述第二数据格式进行初始变换。
11、根据权利要求9所述的方法,其中分析所述第一数据格式的信息包括:
读取所述第一数据格式的信息的一段,其中所述段包含用于标识所述合适的变换的符号。
12、根据权利要求9所述的方法,其中所述存储系统与一主机系统进行通信,所述方法进一步包括:
将所述第二数据格式的已变换信息提供给所述主机系统。
13、根据权利要求9所述的方法,其中至少一个与将所述第一数据格式的信息存储到所述存储器中相关的成本不大于至少一个与将所述第二数据格式的信息存储到所述存储器中相关的成本。
14、根据权利要求9所述的方法,其中所述存储系统用于将所述第一数据格式的信息存储到所述存储器中的功率不大于所述存储系统用于将所述第二数据格式的信息存储到所述存储器中的功率
15、一种存储装置,其包括:
一存储器;
一输入接收器,所述输入接收器设置用于接收信息,所述信息设置为一第一数据格式;
一统计信息产生器,所述统计信息产生器设置用于产生与所述第一数据格式相关的统计信息;及
一变换器,所述变换器设置用于使用所述统计信息将所述信息从所述第一数据格式变换为一第二数据格式,所述变换器进一步设置用于将所述第二数据格式的信息存储到所述存储器中。
16、根据权利要求15所述的存储装置,其中与存储所述第二数据格式的信息相关的成本小于或等于与存储所述第一数据格式的信息相关的成本。
17、根据权利要求15所述的存储装置,其中所述统计信息产生器进一步设置用于通过确定一与所述第一数据格式的一第一符号的出现次数相关的数值来确定所述第一数据格式的第一符号的一密度,所述数值可表示所述密度。
18、根据权利要求17所述的存储装置,其中所述变换器进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以减小所述信息内所述第一符号的密度。
19、根据权利要求17所述的存储装置,其中,所述变换器进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以增大所述信息内所述第一符号的密度。
20、根据权利要求17所述的存储装置,其中所述变换器进一步设置用于随所述第二数据格式的信息存储一标识符,所述标识符设置用于大体上标识至少一个用于将所述信息从所述第一数据格式变换为所述第二数据格式的变换。
21、根据权利要求20所述的存储装置,其进一步包括一信息处理器,所述信息处理器设置用于读取所述标识符,所述信息处理器进一步设置用于与所述变换器相配合,以使所述变换器标识至少一个用于将所述信息从所述第二数据格式变换为所述第一数据格式的合适的变换。
22、根据权利要求21所述的存储装置,其中所述输入接收器设置用于介接一主机系统,且所述变换器进一步设置用于在所述变换器将所述信息从所述第二数据格式变换为所述第一数据格式后,将所述第一数据格式的信息提供给所述主机系统。
23、根据权利要求15所述的存储装置,其中所述输入接收器设置用于介接一主机系统,以从所述主机系统接收所述第一数据格式的信息。
24、根据权利要求15所述的存储装置,其中所述存储系统是一介接一主机系统的非易失性存储系统。
25、根据权利要求24所述的存储装置,其中所述非易失性存储系统可从所述主机系统移除。
26、根据权利要求24所述的存储装置,其中所述存储器是一非易失性存储元件。
27、根据权利要求24所述的存储装置,其中所述存储装置是一选自由一PC卡、一CompactFlash卡、一多媒体卡、一安全数字卡、一记忆棒卡及一智能媒体卡组成的群组中的卡。
28、根据权利要求24所述的存储装置,其中所述存储装置是一单芯片装置。
29、一种系统,其包括:
一主机系统;及
一存储装置,所述存储装置设置用于介接所述主机系统,以从所述主机系统获得设置为一第一数据格式的信息,所述存储装置包括一存储器、一统计信息产生器和一变换器,其中所述统计信息产生器设置用于产生与所述第一数据格式相关的统计信息,所述变换器设置用于使用所述统计信息将所述信息从所述第一数据格式变换为一第二数据格式,所述变换器进一步设置用于将所述第二数据格式的信息存储到所述存储器中。
30、根据权利要求29所述的系统,其中所述统计信息产生器进一步设置用于通过确定一与所述第一数据格式的一第一符号的出现次数相关的百分比来确定所述第一数据格式的第一符号的一密度。
31、根据权利要求30所述的系统,其中所述变换器进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以减小所述信息中所述第一符号的密度。
32、根据权利要求30所述的系统,其中所述变换器进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以增大所述信息中所述第一符号的密度。
33、根据权利要求29所述的系统,其中所述变换器进一步设置用于随所述第二数据格式的信息存储一标识符,所述标识符设置用于大体上标识至少一个用于将所述信息从所述第一数据格式变换为所述第二数据格式的变换。
34、根据权利要求33所述的系统,其中所述存储装置进一步包括一信息处理器,所述信息处理器设置用于读取所述标识符,所述信息处理器进一步设置用于与所述变换器相配合,以使所述变换器标识至少一个用于将所述信息从所述第二数据格式变换为所述第一数据格式的合适的变换。
35、根据权利要求34所述的系统,其中所述存储装置设置用于在所述变换器将所述信息从所述第二数据格式变换为所述第一数据格式后,将所述第一数据格式的信息提供给所述主机系统。
36、根据权利要求33所述的系统,其中所述主机系统包括一信息处理器和一第二变换器,所述信息处理器设置用于读取所述标识符,所述信息处理器进一步设置用于与所述第二变换器相配合,以使所述第二变换器标识至少一个用于将所述信息从所述第二数据格式变换为所述第一数据格式的合适的变换。
37、根据权利要求29所述的系统,其中所述存储系统是一非易失性存储系统。
38、根据权利要求37所述的系统,其中所述非易失性存储系统可从所述主机系统移除。
39、根据权利要求37所述的系统,其中所述非易失性存储系统嵌入于所述主机系统中。
40、根据权利要求37所述的系统,其中所述存储器是一非易失性存储元件。
41、根据权利要求29所述的系统,其中所述存储装置是一选自由一PC卡、一CompactFlash卡、一多媒体卡、一安全数字卡、一记忆棒卡及一智能媒体卡组成的群组中的卡。
42、根据权利要求29所述的系统,其中所述存储装置是一单芯片装置。
43、根据权利要求29所述的系统,其中所述主机系统设置用于捕获所述信息,并将所述信息以所述第一格式提供给所述存储装置。
44、根据权利要求43所述的系统,其中所述主机系统是一选自由一数字照像机、一视频照像机、一蜂窝式电话、一通信装置、一音频播放器和一视频播放器组成的群组中的系统。
45、根据权利要求29所述的系统,其中所述变换器进一步设置用于对所述信息实施一额外的变换,其中所述额外的变换基本上不使用所述统计信息。
46、一种存储装置,其包括:
用于存储信息的构件;
用于接收输入的构件,所述用于接收输入的构件设置用于接收所述信息,所述信息设置为一第一数据格式;
用于产生统计信息的构件,所述用于产生统计信息的构件设置用于产生与所述第一数据格式相关的统计信息;及
用于变换所述信息的构件,所述用于变换所述信息的构件设置用于使用所述统计信息将所述信息从所述第一数据格式变换为一第二数据格式。
47、根据权利要求46所述的存储装置,其中所述用于变换所述信息的构件进一步设置用于将所述第二数据格式的信息存储到所述用于存储所述信息的构件中。
48、根据权利要求46所述的存储装置,其中所述用于变换所述信息的构件进一步设置用于实施一额外的变换,所述额外的变换设置为不使用所述统计信息。
49、根据权利要求46所述的存储装置,其中与存储所述第二数据格式的信息相关的成本小于或等于与存储所述第一数据格式的信息相关的成本。
50、根据权利要求46所述的存储装置,其中与存储所述第二数据格式的信息相关的功率耗用量小于或等于与存储所述第一数据格式的信息相关的功率耗用量。
51、根据权利要求46所述的存储装置,其中所述用于产生统计信息的构件包括用于通过确定一与所述第一数据格式的一第一符号的出现次数相关的百分比来确定所述第一数据格式的第一符号的一密度的构件。
52、根据权利要求51所述的存储装置,其中所述用于变换所述信息的构件进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以减小所述信息中所述第一符号的密度。
53、根据权利要求51所述的存储装置,其中所述用于变换所述信息的构件进一步设置用于将所述信息从所述第一数据格式变换为所述第二数据格式,以增大所述信息中所述第一符号的密度。
54、根据权利要求46所述的存储装置,其中所述用于变换所述信息的构件进一步设置用于存储一与所述第二数据格式的信息相关的标识符,所述标识符设置用于大体上标识至少一个用于将所述信息从所述第一数据格式变换为所述第二数据格式的变换。
55、根据权利要求54所述的存储装置,其进一步包括用于处理所述信息的构件,所述用于处理所述信息的构件包括用于读取所述标识符的构件,所述用于处理所述信息的构件进一步设置用于与所述用于变换所述信息的构件相配合,以使所述用于变换的构件标识至少一个用于将所述信息从所述第二数据格式变换为所述第一数据格式的合适的变换。
56、根据权利要求55所述的存储装置,其中所述用于接收输入的构件设置用于介接一主机系统,且所述用于变换所述信息的构件包括用于在所述用于变换所述信息的构件将所述信息从所述第二数据格式变换为所述第一数据格式后,将所述第一数据格式的信息提供给所述主机系统的构件。
57、根据权利要求54所述的存储装置,其进一步包括:
用于处理所述信息的构件,所述用于处理所述信息的构件包括用于读取所述标识符的构件;及
用于变换所述信息的第二构件,其中所述用于处理所述信息的构件设置用于与所述用于变换所述信息的第二构件相配合,以使所述用于变换的第二构件标识至少一个用于将所述信息从所述第二数据格式变换为所述第一数据格式的合适的变换。
58、根据权利要求46所述的存储装置,其中所述用于接收输入的构件设置用于介接一主机系统,以从所述主机系统接收所述第一数据格式的信息。
59、根据权利要求46所述的存储装置,其中所述存储系统是一介接一主机系统的非易失性存储系统。
60、一种用于将数据从一第一格式变换为一第二格式的方法,所述方法包括:
确定一第一符号的一第一密度,所述第一密度与所述第一格式相关;
确定一第二符号的一第二密度,所述第二密度与所述第一格式相关,其中所述第一密度大于所述第二密度;及
利用所述第二符号校平所述第一符号,其中利用所述第二符号校平所述第一符号包括:创建所述第一符号的一第三密度,所述第三密度与所述第二格式相关,及创建所述第二符号的一第四密度,所述第四密度与所述第二格式相关,其中所述第三密度不大于所述第一密度。
61、根据权利要求60所述的方法,其中所述第四密度不小于所述第二密度。
62、根据权利要求60所述的方法,其中所述第二格式包括一指示符,所述指示符设置用于指示所述第一符号已使用所述第二符号校平。
63、一种用于将数据从一第一格式变换为一第二格式的方法,所述方法包括:
确定一第一符号的一第一密度,所述第一密度与所述第一格式相关;
确定一第二符号的一第二密度,所述第二密度与所述第一格式相关,其中所述第一密度不小于所述第二密度;及
利用所述第二符号校平所述第一符号,其中利用所述第二符号校平所述第一符号包括:创建所述第一符号的一第三密度,所述第三密度与所述第二格式相关,及创建所述第二符号的一第四密度,所述第四密度与所述第二格式相关,其中所述第四密度不小于所述第二密度。
64、根据权利要求63所述的方法,其中所述第三密度不大于所述第一密度。
65、根据权利要求63所述的方法,其中所述第二格式包括一指示符,所述指示符设置用于指示所述第一符号已使用所述第二符号校平。
Applications Claiming Priority (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
US10/230,657 | 2002-08-29 | ||
US10/230,657 US6941412B2 (en) | 2002-08-29 | 2002-08-29 | Symbol frequency leveling in a storage system |
Related Child Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010139364.XA Division CN101867375B (zh) | 2002-08-29 | 2003-08-29 | 用于存储并检索存储系统中信息的方法和存储装置 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN1701513A true CN1701513A (zh) | 2005-11-23 |
Family
ID=31976543
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNA038233568A Pending CN1701513A (zh) | 2002-08-29 | 2003-08-29 | 数据存储系统内的符号频率校平 |
Country Status (8)
Country | Link |
---|---|
US (2) | US6941412B2 (zh) |
EP (1) | EP1532739B1 (zh) |
JP (1) | JP4551217B2 (zh) |
KR (1) | KR101150162B1 (zh) |
CN (1) | CN1701513A (zh) |
AT (1) | ATE544240T1 (zh) |
AU (1) | AU2003268341A1 (zh) |
WO (1) | WO2004021576A1 (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734865B2 (en) | 2006-03-29 | 2010-06-08 | Hitachi, Ltd. | Storage system using flash memory modules logically grouped for wear-leveling and raid |
Families Citing this family (98)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7173863B2 (en) * | 2004-03-08 | 2007-02-06 | Sandisk Corporation | Flash controller cache architecture |
US7882299B2 (en) * | 2004-12-21 | 2011-02-01 | Sandisk Corporation | System and method for use of on-chip non-volatile memory write cache |
US7468117B2 (en) * | 2005-04-29 | 2008-12-23 | Kimberly-Clark Worldwide, Inc. | Method of transferring a wet tissue web to a three-dimensional fabric |
US8239735B2 (en) | 2006-05-12 | 2012-08-07 | Apple Inc. | Memory Device with adaptive capacity |
US7697326B2 (en) | 2006-05-12 | 2010-04-13 | Anobit Technologies Ltd. | Reducing programming error in memory devices |
US7466575B2 (en) * | 2006-05-12 | 2008-12-16 | Anobit Technologies Ltd. | Memory device programming using combined shaping and linear spreading |
WO2007132457A2 (en) | 2006-05-12 | 2007-11-22 | Anobit Technologies Ltd. | Combined distortion estimation and error correction coding for memory devices |
CN103280239B (zh) | 2006-05-12 | 2016-04-06 | 苹果公司 | 存储设备中的失真估计和消除 |
US20070266296A1 (en) * | 2006-05-15 | 2007-11-15 | Conley Kevin M | Nonvolatile Memory with Convolutional Coding |
US7840875B2 (en) * | 2006-05-15 | 2010-11-23 | Sandisk Corporation | Convolutional coding methods for nonvolatile memory |
WO2008026203A2 (en) | 2006-08-27 | 2008-03-06 | Anobit Technologies | Estimation of non-linear distortion in memory devices |
US20080092015A1 (en) * | 2006-09-28 | 2008-04-17 | Yigal Brandman | Nonvolatile memory with adaptive operation |
US7818653B2 (en) * | 2006-09-28 | 2010-10-19 | Sandisk Corporation | Methods of soft-input soft-output decoding for nonvolatile memory |
US7805663B2 (en) * | 2006-09-28 | 2010-09-28 | Sandisk Corporation | Methods of adapting operation of nonvolatile memory |
US7904783B2 (en) * | 2006-09-28 | 2011-03-08 | Sandisk Corporation | Soft-input soft-output decoder for nonvolatile memory |
JP2008090451A (ja) | 2006-09-29 | 2008-04-17 | Toshiba Corp | 記憶装置 |
US7644225B2 (en) * | 2006-10-17 | 2010-01-05 | Intel Corporation | Performance or power-optimized code/data storage for nonvolatile memories |
US7821826B2 (en) | 2006-10-30 | 2010-10-26 | Anobit Technologies, Ltd. | Memory cell readout using successive approximation |
WO2008053472A2 (en) | 2006-10-30 | 2008-05-08 | Anobit Technologies Ltd. | Reading memory cells using multiple thresholds |
US7904780B2 (en) * | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of modulating error correction coding |
US8001441B2 (en) * | 2006-11-03 | 2011-08-16 | Sandisk Technologies Inc. | Nonvolatile memory with modulated error correction coding |
US7904788B2 (en) * | 2006-11-03 | 2011-03-08 | Sandisk Corporation | Methods of varying read threshold voltage in nonvolatile memory |
US7558109B2 (en) * | 2006-11-03 | 2009-07-07 | Sandisk Corporation | Nonvolatile memory with variable read threshold |
US7924648B2 (en) | 2006-11-28 | 2011-04-12 | Anobit Technologies Ltd. | Memory power and performance management |
US8151163B2 (en) | 2006-12-03 | 2012-04-03 | Anobit Technologies Ltd. | Automatic defect management in memory devices |
US7900102B2 (en) | 2006-12-17 | 2011-03-01 | Anobit Technologies Ltd. | High-speed programming of memory devices |
US8151166B2 (en) | 2007-01-24 | 2012-04-03 | Anobit Technologies Ltd. | Reduction of back pattern dependency effects in memory devices |
US7751240B2 (en) | 2007-01-24 | 2010-07-06 | Anobit Technologies Ltd. | Memory device with negative thresholds |
WO2008111058A2 (en) | 2007-03-12 | 2008-09-18 | Anobit Technologies Ltd. | Adaptive estimation of memory cell read thresholds |
US8001320B2 (en) | 2007-04-22 | 2011-08-16 | Anobit Technologies Ltd. | Command interface for memory devices |
WO2008139441A2 (en) | 2007-05-12 | 2008-11-20 | Anobit Technologies Ltd. | Memory device with internal signal processing unit |
US8234545B2 (en) | 2007-05-12 | 2012-07-31 | Apple Inc. | Data storage with incremental redundancy |
US7925936B1 (en) | 2007-07-13 | 2011-04-12 | Anobit Technologies Ltd. | Memory device with non-uniform programming levels |
US8259497B2 (en) | 2007-08-06 | 2012-09-04 | Apple Inc. | Programming schemes for multi-level analog memory cells |
US8174905B2 (en) | 2007-09-19 | 2012-05-08 | Anobit Technologies Ltd. | Programming orders for reducing distortion in arrays of multi-level analog memory cells |
US7873803B2 (en) * | 2007-09-25 | 2011-01-18 | Sandisk Corporation | Nonvolatile memory with self recovery |
US7773413B2 (en) | 2007-10-08 | 2010-08-10 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells in the presence of temperature variations |
US8000141B1 (en) | 2007-10-19 | 2011-08-16 | Anobit Technologies Ltd. | Compensation for voltage drifts in analog memory cells |
WO2009050703A2 (en) | 2007-10-19 | 2009-04-23 | Anobit Technologies | Data storage in analog memory cell arrays having erase failures |
US8068360B2 (en) | 2007-10-19 | 2011-11-29 | Anobit Technologies Ltd. | Reading analog memory cells using built-in multi-threshold commands |
KR101509836B1 (ko) | 2007-11-13 | 2015-04-06 | 애플 인크. | 멀티 유닛 메모리 디바이스에서의 메모리 유닛의 최적화된 선택 |
US8225181B2 (en) | 2007-11-30 | 2012-07-17 | Apple Inc. | Efficient re-read operations from memory devices |
US8209588B2 (en) | 2007-12-12 | 2012-06-26 | Anobit Technologies Ltd. | Efficient interference cancellation in analog memory cell arrays |
US8456905B2 (en) | 2007-12-16 | 2013-06-04 | Apple Inc. | Efficient data storage in multi-plane memory devices |
US8085586B2 (en) | 2007-12-27 | 2011-12-27 | Anobit Technologies Ltd. | Wear level estimation in analog memory cells |
US8078795B2 (en) * | 2008-01-31 | 2011-12-13 | Dell Products L.P. | Methods and media for writing data to flash memory |
US8156398B2 (en) | 2008-02-05 | 2012-04-10 | Anobit Technologies Ltd. | Parameter estimation based on error correction code parity check equations |
US7924587B2 (en) | 2008-02-21 | 2011-04-12 | Anobit Technologies Ltd. | Programming of analog memory cells using a single programming pulse per state transition |
US7864573B2 (en) | 2008-02-24 | 2011-01-04 | Anobit Technologies Ltd. | Programming analog memory cells for reduced variance after retention |
US8230300B2 (en) | 2008-03-07 | 2012-07-24 | Apple Inc. | Efficient readout from analog memory cells using data compression |
US8059457B2 (en) | 2008-03-18 | 2011-11-15 | Anobit Technologies Ltd. | Memory device with multiple-accuracy read commands |
US8400858B2 (en) | 2008-03-18 | 2013-03-19 | Apple Inc. | Memory device with reduced sense time readout |
US8498151B1 (en) | 2008-08-05 | 2013-07-30 | Apple Inc. | Data storage in analog memory cells using modified pass voltages |
US7924613B1 (en) | 2008-08-05 | 2011-04-12 | Anobit Technologies Ltd. | Data storage in analog memory cells with protection against programming interruption |
US8169825B1 (en) | 2008-09-02 | 2012-05-01 | Anobit Technologies Ltd. | Reliable data storage in analog memory cells subjected to long retention periods |
US8949684B1 (en) | 2008-09-02 | 2015-02-03 | Apple Inc. | Segmented data storage |
US8482978B1 (en) | 2008-09-14 | 2013-07-09 | Apple Inc. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8000135B1 (en) | 2008-09-14 | 2011-08-16 | Anobit Technologies Ltd. | Estimation of memory cell read thresholds by sampling inside programming level distribution intervals |
US8239734B1 (en) | 2008-10-15 | 2012-08-07 | Apple Inc. | Efficient data storage in storage device arrays |
US8713330B1 (en) | 2008-10-30 | 2014-04-29 | Apple Inc. | Data scrambling in memory devices |
US8208304B2 (en) | 2008-11-16 | 2012-06-26 | Anobit Technologies Ltd. | Storage at M bits/cell density in N bits/cell analog memory cell devices, M>N |
US8248831B2 (en) | 2008-12-31 | 2012-08-21 | Apple Inc. | Rejuvenation of analog memory cells |
US8397131B1 (en) | 2008-12-31 | 2013-03-12 | Apple Inc. | Efficient readout schemes for analog memory cell devices |
US8924661B1 (en) | 2009-01-18 | 2014-12-30 | Apple Inc. | Memory system including a controller and processors associated with memory devices |
US8228701B2 (en) | 2009-03-01 | 2012-07-24 | Apple Inc. | Selective activation of programming schemes in analog memory cell arrays |
KR101504338B1 (ko) | 2009-03-04 | 2015-03-23 | 삼성전자주식회사 | 불휘발성 메모리 장치의 동작 방법 |
KR20100099961A (ko) * | 2009-03-04 | 2010-09-15 | 삼성전자주식회사 | 불휘발성 메모리 장치 및 그 동작 방법 |
US8259506B1 (en) | 2009-03-25 | 2012-09-04 | Apple Inc. | Database of memory read thresholds |
US8832354B2 (en) | 2009-03-25 | 2014-09-09 | Apple Inc. | Use of host system resources by memory controller |
US8238157B1 (en) | 2009-04-12 | 2012-08-07 | Apple Inc. | Selective re-programming of analog memory cells |
US8479080B1 (en) | 2009-07-12 | 2013-07-02 | Apple Inc. | Adaptive over-provisioning in memory systems |
US8495465B1 (en) | 2009-10-15 | 2013-07-23 | Apple Inc. | Error correction coding over multiple memory pages |
US8677054B1 (en) | 2009-12-16 | 2014-03-18 | Apple Inc. | Memory management schemes for non-volatile memory devices |
US8694814B1 (en) | 2010-01-10 | 2014-04-08 | Apple Inc. | Reuse of host hibernation storage space by memory controller |
US8572311B1 (en) | 2010-01-11 | 2013-10-29 | Apple Inc. | Redundant data storage in multi-die memory systems |
EP2559036A1 (en) * | 2010-04-15 | 2013-02-20 | Ramot at Tel-Aviv University Ltd. | Multiple programming of flash memory without erase |
US8694853B1 (en) | 2010-05-04 | 2014-04-08 | Apple Inc. | Read commands for reading interfering memory cells |
US8572423B1 (en) | 2010-06-22 | 2013-10-29 | Apple Inc. | Reducing peak current in memory systems |
US8595591B1 (en) | 2010-07-11 | 2013-11-26 | Apple Inc. | Interference-aware assignment of programming levels in analog memory cells |
US9104580B1 (en) | 2010-07-27 | 2015-08-11 | Apple Inc. | Cache memory for hybrid disk drives |
US8767459B1 (en) | 2010-07-31 | 2014-07-01 | Apple Inc. | Data storage in analog memory cells across word lines using a non-integer number of bits per cell |
US8856475B1 (en) | 2010-08-01 | 2014-10-07 | Apple Inc. | Efficient selection of memory blocks for compaction |
US8694854B1 (en) | 2010-08-17 | 2014-04-08 | Apple Inc. | Read threshold setting based on soft readout statistics |
US9021181B1 (en) | 2010-09-27 | 2015-04-28 | Apple Inc. | Memory management for unifying memory cell conditions by using maximum time intervals |
JP5962258B2 (ja) * | 2012-06-29 | 2016-08-03 | 富士通株式会社 | データ変換方法、データ変換装置およびデータ変換プログラム |
US8737125B2 (en) | 2012-08-07 | 2014-05-27 | Sandisk Technologies Inc. | Aggregating data latches for program level determination |
US8730724B2 (en) | 2012-08-07 | 2014-05-20 | Sandisk Technologies Inc. | Common line current for program level determination in flash memory |
US9613068B2 (en) * | 2013-03-15 | 2017-04-04 | Amazon Technologies, Inc. | Scalable analysis platform for semi-structured data |
US9177663B2 (en) | 2013-07-18 | 2015-11-03 | Sandisk Technologies Inc. | Dynamic regulation of memory array source line |
KR101531661B1 (ko) * | 2013-11-19 | 2015-06-26 | 서울대학교산학협력단 | 비휘발성 메모리 장치, 이를 위한 메모리 제어기 및 동작 방법 |
US9368224B2 (en) | 2014-02-07 | 2016-06-14 | SanDisk Technologies, Inc. | Self-adjusting regulation current for memory array source line |
US10447429B2 (en) | 2014-05-28 | 2019-10-15 | Samsung Display Co., Ltd. | Methods to transport forward error correction codes in a symbol encoded transmission stream |
US10733199B2 (en) | 2014-11-05 | 2020-08-04 | International Business Machines Corporation | Optimizing data conversion using pattern frequency |
US10432353B2 (en) * | 2014-12-04 | 2019-10-01 | Samsung Display Co., Ltd. | Memory-efficient methods of transporting error correction codes in a symbol encoded transmission stream |
JP6790515B2 (ja) * | 2016-07-05 | 2020-11-25 | 富士通株式会社 | ソリッドステートドライブ |
US11029872B2 (en) | 2018-12-18 | 2021-06-08 | Western Digital Technologies, Inc. | Non-volatile storage system with data shaping memory partitions |
US11556416B2 (en) | 2021-05-05 | 2023-01-17 | Apple Inc. | Controlling memory readout reliability and throughput by adjusting distance between read thresholds |
US11847342B2 (en) | 2021-07-28 | 2023-12-19 | Apple Inc. | Efficient transfer of hard data and confidence levels in reading a nonvolatile memory |
Family Cites Families (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JPS6271096A (ja) * | 1985-09-25 | 1987-04-01 | Toshiba Corp | 半導体集積回路装置 |
JPS63232626A (ja) * | 1987-03-20 | 1988-09-28 | Fujitsu Ltd | デ−タ圧縮復元方式 |
EP0618535B1 (en) | 1989-04-13 | 1999-08-25 | SanDisk Corporation | EEPROM card with defective cell substitution and cache memory |
US5504760A (en) * | 1991-03-15 | 1996-04-02 | Sandisk Corporation | Mixed data encoding EEPROM system |
JPH05130098A (ja) * | 1991-10-31 | 1993-05-25 | Hitachi Ltd | 暗号化データの伝送方法及び暗号化データが記録されたカード |
US6222762B1 (en) | 1992-01-14 | 2001-04-24 | Sandisk Corporation | Multi-state memory |
US5673224A (en) * | 1996-02-23 | 1997-09-30 | Micron Quantum Devices, Inc. | Segmented non-volatile memory array with multiple sources with improved word line control circuitry |
US5907855A (en) * | 1996-10-15 | 1999-05-25 | Micron Technology, Inc. | Apparatus and method for reducing programming cycles for multistate memory system |
US6292868B1 (en) * | 1996-10-15 | 2001-09-18 | Micron Technology, Inc. | System and method for encoding data to reduce power and time required to write the encoded data to a flash memory |
SE512613C2 (sv) | 1996-12-30 | 2000-04-10 | Ericsson Telefon Ab L M | Metod och organ för informationshantering |
AUPO951397A0 (en) | 1997-09-29 | 1997-10-23 | Canon Information Systems Research Australia Pty Ltd | A method for digital data compression |
US6252610B1 (en) | 1998-05-29 | 2001-06-26 | Silicon Graphics, Inc. | Method and apparatus for efficiently switching state in a graphics pipeline |
JP2002132454A (ja) * | 2000-10-19 | 2002-05-10 | Xaxon R & D Corp | 圧縮伸張装置を備えた半導体ディスク装置 |
-
2002
- 2002-08-29 US US10/230,657 patent/US6941412B2/en not_active Expired - Lifetime
-
2003
- 2003-08-29 EP EP03749299A patent/EP1532739B1/en not_active Expired - Lifetime
- 2003-08-29 JP JP2004532020A patent/JP4551217B2/ja not_active Expired - Fee Related
- 2003-08-29 WO PCT/US2003/027322 patent/WO2004021576A1/en active Application Filing
- 2003-08-29 AU AU2003268341A patent/AU2003268341A1/en not_active Abandoned
- 2003-08-29 AT AT03749299T patent/ATE544240T1/de active
- 2003-08-29 KR KR1020057003496A patent/KR101150162B1/ko active IP Right Grant
- 2003-08-29 CN CNA038233568A patent/CN1701513A/zh active Pending
-
2005
- 2005-08-09 US US11/201,007 patent/US7266026B2/en not_active Expired - Fee Related
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7734865B2 (en) | 2006-03-29 | 2010-06-08 | Hitachi, Ltd. | Storage system using flash memory modules logically grouped for wear-leveling and raid |
US8429340B2 (en) | 2006-03-29 | 2013-04-23 | Hitachi, Ltd. | Storage system comprising flash memory modules subject to plural types of wear-leveling processes |
US8788745B2 (en) | 2006-03-29 | 2014-07-22 | Hitachi, Ltd. | Storage system comprising flash memory modules subject to two wear—leveling processes |
US9286210B2 (en) | 2006-03-29 | 2016-03-15 | Hitachi, Ltd. | System executes wear-leveling among flash memory modules |
Also Published As
Publication number | Publication date |
---|---|
ATE544240T1 (de) | 2012-02-15 |
CN101867375A (zh) | 2010-10-20 |
US20040044835A1 (en) | 2004-03-04 |
AU2003268341A1 (en) | 2004-03-19 |
US20060015677A1 (en) | 2006-01-19 |
KR101150162B1 (ko) | 2012-06-01 |
EP1532739A1 (en) | 2005-05-25 |
JP4551217B2 (ja) | 2010-09-22 |
WO2004021576A1 (en) | 2004-03-11 |
US7266026B2 (en) | 2007-09-04 |
KR20050067142A (ko) | 2005-06-30 |
US6941412B2 (en) | 2005-09-06 |
JP2005537551A (ja) | 2005-12-08 |
EP1532739B1 (en) | 2012-02-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN1701513A (zh) | 数据存储系统内的符号频率校平 | |
JP5785330B2 (ja) | メモリエンデュランスのために動作させる装置および方法 | |
JP5660615B2 (ja) | マルチビットメモリ装置を含んだデータ格納システム及びそれの動作方法 | |
CN1705936A (zh) | 用于分割一逻辑块的方法及设备 | |
CN1662993A (zh) | 用于流水线存储器的有效读取/写入方法 | |
CN1499530A (zh) | 非易失性存储器系统内有效允许失序写处理的方法和装置 | |
CN1630911A (zh) | 多级闪存的部分页编程 | |
CN1499531A (zh) | 管理非易失存储器系统中的数据完整性的方法和装置 | |
CN1426557A (zh) | 对快速存储器的数据记录装置和数据写入方法 | |
CN1795437A (zh) | 用于块内页面分组的方法及设备 | |
CN101061466A (zh) | 用于处理闪速存储器的数据的装置和方法 | |
CN1728114A (zh) | 使用页信息的页替换方法 | |
CN101069163A (zh) | 存储器系统以及写入非易失性半导体存储器中的方法 | |
CN1637724A (zh) | 用于闪速存储器的数据管理装置和方法 | |
CN1763729A (zh) | 用于闪速存储器的数据处理设备和方法 | |
CN1525391A (zh) | 非易失性存储卡 | |
CN1252566A (zh) | 直接存储器存取控制方法和装置 | |
CN1256848C (zh) | 用于译码可变长度编码的装置和方法 | |
CN101075237A (zh) | 一种数据存储方法、数据读取方法以及数据检索方法 | |
CN1435758A (zh) | 存储装置、数据处理方法以及数据处理程序 | |
CN101661431A (zh) | 用于快闪存储器的区块管理方法、快闪储存系统及控制器 | |
CN1967720A (zh) | 半导体存储器件及其控制方法 | |
CN1758543A (zh) | 提高Turbo码译码速度的并行译码方法及译码装置 | |
CN1260546A (zh) | 在手持装置中存储和检索数据的方法及装置 | |
CN1447243A (zh) | 快闪存储器中快速且能防止不正常断电的演算法及其控制系统 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C12 | Rejection of a patent application after its publication | ||
RJ01 | Rejection of invention patent application after publication |
Open date: 20051123 |