CN100557715C - 利用一组ecc电路并行处理多组数据的方法 - Google Patents
利用一组ecc电路并行处理多组数据的方法 Download PDFInfo
- Publication number
- CN100557715C CN100557715C CNB2006100620635A CN200610062063A CN100557715C CN 100557715 C CN100557715 C CN 100557715C CN B2006100620635 A CNB2006100620635 A CN B2006100620635A CN 200610062063 A CN200610062063 A CN 200610062063A CN 100557715 C CN100557715 C CN 100557715C
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- ecc
- group
- write
- 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.)
- Expired - Fee Related
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/07—Responding to the occurrence of a fault, e.g. fault tolerance
- G06F11/08—Error detection or correction by redundancy in data representation, e.g. by using checking codes
- G06F11/10—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
- G06F11/1008—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
- G06F11/1068—Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices in sector programmable memories, e.g. flash disk
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Quality & Reliability (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Techniques For Improving Reliability Of Storages (AREA)
Abstract
本发明公开了一种利用一组ECC(Error Correction Code)编码/译码电路并行处理多组数据的方法,以便于对各种宽度(8/16/32/64等位宽)的闪存记忆体数据总线上的数据流产生一组错误修正码来保护数据的正确性的方法。所述的方法如下:根据闪存记忆体数据宽度自动将ECC工作频率倍频,然后将ECC的时序切割,在每一个时序分别处理数据总线上的一个特定的位组,这样就可以在不影响控制器数据流的基本时序和构架下利用一组ECC完成资料错误的检查以及编码的动作。采用本发明的方法,可以减少ECC电路的使用数目,以达到降低成本的目的,有广阔的应用前景。
Description
技术领域
本发明属于闪存记忆体存储领域,特别适用于系统数据总线宽度是以8的自然数倍进行扩展的闪存存储领域。在存取闪存记忆体时通过一组ECC电路对多组数据进行编码、侦错以及修正的方法。
背景技术
闪存记忆体和机械式硬盘是目前市场上两个主流的资料存储媒介,其中闪存记忆体最主要的好处在于省电以及具有较小的体积。目前市场上的USB存储盘、MP3播放器、PMP个人多媒体播放器以及SD/MMC/MS等存储卡绝大部分都是以闪存记忆体作为存储的媒介。
闪存记忆体本身有一些先天性的缺陷,例如价格高并且在长时间使用之后,无法保证写入资料的正确性等等。因此,要改善以上的缺点就需要闪存记忆体的使用寿命、增加生产时的良率、降低成本且加入ECC电路来使闪存记忆体具有高可靠性。并可以利用一套数学的算法(例如Reed-Solomon),搭配存储的资料和ECC(Error Correction Code)编译码硬件电路,及时对资料进行保护。目前闪存记忆体的种类分为SLC(Single Level Cell)与MLC(Multiple Level Cell)。其中MLC的规格书上要求,存取一个512位字节的区块时需要可以修正4位字节错误的ECC编译码硬件电路。
目前市面上的ECC硬件处理机制,对于每一个字节都需要一组ECC硬件电路来处理,如图9所示,M代表目前有多少颗闪存记忆体,N表示开始传输后经过了多少个脉冲,而C000代表目前此传输会存在缓存区的位置。举例来说,在一个32位宽的数据总线上就需要四组ECC编译码硬件电路。此一作法除了会增加硬件电路之外,对于16位和8位宽数据总线的应用来说就需要两个不同硬件版本的控制器,因为需要不同的ECC硬件电路数目,所以也会对控制器的生产和库存造成负担。
发明内容
本发明的目的在于利用一组ECC(Error Correction Code)编译码电路,对8的自然数倍位宽的数据流进行编码、侦测以及修正以保护资料的正确性,且可以在正常一个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实际操作方式
图10:ECC编码流程图
图11:ECC解码流程图
【主要组件符号说明】
A10:闪存记忆体存储媒介:数据存储的媒介。
A20:闪存记忆体控制器:启动DMA将资料由缓存区搬移到闪存中,读取时,根据译码的结果决定是否需要执行修正的动作。
A30:微处理控制器:系统的主要控制者,当其开始对闪存记忆体控制送出写入或是读出的命令时,便开始系统ECC相关的动作。
A40:ECC硬件电路:不论编码或是译码,此电路会对数据总线上所经过的每一个数据,利用错误侦错理论的数学算法,实时的算出编码或是侦错后的结果。
A50:传送缓存区:当数据由闪存记忆体中读出时,不直接将数据传送到远程,先将数据放在此传送缓存区内。
A55:接收缓存区:当收到由远程所要写入的数据时,会先将数据放在此缓存区中,并不会马上将数据写入到闪存记忆体中。直到缓存区中的数据长度为512字节时,才启动ECC机制,将数据写入到闪存记忆体中。
A60:Host Interface:此为和外面沟通的接口,例如USB或是SD等等。利用此接口便可以和其它电子设备交换数据。
A70:ECC缓存器:ECC硬件中,编码、侦测或是修正时所需要用到的缓存器。例如在Reed-Solomon算法中,此ECC缓存器便是Parity以及Syndrome缓存器。
A80:侦测电路:此一电路用在检查在读取的过程中,是否有错误发生。如果没有错误发生,通知Host Interface将传送缓存区内的数据送出。
A90:修正电路:当侦错电路发现错误时,便呼叫此电路。利用ECC暂存器,便可以对传送缓冲存区内资料作修正的动作。当所有的错误都修正之后,通知Host Interface传送缓存区内的数据送出。
A95:编码电路:当数据由传送缓冲区写入闪存记忆体并完成时,编码电路会自动启动,将ECC缓存器的值写入到闪存中ECC修正码所存放的位置。
B10:NAND Flash Pool,放置闪存记忆体的位置。在32位宽的数据总线上需要放置两颗x16的闪存记忆体,或是四颗x8的闪存记忆体。
B20:闪存记忆体控制器,接收来自核心处理器要由闪存记忆体读入或是写出的命令,此一命令会启动DMA搬移数据。
B30:DMA控制器,负责快速搬移数据。
B40:在ECC硬件和闪存记忆体之间的数据总线,此数据总线的宽度是可以经由闪存记忆体控制器所设定的。
B50:ECC缓存器:ECC硬件中,编码、侦测或是修正时所需要用到的缓存器。例如在Reed-Solomon算法中,此ECC缓存器便是Parity以及Syndrome缓存器。
B60:ECC硬件电路,此硬件电路不会修改数据总线上的数据,其会将数据切割成数个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个数据108,并依此往下类推。数据经过ECC电路并不会马上的传送到远程,会先暂存在一个传送缓存区中103,此缓存区大小为512字节。当一个基本的讯息(528字节)处理完成时,ECC的检查电路104会自动检查ECC电路上的状态,并确认是否有错误发生。如果此时没有发现错误,系统会将传送缓冲区的数据送到远程。如果发现数据有错误时,修正电路会自动的捉取ECC上修正错误时必要的信息,进行修正错误的动作105。当修正动作结束时,将数据送到远程(106)。详细的流程图请参阅图11。
在写入数据时,如图4所示,闪存记忆体控制器200首先启动DMA将数据由接收缓存区经由ECC203搬移到传送闪存记忆体中,ECC电路会依据数据总线宽度自动作倍频201的动作,在第一个脉冲时间将第1个字节数据写入到第一颗闪存记忆体206,下一个脉冲时,将下一个字节数据写入到第二颗闪存记忆体207,依此类推。当数据传送到第512位时,编码电路会自动启动,读取ECC缓存器202,并且将这些数据依照下面的原则写入不同的闪存记忆体中,缓存器的第1个字节写到第一颗闪存记忆体,第2个字节写到第二颗闪存记忆体,第M个字节写到第M与闪存数目的余数颗闪存中,M为大于或者等于3的自然数。详细的流程图请参阅图10。
Claims (6)
1、一种利用一组ECC编译码硬件电路并行处理多组数据的方法,以便于对8的自然数倍位宽的闪存记忆体数据总线上的数据流进行处理并产生一组错误修正码以保证数据的正确性,该方法包含:根据闪存记忆体数据总线宽度自动将ECC工作频率倍频,倍频数为闪存记忆体数据宽度除以基本ECC处理的位元组位数,然后将ECC的时序切割,在每一个时序分别处理数据总线上的一个特定的位元组。
2、如权利要求1所述的方法,其特征在于,对8的自然数倍位宽的闪存记忆体数据总线上的数据流进行的处理过程包含从读取闪存记忆体读取数据和将数据写入闪存记忆体。
3、如权利要求2所述的方法,其特征在于:从闪存记忆体读取数据的步骤具体为:在ECC编解码硬件电路倍频后的第一个脉冲从第一颗闪存读取最低字节的数据,第二个脉冲从第二颗闪存读取次低字节的数据,直至读取完闪存中整个总线宽度的数据,并将读取的数据存储到缓冲区,当读取完闪存中整个总线宽度的数据后,重新从第一颗闪存读取数据,再从第二颗闪存读取数据,直至闪存中的所有数据读取完毕。
4、如权利要求2所述的方法,其特征在于:将数据写入闪存记忆体的步骤具体为:在ECC编解码硬件电路倍频后的第一个脉冲将数据的最低字节写入到第一颗闪存,第二个脉冲将数据的次低字节写入第二颗闪存,直至将512位元组的数据写入闪存。
5、如权利要求4所述的方法,其特征在于,在将512位元组的数据写入闪存记忆体后,所述方法还包括下述步骤:将所述512位元组的数据后的第一个字节的数据写入第一颗闪存,第二个字节的数据写入第二颗闪存,第M个字节的数据写入到第M与闪存数目的余数颗闪存中,直至所有的缓存器写完为止,所述M为大于或者等于3的自然数。
6、如权利要求1至5任一权利要求所述的方法,其特征在于,闪存记忆体存储装置为U盘、PMP播放器、存储卡或MP3播放器。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100620635A CN100557715C (zh) | 2006-08-11 | 2006-08-11 | 利用一组ecc电路并行处理多组数据的方法 |
PCT/CN2007/002412 WO2008028400A1 (fr) | 2006-08-11 | 2007-08-13 | Procédé pour traiter simultanément plusieurs groupes de données au moyen d'un seul circuit ecc |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CNB2006100620635A CN100557715C (zh) | 2006-08-11 | 2006-08-11 | 利用一组ecc电路并行处理多组数据的方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN1996496A CN1996496A (zh) | 2007-07-11 |
CN100557715C true CN100557715C (zh) | 2009-11-04 |
Family
ID=38251538
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CNB2006100620635A Expired - Fee Related CN100557715C (zh) | 2006-08-11 | 2006-08-11 | 利用一组ecc电路并行处理多组数据的方法 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN100557715C (zh) |
WO (1) | WO2008028400A1 (zh) |
Families Citing this family (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009086692A1 (zh) * | 2008-01-07 | 2009-07-16 | Fortune Spring Technology (Shenzhen) Corporation | 嵌入式系统利用nand闪存记忆体储存及启动的处理方法 |
KR101314232B1 (ko) * | 2009-07-01 | 2013-10-02 | 실리콘 모션 인코포레이티드 | 에러 정정 코드의 부호화 및 복호화 방법 그리고 코덱 |
CN102654854A (zh) * | 2011-03-04 | 2012-09-05 | 上海华虹集成电路有限责任公司 | 一种可动态调整ECC纠错能力的Nandflash控制器 |
KR20170050935A (ko) * | 2015-11-02 | 2017-05-11 | 에스케이하이닉스 주식회사 | 온 칩 ecc 회로를 포함하는 메모리 장치 및 시스템 |
CN112530509A (zh) * | 2018-12-26 | 2021-03-19 | 上海忆芯实业有限公司 | 为存储设备提供ecc的方法、ecc模块及存储设备 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2002071693A2 (en) * | 2001-03-05 | 2002-09-12 | Raze Technologies, Inc. | Wireless access system using multiple modulation formats in tdd frames and method of operation |
US7051264B2 (en) * | 2001-11-14 | 2006-05-23 | Monolithic System Technology, Inc. | Error correcting memory and method of operating same |
CN100470464C (zh) * | 2005-10-28 | 2009-03-18 | 清华大学 | 基于改进的蒙哥马利算法的模乘器 |
-
2006
- 2006-08-11 CN CNB2006100620635A patent/CN100557715C/zh not_active Expired - Fee Related
-
2007
- 2007-08-13 WO PCT/CN2007/002412 patent/WO2008028400A1/zh active Application Filing
Also Published As
Publication number | Publication date |
---|---|
WO2008028400A1 (fr) | 2008-03-13 |
CN1996496A (zh) | 2007-07-11 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN102099793B (zh) | 根据固态存储器的擦除计数进行误差校正的方法和装置 | |
CN102880521B (zh) | 非易失性存储器装置中管理块和存取数据页的方法及设备 | |
US9229806B2 (en) | Block closure techniques for a data storage device | |
KR101369444B1 (ko) | 정정 불가능한 에러를 해결하는 하이브리드 에러 정정 코딩 | |
US9043678B2 (en) | Detecting effect of corrupting event on preloaded data in non-volatile memory | |
CN101699406B (zh) | 数据储存系统与方法 | |
US9165670B2 (en) | Data retention detection techniques for a data storage device | |
CN103544073A (zh) | 读取闪存中区块的数据的方法及相关的记忆装置 | |
TW201506953A (zh) | 減小資料儲存裝置的讀取延時之系統及方法 | |
US8891301B1 (en) | Power drop protection for a data storage device | |
CN100458718C (zh) | 一种闪存存储装置及其数据读取和写入方法 | |
TW201351425A (zh) | 用於解碼取決於干擾條件下之資料之系統與方法 | |
TW201346923A (zh) | 使用單一錯誤偵測奇偶校驗的抹除修正 | |
WO2013138115A1 (en) | Statistical distribution based variable-bit error correction coding | |
CN103038830A (zh) | 借助元数据标签的非规则奇偶校验分布检测 | |
CN100557715C (zh) | 利用一组ecc电路并行处理多组数据的方法 | |
CN105808371A (zh) | 数据备份与恢复方法、控制芯片及存储装置 | |
CN110058795A (zh) | 管理闪存模块的方法及相关的闪存控制器及电子装置 | |
US8982617B1 (en) | Block closure techniques for a data storage device | |
CN102543196B (zh) | 数据读取方法、存储器储存装置及其控制器 | |
US20100287448A1 (en) | Flash memory device with rectifiable redundancy bit and method of controlling the same | |
CN103531246A (zh) | 快速以读代写的存储器纠错方法 | |
CN101308706B (zh) | 适用于闪存的数据写入方法及错误修正编解码方法 | |
CN104252317A (zh) | 数据写入方法、存储器控制器与存储器存储装置 | |
CN102063342A (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 | ||
C14 | Grant of patent or utility model | ||
GR01 | Patent grant | ||
C17 | Cessation of patent right | ||
CF01 | Termination of patent right due to non-payment of annual fee |
Granted publication date: 20091104 Termination date: 20110811 |