CN1996496A - 单一ecc电路并行处理多组数据的方法 - Google Patents
单一ecc电路并行处理多组数据的方法 Download PDFInfo
- Publication number
- CN1996496A CN1996496A CNA2006100620635A CN200610062063A CN1996496A CN 1996496 A CN1996496 A CN 1996496A CN A2006100620635 A CNA2006100620635 A CN A2006100620635A CN 200610062063 A CN200610062063 A CN 200610062063A CN 1996496 A CN1996496 A CN 1996496A
- Authority
- CN
- China
- Prior art keywords
- data
- flash memory
- ecc
- frequency
- 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.)
- Granted
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 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实际操作方式
图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个数据(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。
Claims (7)
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等。
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 true CN1996496A (zh) | 2007-07-11 |
CN100557715C 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) |
Cited By (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009086692A1 (zh) * | 2008-01-07 | 2009-07-16 | Fortune Spring Technology (Shenzhen) Corporation | 嵌入式系统利用nand闪存记忆体储存及启动的处理方法 |
CN102654854A (zh) * | 2011-03-04 | 2012-09-05 | 上海华虹集成电路有限责任公司 | 一种可动态调整ECC纠错能力的Nandflash控制器 |
CN101938280B (zh) * | 2009-07-01 | 2013-09-25 | 慧帝科技(深圳)有限公司 | 错误修正码的编码及解码方法以及编码解码器 |
CN106648954A (zh) * | 2015-11-02 | 2017-05-10 | 爱思开海力士有限公司 | 包括片上错误校正码电路的存储器件和系统 |
CN110310693A (zh) * | 2018-12-26 | 2019-10-08 | 贵阳忆芯科技有限公司 | 具有缓存的In-Line 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
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
WO2009086692A1 (zh) * | 2008-01-07 | 2009-07-16 | Fortune Spring Technology (Shenzhen) Corporation | 嵌入式系统利用nand闪存记忆体储存及启动的处理方法 |
CN101938280B (zh) * | 2009-07-01 | 2013-09-25 | 慧帝科技(深圳)有限公司 | 错误修正码的编码及解码方法以及编码解码器 |
CN102654854A (zh) * | 2011-03-04 | 2012-09-05 | 上海华虹集成电路有限责任公司 | 一种可动态调整ECC纠错能力的Nandflash控制器 |
CN106648954A (zh) * | 2015-11-02 | 2017-05-10 | 爱思开海力士有限公司 | 包括片上错误校正码电路的存储器件和系统 |
CN106648954B (zh) * | 2015-11-02 | 2021-04-27 | 爱思开海力士有限公司 | 包括片上错误校正码电路的存储器件和系统 |
CN110310693A (zh) * | 2018-12-26 | 2019-10-08 | 贵阳忆芯科技有限公司 | 具有缓存的In-Line ECC模块 |
CN110310693B (zh) * | 2018-12-26 | 2021-01-08 | 上海忆芯实业有限公司 | 具有缓存的In-Line ECC模块 |
Also Published As
Publication number | Publication date |
---|---|
CN100557715C (zh) | 2009-11-04 |
WO2008028400A1 (fr) | 2008-03-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10540289B2 (en) | Data storage device and flash memory control method | |
CN102023815B (zh) | 在固态存储器中实现raid | |
CN102099793B (zh) | 根据固态存储器的擦除计数进行误差校正的方法和装置 | |
US9229806B2 (en) | Block closure techniques for a data storage device | |
CN101699406B (zh) | 数据储存系统与方法 | |
CN102880521B (zh) | 非易失性存储器装置中管理块和存取数据页的方法及设备 | |
US9116824B2 (en) | System and method to reduce read latency of a data storage device | |
EP2530595B1 (en) | System and method of tracking error data within a storage device | |
CN102449613B (zh) | 固态装置中的面向对象的存储器 | |
US9165670B2 (en) | Data retention detection techniques for a data storage device | |
US11030096B2 (en) | Method of identifying and preparing a key block in a flash memory system and memory controller therefor | |
US8996950B2 (en) | Erasure correction using single error detection parity | |
US20120110417A1 (en) | Hybrid error correction coding to address uncorrectable errors | |
CN101599305B (zh) | 具有数据修复功能的储存系统及其数据修复方法 | |
CN103038830A (zh) | 借助元数据标签的非规则奇偶校验分布检测 | |
TW201351425A (zh) | 用於解碼取決於干擾條件下之資料之系統與方法 | |
US9129689B2 (en) | Tracking erase pulses for non-volatile memory | |
US7844878B2 (en) | Dynamic electronic correction code feedback to extend memory device lifetime | |
CN109582216B (zh) | 数据储存装置与存储器装置的数据处理方法 | |
CN103984506B (zh) | 闪存存储设备数据写的方法和系统 | |
CN101901169B (zh) | 扫描装置及方法 | |
CN105808371A (zh) | 数据备份与恢复方法、控制芯片及存储装置 | |
CN100557715C (zh) | 利用一组ecc电路并行处理多组数据的方法 | |
CN107799150A (zh) | 3d nand闪存的错误缓解 | |
US8982617B1 (en) | Block closure techniques for a data storage device |
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 |