单一ecc电路并行处理多组数据的方法

文档序号:6759815阅读:106来源:国知局
专利名称:单一ecc电路并行处理多组数据的方法
技术领域
本发明属于闪存记忆体存储领域,特别适用于系统数据总线宽度是以8的倍数进行扩展的闪存存储领域。在存取闪存记忆体时通过一组ECC电路对多组数据进行编码、侦错以及修正的方法。
背景技术
闪存记忆体和机械式硬盘是目前市场上两个主流的资料存储媒介,其中闪存记忆体最主要的好处在于省电以及具有较小的体积。目前市场上的USB存储盘、MP3播放器、PMP个人多媒体播放器以及SD/MMC/MS等存储卡绝大部分都是以闪存记忆体作为存储的媒介。
闪存记忆体本身有一些先天性的缺陷,例如价格高并且在长时间使用之后,无法保证写入资料的正确性等等。因此,要改善以上的缺点就需要闪存记忆体的使用寿命、增加生产时的良率、降低成本且加入ECC电路来使闪存记忆体具有高可靠性。并可以利用一套数学的算法(例如Reed-Solomon),搭配存储的资料和ECC(Error Correction Code)编码/译码硬件电路,及时对资料进行保护。目前闪存记忆体的种类分为SLC(Single Level Cell)与MLC(Multiple LevelCell)。其中MLC的规格书上要求,存取一个512位字节的区块时需要可以修正4位字节错误的ECC编码/译码硬件电路。
目前市面上的ECC硬件处理机制,对于每一个字节都需要一组ECC硬件电路来处理,如图9所示,M代表目前有多少颗闪存记忆体,N表示开始传输后经过了多少个脉冲,而C000代表目前此传输会存在缓存区的位置。举例来说,在一个32位宽的数据总线上就需要四组ECC编码/译码硬件电路。此一作法除了会增加硬件电路之外,对于16位和8位宽数据总线的应用来说就需要两个不同硬件版本的控制器,因为需要不同的ECC硬件电路数目,所以也会对控制器的生产和库存造成负担。

发明内容
本发明的目的在于利用一组ECC(Error Correction Code)编码/译码电路,对16/32/64位宽的数据流进行编码、侦测以及修正以保护资料的正确性,且可以在正常一个ECC数据流时间内处理数个不同字节的资料。透过本发明可以减少当数据总线宽度为8的倍数时所需要ECC的数目,达到降低成本的目的。
当资料被写入到闪存记忆体时,此电路可即时产生错误修正码,且当数据总线上的资料传输到某一数量时,此ECC电路会自动的将资料保护写入到存储的闪存记忆体上。此优点可以降低ECC电路的使用数目,以达到降低成本的目的。
本发明是利用将ECC工作频率倍频的方式,然后将ECC的时序切割,每个时序依次处理数据总线上的一个特定的字节,所以在不影响控制器数据总线的基本时序及架构的前提下,可以利用一组ECC完成资料错误的检查以及编码的动作。
本发明可以被应用在任何使用闪存记忆体的存储装置上,以降低控制器的成本。


图1系统架构2系统组件3系统编码示意4系统译码示意5在32位数据总线宽度时,ECC工作频率图6在16位数据总线宽度时,ECC工作频率图7在8位数据总线宽度时,ECC工作频率图8在64位数据总线宽度时,ECC工作频率图9目前市场上ECC实际操作方式图10ECC编码流程11ECC解码流程图主要组件符号说明A10闪存记忆体存储媒介数据存储的媒介。
A20闪存记忆体控制器启动DMA将资料由缓存区搬移到闪存中,读取时,根据译码的结果决定是否需要执行修正的动作。
A30微处理控制器系统的主要控制者,当其开始对闪存记忆体控制送出写入或是读出的命令时,便开始系统ECC相关的动作。
A40ECC硬件电路不论编码或是译码,此电路会对数据总线上所经过的每一个数据,利用错误侦错理论的数学算法,实时的算出编码或是侦错后的结果。
A50传送缓存区当数据由闪存记忆体中读出时,不直接将数据传送到远程,先将数据放在此传送缓存区内。
A55接收缓存区当收到由远程所要写入的数据时,会先将数据放在此缓存区中,并不会马上将数据写入到闪存记忆体中。直到缓存区中的数据长度为512字节时,才启动ECC机制,将数据写入到闪存记忆体中。
A60Host Interface此为和外面沟通的接口,例如USB或是SD等等。利用此接口便可以和其它电子设备交换数据。
A70ECC缓存器ECC硬件中,编码、侦测或是修正时所需要用到的缓存器。例如在Reed-Solomon算法中,此ECC缓存器便是Parity以及Syndrome缓存器。
A80侦测电路此一电路用在检查在读取的过程中,是否有错误发生。如果没有错误发生,通知Host Interface将传送缓存区内的数据送出。
A90修正电路当侦错电路发现错误时,便呼叫此电路。利用ECC暂存器,便可以对传送缓冲存区内资料作修正的动作。当所有的错误都修正之后,通知Host Interface传送缓存区内的数据送出。
A95编码电路当数据由传送缓冲区写入闪存记忆体并完成时,编码电路会自动启动,将ECC缓存器的值写入到闪存中ECC修正码所存放的位置。
B10NAND Flash Pool,放置闪存记忆体的位置。在32位宽的数据总线上需要放置两颗x16的闪存记忆体,或是四颗x8的闪存记忆体。
B20闪存记忆体控制器,接收来自核心处理器要由闪存记忆体读入或是写出的命令,此一命令会启动DMA搬移数据。
B30DMA控制器,负责快速搬移数据。
B40在ECC硬件和闪存记忆体之间的数据总线,此数据总线的宽度是可以经由闪存记忆体控制器所设定的。
B50ECC缓存器ECC硬件中,编码、侦测或是修正时所需要用到的缓存器。例如在Reed-Solomon算法中,此ECC缓存器便是Parity以及Syndrome缓存器。
B60ECC硬件电路,此硬件电路不会修改数据总线上的数据,其会将数据切割成数个8位的数据,送到传输缓存区上。或是将接收缓存区上的数据,以倍频的方式以8位的方式存取,然后组合成B40数据总线宽度的数据。
B70传送缓存区当数据由闪存记忆体中读出时,不直接将数据传送到远程,先将数据放在此传送缓存区内。
B80接收缓存区当收到由远程所要写入的数据时,会先将数据放在此缓存区中,并不会马上将数据写入到闪存记忆体中。直到缓存区中的数据长度为512字节时,才启动ECC机制,将数据写入到闪存记忆体中。
B90闪存记忆体控制器会依据目前B40数据总线的宽度,自动设定倍频的倍数。
具体实施例方式
基本上,本发明所使用的方法是将ECC的执行速度以倍频的方式进行,不同宽度的数据总线的倍频方式如图5、图6、图7和图8所示。ECC的一个基本处理单元是8位,故将ECC的执行频率乘上数据总线的宽度除以8的倍数。举例来说倘若目前数据总线的工作频率为30MHz,系统数据总线的宽度为32位,则系统会自动的将ECC电路的工作频率设定在120MHz。且ECC电路会自动的将频率分割成数份,于第一个脉冲会处理数据总线上第0位到第7位的数据,下一个脉冲会处理第8位到第15位的数据,然后依此类推。
使用者可以设定目前数据总线的宽度以及数据总线的工作频率,ECC电路必须可以自动的设定正确的工作频率。
为使审查人员可以更进一步的了解本发明的流程以及所使用的方法,将本方法的过程以及使用的方法,利用下方面的流程图加以说明。
在读取数据时,如图3所示,闪存记忆体控制器(100)首先启动DMA将数据由闪存记忆体经由ECC搬移到传送缓存区(103)。ECC电路会自动根据目前所设定的数据总线宽度进行倍频(101),第一个脉冲会处理最低的8位数据(107),下一个脉冲处理次低的8个数据(107),并依此往下类推。数据经过ECC电路并不会马上的传送到远程,会先暂存在一个传送缓存区中(103),此缓存区大小为512字节。当一个基本的讯息(528字节)处理完成时,ECC的检查电路(104)会自动检查ECC电路上的状态,并确认是否有错误发生。如果此时没有发现错误,系统会将传送缓冲区的数据送到远程。如果发现数据有错误时,修正电路会自动的捉取ECC上修正错误时必要的信息,进行修正错误的动作(105)。当修正动作结束时,将数据送到远程(106)。详细的流程图请参阅图11。
在写入数据时,如图4所示,闪存记忆体控制器(200)首先启动DMA将数据由接收缓存区经由ECC(203)搬移到传送闪存记忆体中,ECC电路会依据数据总线宽度自动作倍频(201)的动作,在第一个脉冲时间将第1个字节数据写入到第一颗闪存记忆体(206),下一个脉冲时,将下一个字节数据写入到第二颗闪存记忆体(207),依此类推。当数据传送到第512位时,编码电路会自动启动,读取ECC缓存器(202),并且将这些数据依照下面的原则写入不同的闪存记忆体中,缓存器的第1个字节写到第一颗闪存记忆体,第2个字节写到第二颗闪存记忆体,第N个字节写到第N%(闪存记忆体数目)颗闪存记忆体。详细的流程图请参阅图10。
权利要求
1.一种利用单一ECC编码/译码硬件电路并行处理多组数据的方法,以便于对8/16/32/64等8的倍数位宽的闪存记忆体数据总线上的数据流进行处理并产生一组错误修正码以保证数据的正确性。该方法包含根据闪存记忆体数据总线宽度自动将ECC工作频率倍频,然后将ECC的时序切割,在每一个时序分别处理数据总线上的一个特定的位元组,这样就可以在不影响控制器数据流的基本时序和架构下利用一组ECC完成资料错误的检查以及编码的动作。
2.如权利要求1所述的单一ECC编码/译码硬件电路,其特征在于ECC电路的工作频率可依闪存记忆体总线宽度自行倍频,倍频数为闪存记忆体数据宽度除以基本ECC处理的位元组(即8位)。
3.如权利要求1所述的对8/16/32/64等8的倍数位宽的闪存记忆体数据总线上的数据流进行的处理过程包含在读取闪存记忆体数据时的处理和将数据写入闪存记忆体时的处理。
4.如权利要求3所述的读取闪存记忆体数据时的处理,其特征在于在读取闪存记忆体数据时,如同权利要求2所述将ECC工作频率依闪存记忆体数据总线宽度倍频之后,会在其倍频后的第一个脉冲读取最低的字节(bit0~7)的闪存,第二个脉冲读取次低的字节(bit8~15)的闪存,以下如此类推。在读取完整个总线宽度的数据后,将此数据存储到缓冲区。当读出整个数据宽度的数据后,会重新从第一颗闪存读取数据,循环直至读完所有的数据为止。
5.如权利要求3所述的将数据写入闪存记忆体时的处理,其特征在于在要将数据写入闪存记忆体时,如同权利要求2所述将ECC工作频率以闪存记忆体数据总线宽度倍频之后,会在其倍频后的第一个脉冲将数据的最低字节(bit0~7)写入到第一颗闪存,第二个脉冲会写入次低字节(bit8~15)的资料,以下如此类推,直至写完512位元组。
6.在完成权利要求5所述的处理后,系统会将ECC缓存器中的数据依如下原则写入闪存记忆体中,第一个字节的数据写入第一颗闪存,第二个字节的数据写入第二颗闪存,第M的字节的数据写入到第M%(总线宽度/8)+1颗闪存中,直至所有的缓存器写完为止。
7.如权利要求1至6所述的以单一ECC编码/译码硬件电路并行处理多组数据的技术,其中以其倍频数目会依目前的总线宽度自动调整工作频率的技术适用于任何的闪存记忆体存储装置,例如U盘(包含但不限于USB Pendriver1.1/2.0)、PMP Player、存储卡和MP3 Player等。
全文摘要
本发明公开了一种利用一组ECC(Error Correction Code)编码/译码电路,对各种宽度(8/16/32/64等位宽)的闪存记忆体数据总线上的数据流产生一组错误修正码来保护数据的正确性的方法。所述的方法如下根据闪存记忆体数据宽度自动将ECC工作频率倍频,然后将ECC的时序切割,在每一个时序分别处理数据总线上的一个特定的位组,这样就可以在不影响控制器数据流的基本时序和架构下利用一组ECC完成资料错误的检查以及编码的动作。采用本发明的方法,可以减少ECC电路的使用数目,以达到降低成本的目的,有广阔的应用前景。
文档编号G11C29/44GK1996496SQ20061006206
公开日2007年7月11日 申请日期2006年8月11日 优先权日2006年8月11日
发明者林清益 申请人:福昭科技(深圳)有限公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1