CN102455948A - 用来进行数据整形的方法以及相关的记忆装置及其控制器 - Google Patents
用来进行数据整形的方法以及相关的记忆装置及其控制器 Download PDFInfo
- Publication number
- CN102455948A CN102455948A CN2010105220419A CN201010522041A CN102455948A CN 102455948 A CN102455948 A CN 102455948A CN 2010105220419 A CN2010105220419 A CN 2010105220419A CN 201010522041 A CN201010522041 A CN 201010522041A CN 102455948 A CN102455948 A CN 102455948A
- Authority
- CN
- China
- Prior art keywords
- subsequence
- data
- seed
- randomizer
- controller
- 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.)
- Granted
Links
Images
Landscapes
- Read Only Memory (AREA)
Abstract
本发明提供一种用来进行数据整形的方法,该方法应用于一闪存的控制器,该闪存包含多个区块,该方法包含有:依据欲于该闪存写入/读取的数据的内容来产生/重获至少一随机函数发生器/解随机函数发生器的一输入种子;以及利用该随机函数发生器/解随机函数发生器依据该输入种子产生一随机函数,以供用来逐位地调整该数据的多个位。本发明另提供相关的记忆装置及其控制器。本发明中,通过适当地设计该随机函数之的序列以及种子产生器/种子重获器,辅以相关的数据流控制,本发明能针对该控制器所存取之的数据来进行妥善的数据型样管理,以减少错误的发生。另外,本发明不仅不会增加许多额外的成本,甚至比相关技术更能节省成本。
Description
技术领域
本发明涉及关于闪存(Flash Memory)的存取(Access),更具体地说,涉及一种用来进行数据整形(Data Shaping)的方法以及相关的记忆装置及其控制器。
背景技术
近年来由于闪存的技术不断地发展,各种可携式记忆装置(例如:符合SD/MMC、CF、MS、XD标准的记忆卡)或具备闪存的固态硬盘(Solid State Drive,SSD)被广泛地实施于诸多应用中。因此,这些记忆装置中的闪存的存取控制遂成为相当热门的议题。
以常用的NAND型闪存而言,其主要可区分为单阶细胞(Single LevelCell,SLC)与多阶细胞(Multiple Level Cell,MLC)两大类的闪存。单阶细胞闪存中的每个被当作记忆单元的晶体管只有两种电荷值,分别用来表示逻辑值0与逻辑值1。另外,多阶细胞闪存中的每个被当作记忆单元的晶体管的储存能力则被充分利用,采用较高的电压来驱动,以透过不同级别的电压在一个晶体管中记录两组位信息(00、01、11、10);理论上,多阶细胞闪存的记录密度可以达到单阶细胞闪存的记录密度的两倍,这对于曾经在发展过程中遇到瓶颈的NAND型闪存的相关产业而言,是非常好的消息。
相较于单阶细胞闪存,由于多阶细胞闪存的价格较便宜,并且在有限的空间里可提供较大的容量,故多阶细胞闪存很快地成为市面上的可携式记忆装置竞相采用的主流。然而,多阶细胞闪存的不稳定性所导致的问题也一一浮现。为了确保记忆装置对闪存的存取控制能符合相关规范,闪存的控制器通常备有某些管理机制以妥善地管理数据的存取。
依据相关技术,有了这些管理机制的记忆装置还是有不足之处。举例来说,使用者可能基于其使用习惯而不断地写入具有某些特定数据型样的数据,而这些特定数据型样特别容易造成错误(例如:写入错误、读取错误...等);虽然在记忆装置中设置有随机函数发生器(Randomizer)来调整数据以期解决这样的问题,却由于传统的低成本设计,以致调整后的数据不够随机。另外,一旦需要进行闪存的内部数据搬移,可能发生该随机函数发生器的输入种子(Seed)无法正确地产生的问题,进而导致数据错误。因此,需要一种新颖的方法针对该控制器所存取的数据来进行妥善的数据型样管理,以减少错误的发生。
发明内容
本发明要解决的技术问题在于,针对现有技术的上述在多阶细胞闪存中不断地写入特定数据型样的数据时易造成错误的缺陷,提供一种用来进行数据整形(Data Shaping)的方法以及相关的记忆装置及其控制器,以解决上述问题。
本发明的另一目的在于提供一种用来进行数据整形之方法以及相关之记忆装置及其控制器,以抑制数据错误。
本发明的另一目的在于提供一种用来进行数据整形之方法以及相关之记忆装置及其控制器,以便在不将随机函数发生器(Randomizer)之输入种子(Seed)并入欲于一闪存(Flash Memory)写入的数据之状况下,进行该闪存的内部数据搬移。
本发明解决其技术问题所采用的技术方案之一是:构造一种用来进行数据整形的方法,该方法应用于一闪存的控制器,该闪存包含多个区块,该方法包含有:依据欲于该闪存写入/读取的数据的内容来产生/重获(Recover)至少一随机函数发生器/解随机函数发生器(Derandomizer)的一输入种子;以及利用该随机函数发生器/解随机函数发生器依据该输入种子产生一随机函数(Random Function),以供用来调整该数据的多个位。
上述本发明所述的方法,其另包含有:
利用至少一种子产生器/种子重获器依据该数据的内容来产生/重获该输入种子。
上述本发明所述的方法,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或(Exclusive OR,XOR)运算,以产生/重获该输入种子。
上述本发明所述的方法,其中该些部分的数量为偶数。
上述本发明所述的方法,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
上述本发明所述的方法,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
上述本发明所述的方法,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
本发明解决其技术问题所采用的技术方案之二是:构造一种记忆装置,其包含有:一闪存,该闪存包含多个区块;以及一控制器,用来存取(Access)该闪存以及管理该多个区块,并且另针对该控制器本身所存取的数据来进行数据整形。另外,该控制器包含有至少一随机函数发生器/解随机函数发生器,用来依据一输入种子产生一随机函数,以供用来于该控制器接收到一写入/读取命令时调整该数据的多个位,其中该写入/读取命令用来指示该控制器于该闪存写入/读取该数据。此外,该控制器依据该数据的内容来产生/重获该输入种子。
上述本发明所述的记忆装置,其中该控制器另包含有:
至少一种子产生器/种子重获器,用来依据该数据的内容来产生/重获该输入种子。
上述本发明所述的记忆装置,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或(Exclusive OR,XOR)运算,以产生/重获该输入种子。
上述本发明所述的记忆装置,其中该些部分的数量为偶数。
上述本发明所述的记忆装置,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
上述本发明所述的记忆装置,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
上述本发明所述的记忆装置,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
本发明解决其技术问题所采用的技术方案之三是:构造一种记忆装置的控制器,该控制器用来存取一闪存,该闪存包含多个区块,该控制器包含有:一只读存储器(Read Only Memory,ROM),用来储存一程序代码;一微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该多个区块,其中在该微处理器的控制下,该控制器针对该控制器本身所存取的数据来进行数据整形;以及至少一随机函数发生器/解随机函数发生器,用来依据一输入种子产生一随机函数,以供用来于该控制器接收到一写入/读取命令时调整该数据的多个位,其中该写入/读取命令用来指示该控制器于该闪存写入/读取该数据。另外,该控制器依据该数据的内容来产生/重获该输入种子。
上述本发明所述的控制器,其另包含有:
至少一种子产生器/种子重获器,用来依据该数据的内容来产生/重获该输入种子。
上述本发明所述的控制器,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或(Exclusive OR,XOR)运算,以产生/重获该输入种子。
上述本发明所述的控制器,其中该些部分的数量为偶数。
上述本发明所述的控制器,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
上述本发明所述的控制器,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
上述本发明所述的控制器,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
实施本发明的技术方案,具有以下有益效果:通过适当地设计该随机函数之的序列以及种子产生器/种子重获器,辅以相关的数据流控制,本发明能针对该控制器所存取之的数据来进行妥善的数据型样管理,以减少错误的发生。
另外,本发明不仅不会增加许多额外的成本,甚至比相关技术更能节省成本。
附图说明
下面将结合附图及实施例对本发明作进一步说明,附图中:
图1A为依据本发明一第一实施例的一种记忆装置的示意图;
图1B与图1C为图1A所示的记忆装置于一实施例中的实施细节;
图1D与图1E为图1A所示的记忆装置于另一实施例中的实施细节;
图1F与图1G为图1A所示的记忆装置于另一实施例中的实施细节;
图2为依据本发明一实施例的一种用来进行数据整形(Data Shaping)的方法的流程图;
图3A与图3B为图2所示的方法于一实施例中关于图1B所示的种子产生器及图1C所示的种子重获(Recovery)器的实施细节;
图4A与图4B为图1A所示的记忆装置于另一实施例中的实施细节。
【主要组件符号说明】
具体实施方式
请参考图1A,图1A为依据本发明一第一实施例的一种记忆装置100的示意图,其中本实施例的记忆装置100尤其可为可携式记忆装置,例如:符合SD/MMC、CF、MS、XD标准的记忆卡,或通用序列总线快闪碟(UniversalSerial Bus Flash Drive,USB Flash Drive,亦称为USB Flash Disk),即所谓的随身碟,但不以此为限。记忆装置100包含有:一闪存(Flash Memory)120;以及一控制器,用来存取闪存120,其中该控制器例如一存储器控制器110。依据本实施例,存储器控制器110包含一微处理器112、一只读存储器(Read Only Memory,ROM)112M、一控制逻辑114、一缓冲存储器116、与一接口逻辑118。另外,控制逻辑114包含一调整单元114A、一编码器114E、一种子产生器(Seed Generator)114G、与至少一随机函数发生器(Randomizer)/解随机函数发生器(Derandomizer)114R。实作上,调整单元114A可为一异或(Exclusive OR,XOR)逻辑闸或一加法器。请注意,在此以可携式记忆装置为例;这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的一变化例,记忆装置100可为固态硬盘(Solid StateDrive,SSD)。
于本实施例中,只读存储器112M用来储存一程序代码112C,而微处理器112则用来执行程序代码112C以控制对闪存120的存取(Access)。于典型状况下,闪存120包含多个区块(Block),而该控制器(例如:透过微处理器112执行程序代码112C的存储器控制器110)对闪存120进行抹除数据的运作以区块为单位来进行抹除。另外,一区块可记录特定数量的页(Page),其中上述的控制器对闪存120进行写入数据的运作以页为单位来进行写入。
实作上,透过微处理器112执行程序代码112C的存储器控制器110可利用其本身内部的组件来进行诸多控制运作,例如:利用控制逻辑114来控制闪存120的存取运作(尤其是对至少一区块或至少一页的存取运作)、利用缓冲存储器116进行所需的缓冲处理、以及利用接口逻辑118来与一主装置(Host Device)沟通。依据本实施例,除了能存取闪存120,存储器控制器110还能妥善地管理该多个区块。
另外,存储器控制器110还可针对其本身所存取的数据(例如:图1A所示的数据D1)来进行数据整形(Data Shaping)。尤其是,在微处理器112的控制下,针对存储器控制器110本身所存取的数据,存储器控制器110通过利用随机函数发生器/解随机函数发生器114R的运作来进行数据整形以抑制数据错误。更明确而言,种子产生器114G可依据数据D1来产生一输入种子S1,而随机函数发生器/解随机函数发生器114R用来依据输入种子S1产生一随机函数(Random Function),以供用来于该控制器接收到一写入/读取命令时逐位地调整该数据(诸如数据D1;尤其是在上述的写入/读取命令代表一写入命令的状况下)的多个位,其中该写入/读取命令用来指示该控制器于闪存120写入/读取该数据。于是,图1A所示的调整单元114A依据随机序列114RS(即上述的随机函数的序列)调整数据D1以产生调整后的数据DRND1。
依据本实施例,在上述的写入/读取命令代表该写入命令的状况下,当通过调整单元114A的数据路径代表一写入路径时,数据D1可代表该控制器欲写入闪存120的数据,而数据DRND1可代表调整后的数据,以供编码器114E进行编码。另外,编码器114E进行编码,尤其是进行错误更正码(ErrorCorrection Code,ECC)编码以产生编码数据,并将该编码数据写入闪存120,其中该编码数据可包含奇偶校验码(Parity Code)。这只是为了说明的目的而已,并非对本发明的限制。在上述的写入/读取命令代表一读取命令的状况下,当通过调整单元114A的数据路径代表一读取路径时,该读取路径可耦接至一解码器114D(未显示于图1A中),其中解码器114D对读取自闪存120的编码数据进行解码,尤其是进行错误更正码解码以产生解码数据诸如数据DRND1。此状况下,图1A所示的调整单元114A的输入与输出对调,即调整单元114A依据随机序列114RS调整数据DRND1以产生调整后的数据D1,以供进一步处理。依据本实施例的一特例,在上述的写入/读取命令代表该读取命令的状况下,种子产生器114G可用来作为一种子重获(Recovery)器,并依据数据DRND1重获(Recover)输入种子S1。依据本实施例的另一特例,存储器控制器110包含一种子重获器114Y(未显示于图1A中),以供依据数据DRND1重获输入种子S1,且在上述的写入/读取命令代表该读取命令的状况下,种子产生器114G通过切换电路的路径切换而被代换为种子重获器114Y。依据本实施例的一变化例,上述运作的至少一部分可利用程序代码112C中的一个或多个程序模块来实现;如此,上述运作所需的硬件的至少一部分可代换为透过微处理器112执行该一个或多个程序模块的存储器控制器110。
图1B与图1C为图1A所示的记忆装置100于一实施例中的实施细节。为了简明起见,上述的调整单元114A分别被并入图1B所示的种子产生器114G及图1C所示的种子重获器114Y。也就是说,本实施例的种子产生器114G与种子重获器114Y中的每一者包含调整单元114A。依据本实施例的一变化例,种子产生器114G与种子重获器114Y可为同一个组件。
如图1B所示,在上述的写入/读取命令代表该写入命令的状况下,种子产生器114G接收数据D1并依据数据D1产生输入种子S1,同时将数据D1暂时地储存于缓冲存储器116。另外,随机函数发生器114RA自缓冲存储器116读出数据D1并依据输入种子S1产生一随机函数诸如上述的随机函数,且依据该随机函数的序列逐位地调整数据D1的多个位以产生数据DRND1。此外,编码器114E对数据DRND1进行错误更正码编码以产生编码数据(于图1B的右上角绘示为附加了奇偶校验码P1的数据DRND1),并将该编码数据写入闪存120。
如图1C所示,在上述的写入/读取命令代表该读取命令的状况下,存储器控制器110自闪存120所读取的编码数据(于图1C的右上角绘示为附加了奇偶校验码P1的数据DRND1)分别被传送至解码器114D、种子重获器114Y、与缓冲存储器116。在一实施例中,在存储器控制器110的控制下,种子重获器114Y只利用该编码数据中的数据DRND1而非奇偶校验码P1,而缓冲存储器116只暂时地储存数据DRND1而非奇偶校验码P1。种子重获器114Y接收数据DRND1并依据数据DRND1以重获输入种子S1的初步版本,同时将输入种子S1的初步版本暂时地储存于暂存器114REG。另外,解码器114D对读取自闪存120的编码数据进行解码;一旦侦测到错误,就产生更正数据以更正缓冲存储器116中的数据DRND1,并产生种子更正讯息以更正暂存器114REG中的输入种子S1。在另一实施例中,解码器114D得将种子更正讯息提供给种子重获器114Y,以使种子重获器114Y提取暂存器114REG中的输入种子S1并依据种子更正讯息修正之,再将修正后的输入种子S1储存于暂存器114REG。于是,解随机函数发生器114RB自暂存器114REG读出正确的输入种子S1并依据输入种子S1产生一随机函数诸如上述的随机函数,且自缓冲存储器116读出数据DRND1并依据该随机函数的序列逐位地调整数据DRND1的多个位以产生数据D1,以供进一步处理。
依据图1C所示实施例的一变化例,随机函数发生器114RA与解随机函数发生器114RB可为同一个组件,因此,它们可合称为随机函数发生器/解随机函数发生器114R。
图1D与图1E为图1A所示的记忆装置100于另一实施例中的实施细节,其中上述的随机函数发生器114RA与解随机函数发生器114RB分别被代换为随机函数发生器114RA’与解随机函数发生器114RB’。
如图1D所示,在上述的写入/读取命令代表该写入命令的状况下,编码器114E自缓冲存储器116读出数据D1并对数据D1进行错误更正码编码以产生编码数据(于图1D中绘示为附加了奇偶校验码P2的数据D1),并输出该编码数据予随机函数发生器114RA’。另外,随机函数发生器114RA’依据输入种子S2产生一随机函数,且依据该随机函数的序列逐位地调整该编码数据的多个位以产生数据DRND2,尤其是依据该随机函数的序列逐位地调整数据D1与奇偶校验码P2两者当中的多个位以产生调整后的数据D1’与调整后的奇偶校验码P2’,其中数据DRND2包含调整后的数据D1’与调整后的奇偶校验码P2’。此外,随机函数发生器114RA’将数据DRND2(于图1D的右下角绘示为附加了奇偶校验码P2’的数据D1’)连同附加于数据DRND2的输入种子S2写入闪存120。
如图1E所示,在上述的写入/读取命令代表该读取命令的状况下,存储器控制器110自闪存120所读取的数据DRND2(于图1E的右下角绘示为附加了奇偶校验码P2’的数据D1’)以及输入种子S2被传送至解随机函数发生器114RB’。另外,解随机函数发生器114RB’依据输入种子S2产生一随机函数,并依据该随机函数的序列逐位地调整数据DRND2的多个位以产生数据D1以及附加于数据D1的奇偶校验码P2,即为图1D所示的编码器114E所产生的编码数据。此外,解码器114D对接收自解随机函数发生器114RB’的编码数据(于图1E中绘示为附加了奇偶校验码P2的数据D1)进行解码以产生正确的数据D1,以供进一步处理。
依据本实施例的一变化例,随机函数发生器114RA’与解随机函数发生器114RB’可为同一个组件,因此,它们可合称为随机函数发生器/解随机函数发生器114R’。
图1F与图1G为图1A所示的记忆装置100于另一实施例中的实施细节,其中上述的随机函数发生器114RA与解随机函数发生器114RB分别被代换为随机函数发生器114RA”与解随机函数发生器114RB”。
如图1F所示,在上述的写入/读取命令代表该写入命令的状况下,随机函数发生器114RA”自缓冲存储器116读出数据D1并依据输入种子S3产生一随机函数,且依据该随机函数的序列逐位地调整数据D1的多个位以产生数据DRND3。另外,随机函数发生器114RA”组合数据DRND3与输入种子S3以产生组合数据,并输出该组合数据予编码器114E。此外,编码器114E对该组合数据进行错误更正码编码以产生编码数据(于图1F的右下角绘示为附加了输入种子S3与奇偶校验码P3的数据DRND3),并将该编码数据写入闪存120。
如图1G所示,在上述的写入/读取命令代表该读取命令的状况下,存储器控制器110自闪存120所读取的编码数据(于图1G的右上角绘示为附加了输入种子S 3与奇偶校验码P3的数据DRND3)分别被传送至解码器114D与缓冲存储器116,其中在存储器控制器110的控制下,缓冲存储器116只暂时地储存数据DRND3,而非输入种子S3与奇偶校验码P3。解码器114D对读取自闪存120的编码数据进行解码;一旦侦测到错误,就产生更正数据以更正缓冲存储器116中的数据DRND3,并产生种子更正讯息以更正其所接收的编码数据中的输入种子S3。于是,解随机函数发生器114RB”依据输入种子S3产生一随机函数,且自缓冲存储器116读出数据DRND3并依据该随机函数的序列逐位地调整数据DRND3的多个位以产生数据D1,以供进一步处理。
依据本实施例的一变化例,随机函数发生器114RA”与解随机函数发生器114RB”可为同一个组件,因此,它们可合称为随机函数发生器/解随机函数发生器114R”。
基于图1B与图1C所示的实施例,该控制器能依据欲于闪存120写入/读取的数据的内容来产生/重获至少一随机函数发生器/解随机函数发生器的输入种子,其中将任何输入种子并入欲于闪存120写入的数据都是不必要的。因此,在进行闪存120的内部数据搬移时,本发明能确保该输入种子的正确性。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的一变化例,该控制器可具有多个运作模式诸如第一、第二、与第三模式,其中第一模式的运作方式如同于图1B与图1C所示的实施例,第二模式的运作方式如同于图1D与图1E所示的实施例,且第三模式的运作方式如同于图1F与图1G所示的实施例。存储器控制器110进行数据整形的相关细节可参考图2来进一步说明。
图2为依据本发明一实施例的一种用来进行数据整形的方法910的流程图。该方法可应用于图1A所示的记忆装置100,尤其是上述的控制器(例如:透过微处理器112执行程序代码112C的存储器控制器110)。另外,该方法可通过利用图1A所示的记忆装置100来实施,尤其是通过利用上述的控制器来实施。该方法说明如下:
步骤912:该控制器依据欲于闪存120写入/读取的数据(例如:数据D1)的内容来产生/重获至少一随机函数发生器/解随机函数发生器诸如随机函数发生器/解随机函数发生器114R(例如:随机函数发生器114RA及/或解随机函数发生器114RB)的一输入种子,诸如上述的输入种子S1。尤其是,该控制器利用至少一种子产生器/种子重获器(例如:种子产生器114G及/或种子重获器114Y)依据该数据的内容来产生/重获该输入种子。
步骤914:该控制器利用该随机函数发生器/解随机函数发生器(诸如随机函数发生器/解随机函数发生器114R)依据该输入种子产生一随机函数诸如上述的随机函数,以供用来逐位地调整该数据的多个位。例如:这个运作可实施为对该数据与该随机函数的序列进行异或(XOR)运算,尤其是对两者(该数据以及该随机函数的序列)的相对应位进行异或运算,其中这样的异或运算可称为“位异或”(Bitwise XOR)运算。
依据本实施例,该数据包含多个部分,而该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或(XOR)运算,以产生/重获输入种子S1;也就是说,该种子产生器/种子重获器的运作包含至少一次(例如一次或多次)“位异或”运算。尤其是,为了简化运作,该些部分的数量可为偶数。例如:在数据D1具有八个字节(Byte)的状况下,数据D1中的第一个字节的前两个位的值均为1,而数据D1的其余位的值均为0。如此,数据D1可写成:{11000000,00000000,00000000,00000000,00000000,00000000,00000000,00000000}。首先,种子产生器114G可对前两个字节的相对应位进行异或运算以产生异或运算结果11000000,然后将此运算结果11000000与第三个字节00000000的相对应位进行异或运算以产生异或运算结果11000000,接着将最新的运算结果11000000与第四个字节00000000的相对应位进行异或运算以产生异或运算结果11000000,依此类推。当最后一个字节00000000已被取用来进行位异或运算时,种子产生器114G就产生最新的运算结果11000000作为输入种子S1。请注意,依据本实施例,不论种子产生器114G与种子重获器114Y是否为同一个组件,均不影响方法910的实施。另外,针对全为零的数据,该控制器可进行例外处理,及/或预先对数据进行可逆性更改。如此,可确保整体运作顺畅。
于本实施例中,随机函数发生器/解随机函数发生器114R针对输入种子S1所产生的该随机函数的序列包含至少一对子序列,其中于每一对子序列当中,一子序列与另一子序列相同。例如:随机函数发生器/解随机函数发生器114R针对输入种子S1(X1)所产生的该随机函数的序列{11110000,11001100,10101010,00110011,11110000,11001100,10101010,00110011}具有一对子序列{11110000,11001100,10101010,00110011}与{11110000,11001100,10101010,00110011},其中这两个子序列彼此相同。为了便于理解,该随机函数的序列亦可写成{{11110000,11001100,10101010,00110011},{11110000,11001100,10101010,00110011}}。又例如:随机函数发生器/解随机函数发生器114R针对输入种子S1(X2)所产生的该随机函数的序列{11110000,11001100,11110000,11001100,10101010,00110011,10101010,00110011}包含多对子序列{11110000,11001100}与{11110000,11001100}以及{10101010,00110011}与{10101010,00110011}。为了便于理解,该随机函数的序列亦可写成{{{11110000,11001100},{11110000,11001100}},{{10101010,00110011},{10101010,00110011}}}。在这些例子当中,同一对的子序列彼此相邻。这只是为了说明的目的而已,并非对本发明的限制。在其它例子当中,同一对的子序列可以不必彼此相邻。例如:随机函数发生器/解随机函数发生器114R针对输入种子S1(X3)所产生的该随机函数的序列{11110000,11001100,10101010,00110011,10101010,00110011,11110000,11001100}亦包含多对子序列,其中有一对子序列是前两个字节{11110000,11001100}与后两个字节{11110000,11001100},而另一对子序列是第三字节起的两个字节{10101010,00110011}与第五字节起的两个字节{10101010,00110011}。
为了简化运作,在该随机函数的序列包含多对子序列的状况下,该些对子序列中的任一对子序列中的任一子序列的长度与该些对子序列中的另一对子序列中的任一子序列的长度相同。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的一变化例,该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
另外,为了简化运作,每一子序列的长度等于一个或多个字节的长度。这只是为了说明的目的而已,并非对本发明的限制。依据本实施例的一变化例,在该随机函数的序列包含多对子序列的状况下,于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。例如:在随机函数发生器/解随机函数发生器114R针对输入种子S1(X4)所产生的该随机函数的序列{11110000,11001100,10101111 00001100,11001010,10100011,00111010,00110011}当中,有一对子序列{11110000,11001100,1010}与{11110000,11001100,1010}中的每一子序列的长度等于二十个位的长度,而另一对子序列{1010,00110011}与{1010,00110011}中的每一子序列的长度等于十二个位的长度。为了便于理解,该随机函数的序列亦可写成{{{11110000,11001100,1010},{11110000,11001100,1010}},{{1010,00110011},{1010,00110011}}}。
请注意,在该控制器逐位地调整该数据的多个位的过程中,随机函数发生器/解随机函数发生器114R(例如:随机函数发生器114RA及/或解随机函数发生器114RB)依据该随机函数的序列逐位地调整该数据的多个位。实作上,这个运作可为该数据与该随机函数的序列的位异或运算的结果。此状况下,由于在该随机函数的序列当中的子序列两两成对,在该种子产生器/种子重获器(例如:种子产生器114G及/或种子重获器114Y)重获输入种子S1的过程中,同一对子序列施加于数据DRND1的作用会彼此抵消。
举例来说,图1A所示的调整单元114A依据随机序列114RS(即上述的随机函数的序列)调整数据D1以产生调整后的数据DRND1。参考本实施例以及图1B与图1C所示的实施例应可理解,在该随机函数的序列当中的子序列两两成对的状况下,种子重获器114RB依据DRND1所重获的输入种子正是种子产生器114RA依据数据D1所产生的输入种子S1(例如:输入种子S1(X1)、S1(X2)、S1(X3)、或S1(X4))。
图3A与图3B为图2所示的方法于一实施例中关于图1B所示的种子产生器114G及图1C所示的种子重获器114Y的实施细节,其中标号300可分别代表种子产生器114G及种子重获器114Y,且不论种子产生器114G及种子重获器114Y是否实施为同一个组件,均不影响本实施例的运作。
如图3A所示,种子产生器/种子重获器300包含W个异或门310与一储存单元320,其中标号W代表异或门310的异或运算中所涉及的数据的位数,且本实施例的W可代表大于1的正整数。输入数据308以W位为单位进入异或门310,而储存单元320可暂时地储存异或门310的W位异或运算结果(于图3B标示为“W位XOR运算结果”,即含有W位的异或运算结果)。由于该控制器可将储存单元320的初始值设为零,当数据308中的W位数据308-1进入异或门310时,其输出数据318等同于W位数据308-1,故储存单元320暂时地储存W位数据308-1。
接下来,如图3B所示,种子产生器/种子重获器300对W位数据308-1与W位数据308-2进行位异或运算(于图3B标示为“XOR运算”)以产生W位异或运算结果318-1,然后对W位异或运算结果318-1与W位数据308-3进行位异或运算以产生W位异或运算结果318-2,接着对W位异或运算结果318-2与W位数据308-4进行位异或运算以产生W位异或运算结果318-3,依此类推。于是,种子产生器/种子重获器300对W位异或运算结果318-(K-2)与W位数据308-K进行位异或运算以产生W位异或运算结果318-(K-1),作为输出数据328,其中输出数据328具有W位。请注意,输出数据328代表上述的输入种子S1。实作上,为了简化运作,W可为8或其倍数。
依据本实施例的某些变化例,图3B所示的异或运算的顺序可以予以变化。也就是说,将图3B所示的W位数据308-1、308-2、...、及308-K输入至异或门310的顺序可以予以变化。
依据本实施例的某些变化例,W位数据308-1、308-2、...、及308-K可区分为NP(11)个部分,而每一部分包含W位数据308-1、308-2、...、及308-K中的至少两者。种子产生器/种子重获器300可分别对该NP(11)个部分进行位异或运算,以产生NP(11)个对应的W位异或运算结果,其中针对每一部分,位异或运算的次数为所考虑的部分中的“W位数据”的数量减一。然后,种子产生器/种子重获器300对该NP(11)个W位异或运算结果进行位异或运算,以产生最终的W位异或运算结果。尤其是,依据该些变化例中的至少一者,可实施图3A所示的种子产生器/种子重获器300的多个复制品,以供平行地进行位异或运算。
依据本实施例的某些变化例,W位数据308-1、308-2、...、及308-K可区分为NP(22)个部分,其中该NP(22)个部分中的NP(21)个部分的每一部分包含W位数据308-1、308-2、...、及308-K中的至少两者,而该NP(22)个部分中的剩余的部分的每一部分包含W位数据308-1、308-2、...、及308-K中之一者。种子产生器/种子重获器300可分别对该NP(21)个部分进行位异或运算,以产生NP(21)个对应的W位异或运算结果,其中针对每一部分,位异或运算的次数为所考虑的部分中的“W位数据”的数量减一。然后,种子产生器/种子重获器300对该NP(21)个W位异或运算结果以及上述的剩余的部分的W位数据进行位异或运算,以产生最终的W位异或运算结果。
图4A与图4B为图1A所示的记忆装置100于另一实施例中的实施细节,其中本实施例的某些运作的顺序和图1A所示实施例的相对应运作的顺序不同。为了简明起见,上述的调整单元114A分别被并入图4A所示的种子产生器114G及图4B所示的种子重获器114Y。也就是说,本实施例的种子产生器114G与种子重获器114Y中的每一者包含调整单元114A。依据本实施例的一变化例,种子产生器114G与种子重获器114Y可为同一个组件。
如图4A所示,在上述的写入/读取命令代表该写入命令的状况下,编码器114E自缓冲存储器116读出数据D1并对数据D1进行错误更正码编码以产生编码数据(于图4A中绘示为附加了奇偶校验码P2的数据D1),并输出该编码数据予种子产生器114G,且透过种子产生器114G将该编码数据输出予随机函数发生器114RA,其中种子产生器114G依据该编码数据产生输入种子S4。另外,随机函数发生器114RA依据输入种子S4产生一随机函数,且依据该随机函数的序列逐位地调整该编码数据的多个位以产生数据DRND4,尤其是依据该随机函数的序列逐位地调整数据D1与奇偶校验码P2两者当中的多个位以产生调整后的数据D1”与调整后的奇偶校验码P2”,其中数据DRND4包含调整后的数据D1”与调整后的奇偶校验码P2”。此外,随机函数发生器114RA将数据DRND4(于图4A的右下角绘示为附加了奇偶校验码P2”的数据D1”)写入闪存120。
如图4B所示,在上述的写入/读取命令代表该读取命令的状况下,存储器控制器110自闪存120所读取的数据DRND4(于图4B的右下角绘示为附加了奇偶校验码P2”的数据D1”)被传送至种子重获器114Y,并透过种子重获器114Y被传送至解随机函数发生器114RB,其中种子重获器114Y依据数据DRND4重获输入种子S4。另外,解随机函数发生器114RB依据输入种子S4产生一随机函数,并依据该随机函数的序列逐位地调整数据DRND4的多个位以产生数据D1以及附加于数据D1的奇偶校验码P2,即为图4A所示的编码器114E所产生的编码数据,其中缓冲存储器116暂时地储存数据D1。此外,解码器114D对接收自解随机函数发生器114RB的编码数据(于图4B中绘示为附加了奇偶校验码P2的数据D1)进行解码;一旦侦测到错误,就产生更正数据以更正缓冲存储器116中的数据D1,以供进一步处理。
依据本实施例的一变化例,随机函数发生器114RA与解随机函数发生器114RB可为同一个组件,因此,它们可合称为随机函数发生器/解随机函数发生器114R。
本发明的好处的一是,通过适当地设计该随机函数的序列以及种子产生器/种子重获器,辅以相关的数据流控制(例如:图1A至图1G的数据流控制),本发明能针对该控制器所存取的数据来进行妥善的数据型样管理,以减少错误的发生。另外,依据以上各个实施例/变化例来实施并不会增加许多额外的成本,甚至比相关技术更能节省成本。因此,基于以上揭露的内容,相关技术的问题已被解决,且整体成本不会增加太多。
以上所述仅为本发明的较佳实施例,凡依本发明申请专利范围所做的均等变化与修饰,皆应属本发明的涵盖范围。
Claims (21)
1.一种用来进行数据整形的方法,该方法应用于一闪存的控制器,该闪存包含多个区块,其特征在于,该方法包含有:
依据欲于该闪存写入/读取的数据的内容来产生/重获至少一随机函数发生器/解随机函数发生器的一输入种子;以及
利用该随机函数发生器/解随机函数发生器依据该输入种子产生一随机函数,以供用来调整该数据的多个位。
2.根据权利要求1所述的方法,其特征在于,其另包含有:
利用至少一种子产生器/种子重获器依据该数据的内容来产生/重获该输入种子。
3.根据权利要求2所述的方法,其特征在于,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或运算,以产生/重获该输入种子。
4.根据权利要求3所述的方法,其特征在于,其中该些部分的数量为偶数。
5.根据权利要求1所述的方法,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
6.根据权利要求5所述的方法,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
7.根据权利要求5所述的方法,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
8.一种记忆装置,其特征在于,其包含有:
一闪存,该闪存包含多个区块;以及
一控制器,用来存取该闪存以及管理该多个区块,并且另针对该控制器本身所存取的数据来进行数据整形,其中该控制器包含有:
至少一随机函数发生器/解随机函数发生器,用来依据一输入种子产生一随机函数,以供用来于该控制器接收到一写入/读取命令时调整该数据的多个位,其中该写入/读取命令用来指示该控制器于该闪存写入/读取该数据;
其中该控制器依据该数据的内容来产生/重获该输入种子。
9.根据权利要求8所述的记忆装置,其特征在于,其中该控制器另包含有:
至少一种子产生器/种子重获器,用来依据该数据的内容来产生/重获该输入种子。
10.根据权利要求9所述的记忆装置,其特征在于,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或运算,以产生/重获该输入种子。
11.根据权利要求10所述的记忆装置,其特征在于,其中该些部分的数量为偶数。
12.根据权利要求8所述的记忆装置,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
13.根据权利要求12所述的记忆装置,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
14.根据权利要求12所述的记忆装置,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
15.一种记忆装置的控制器,该控制器用来存取一闪存,该闪存包含多个区块,其特征在于,该控制器包含有:
一只读存储器,用来储存一程序代码;
一微处理器,用来执行该程序代码以控制对该闪存的存取以及管理该多个区块,其中在该微处理器的控制下,该控制器针对该控制器本身所存取的数据来进行数据整形;以及
至少一随机函数发生器/解随机函数发生器,用来依据一输入种子产生一随机函数,以供用来于该控制器接收到一写入/读取命令时调整该数据的多个位,其中该写入/读取命令用来指示该控制器于该闪存写入/读取该数据;
其中该控制器依据该数据的内容来产生/重获该输入种子。
16.根据权利要求15所述的控制器,其特征在于,其另包含有:
至少一种子产生器/种子重获器,用来依据该数据的内容来产生/重获该输入种子。
17.根据权利要求16所述的控制器,其特征在于,其中该数据包含多个部分;以及该种子产生器/种子重获器分别对该些部分中的至少两部分的相对应位进行异或运算,以产生/重获该输入种子。
18.根据权利要求17所述的控制器,其特征在于,其中该些部分的数量为偶数。
19.根据权利要求15所述的控制器,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含至少一对子序列;以及于每一对子序列当中,一子序列与另一子序列相同。
20.根据权利要求19所述的控制器,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及该些对子序列中的一第一对子序列中的任一子序列的长度与该些对子序列中的一第二对子序列中的任一子序列的长度不相同。
21.根据权利要求19所述的控制器,其特征在于,其中该随机函数发生器/解随机函数发生器针对该输入种子所产生的该随机函数的序列包含多对子序列;以及于该些对子序列中的一对子序列当中,每一子序列的长度不等于一个或多个字节的长度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010522041.9A CN102455948B (zh) | 2010-10-15 | 2010-10-15 | 用来进行数据整形的方法以及相关的记忆装置及其控制器 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201010522041.9A CN102455948B (zh) | 2010-10-15 | 2010-10-15 | 用来进行数据整形的方法以及相关的记忆装置及其控制器 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN102455948A true CN102455948A (zh) | 2012-05-16 |
CN102455948B CN102455948B (zh) | 2014-09-10 |
Family
ID=46039158
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201010522041.9A Active CN102455948B (zh) | 2010-10-15 | 2010-10-15 | 用来进行数据整形的方法以及相关的记忆装置及其控制器 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN102455948B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7158058B1 (en) * | 2002-12-09 | 2007-01-02 | Marvell International Ltd. | Method and apparatus for generating a seed set in a data dependent seed selector |
US20080151618A1 (en) * | 2006-12-24 | 2008-06-26 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US20090323942A1 (en) * | 2008-06-30 | 2009-12-31 | Eran Sharon | Method for page- and block based scrambling in non-volatile memory |
US20100217921A1 (en) * | 2009-02-24 | 2010-08-26 | Samsung Electronics Co., Ltd. | Memory system and data processing method thereof |
CN101853701A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储器件及其操作方法 |
CN102236584A (zh) * | 2010-04-20 | 2011-11-09 | 慧荣科技股份有限公司 | 用来抑制数据错误的方法以及相关的记忆装置及其控制器 |
-
2010
- 2010-10-15 CN CN201010522041.9A patent/CN102455948B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7158058B1 (en) * | 2002-12-09 | 2007-01-02 | Marvell International Ltd. | Method and apparatus for generating a seed set in a data dependent seed selector |
US20080151618A1 (en) * | 2006-12-24 | 2008-06-26 | Sandisk Il Ltd. | Flash memory device and system with randomizing for suppressing errors |
US20090323942A1 (en) * | 2008-06-30 | 2009-12-31 | Eran Sharon | Method for page- and block based scrambling in non-volatile memory |
US20100217921A1 (en) * | 2009-02-24 | 2010-08-26 | Samsung Electronics Co., Ltd. | Memory system and data processing method thereof |
CN101853701A (zh) * | 2009-03-04 | 2010-10-06 | 三星电子株式会社 | 非易失性存储器件及其操作方法 |
CN102236584A (zh) * | 2010-04-20 | 2011-11-09 | 慧荣科技股份有限公司 | 用来抑制数据错误的方法以及相关的记忆装置及其控制器 |
Also Published As
Publication number | Publication date |
---|---|
CN102455948B (zh) | 2014-09-10 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
TWI455136B (zh) | 用來進行資料整形之方法以及相關之記憶裝置及其控制器 | |
US10771091B2 (en) | Flash memory apparatus and storage management method for flash memory | |
US20180285195A1 (en) | Flash memory apparatus and storage management method for flash memory | |
US9552290B2 (en) | Partial R-block recycling | |
TWI446350B (zh) | 用來減少無法更正的錯誤之方法以及記憶裝置及其控制器 | |
US8719491B2 (en) | Encoding flash memory data with a randomizer using different seeds for different sectors | |
TW201314449A (zh) | 儲存資料之系統及方法 | |
US9032278B2 (en) | Method for performing data shaping, and associated memory device and controller thereof | |
CN104750571A (zh) | 用以进行错误纠正的方法、存储装置与存储装置的控制器 | |
JP2010541049A (ja) | 自己回復形不揮発性メモリ | |
CN109857584B (zh) | 于记忆装置进行访问控制的方法、记忆装置和其控制器 | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
CN102236585B (zh) | 提升错误更正能力的方法以及相关的记忆装置及其控制器 | |
CN109783005B (zh) | 控制记忆装置的方法、记忆装置、及其控制器和电子装置 | |
US20240154624A1 (en) | Flash memory apparatus and storage management method for flash memory | |
TW201320090A (zh) | 基於匹配位元型樣之資料修正 | |
TWI698742B (zh) | 用來於一記憶裝置中進行存取控制之方法以及記憶裝置及其控制器 | |
CN102141944B (zh) | 用来减少无法更正的错误的方法以及记忆装置及其控制器 | |
CN102455948B (zh) | 用来进行数据整形的方法以及相关的记忆装置及其控制器 | |
US11372719B1 (en) | Memory system | |
US11870461B2 (en) | Failure-tolerant error correction layout for memory sub-systems | |
CN102455975B (zh) | 用来进行数据整形的方法以及其记忆装置及控制器 | |
CN114077515A (zh) | 数据写入方法、存储器控制电路单元以及存储器存储装置 | |
CN117409845A (zh) | 分组管理方法、存储器存储装置及存储器控制器 | |
JP2007179480A (ja) | メモリコントローラおよびフラッシュメモリシステム |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant |