用于快速eeprom存贮器阵列的错误管理处理的制作方法

文档序号:6744594阅读:139来源:国知局
专利名称:用于快速eeprom存贮器阵列的错误管理处理的制作方法
背景技术
发明领域本发明涉及快速EEPROM存贮器阵列,更具体地,本发明涉及用于为这种阵列提供错误管理的方法和装置。现有技术最近,快速存贮器(快速EEPROM存贮器)已经用作长期存贮器的一种新形式。快速EEPROM存贮器阵列由大量的浮置栅金属氧化硅场效应晶体管器件构成,这些晶体管器件典型地以行和列的形式和电路一起构成存贮器单元,其中的电路用于访问特定单元和将这些单元的存贮器晶体管设置成不同的存贮器状态。这种存贮器晶体管可以通过在其浮置栅上存储电荷而进行编程。当电源从该阵列中移去时这些电荷能够保持住。其电荷电平可以通过询问这些器件而检测。这种阵列可以用来提供硬盘驱动器的一种更加小而轻的功能等效物,它的操作速度更快并且对物理损坏不敏感。快速EEPROM存贮器阵列特别适用于便携式计算机,这种计算机中的空间非常宝贵,并且其重量也特别重要。
在最初的设计中,每个快速EEPROM存贮器件存储一位数据。如果编程快速EEPROM存贮器件而使得电荷存储在浮置栅上,那么其状态一般称为“0”或编程态;而如果几乎没有或没有电荷存储在浮置栅上,则其一般称为“1”或擦除态。最近已经发现,用于快速EEPROM存贮器阵列的晶体管器件可以制成以一些高于所述擦除态电荷电平的多个不同电平存储电荷。实质上,在编程或擦除过程中,通过改变施加到器件端子上的电压和施加的持续时间,可以在这种器件的浮置栅上存储四个或更多的不同的电荷电平(包括擦除电平);并且可以检测到这些不同的电荷电平(器件状况或状态)。这样就允许在存贮器阵列中的快速EEPROM器件中每一器件存储的位数多于1位并且极大地增加了这种阵列的存储量。采用这种方法的器件称为多位单元。
在快速EEPROM单元中的多于1位数据的存储产生了一些问题。对任意特定存贮器件来讲,由于其可存储的电荷的最大值实质上是固定的,因此,当存储多个电平时,在表示由单元存储的不同数据值的电荷电平之间的差别将非常小。不同的电荷电平通过与参考单元上的电荷电平比较而被读取。电荷往往会从某些存贮器件的浮置栅上随着时间而泄漏。仅存储1位数据的器件的浮置栅上的相对小的泄漏量可以改变多位单元的电荷电平,而这个改变足以在与参考电荷电平比较时产生一错误值。因此,由于从存储一些不同的电荷电平的特定快速EEPROM单元的浮置栅上的电荷泄漏而引起更多的错误是可能的。
希望能够纠正因快速EEPROM存贮器件的浮置栅的泄漏而引起的错误,使得这些错误不会影响存储的数据的正确性。发明简述因此,本发明的一个目的是提供一种方法和装置,用于保证存储在快速EEPROM存贮器阵列中的数据的完整性,其中的每个存贮器件能够存储多于1位的数据。
本发明的这种和其它的目的可利用包括错误检测和纠正电路的装置和一种方法来实现,其中的方法在错误能够影响由快速EEPROM存贮器阵列提供的数据的正确性之前,利用所述电路检测并纠正能够在以多位/单元的格式存储于快速EEPROM存贮器阵列的数据中产生的那些错误。
通过参考附图所作的详细描述,将会更好地理解本发明的这种和其它目的和特性,在附图中,所有的几幅图中的相同部分由相同的标记来指示。


图1是可以采用本发明的一计算机的方框图。
图2是根据本发明构成的快速EEPROM存贮器阵列的方框图。
图3说明了一对存贮器芯片和用于图2所示的存贮器阵列中的控制电路。
图4说明了在根据本发明构成的存贮器阵列的一部分中控制信息和数据的安置。
图5是一流程图,说明了根据本发明而实施的一种方法。
图6说明了错误检测和纠正电路的应用。符号和术语下面的详细描述的某些部分根据对计算机存贮器中的数据位操作的符号表示来描述。这些描述和表示是数据处理技术领域的普通技术人员采用的方式,以便最有效地将其工作的实质传播给本领域的其它技术人员。这些操作是那些需要物理量的物理处理的操作。通常,虽然不是必须,但是这些量采用能够存储、传送、比较、合并和其它处理的电或磁信号的形式。已经得到证明的是,主要是共同的理由,将这些信号称作位、值、元素、符号、字符、记录项、数、或类似物通常是方便的。但是,应该记住的是,所有这些和类似术语与相应的物理量相关联,并且仅仅是用于这些量的方便的标记。
而且,执行的处理常常涉及术语,诸如加或比较等,它们常常与人完成的精神活动相关联。在大多数情况下,在这里描述的构成本发明的一部分的任意操作中,人的这种能力是不需要的或不想要的;这些操作是机器操作。用于执行本发明的操作的可用的机器包括通用数字计算机或其它类似设备。在所有的情况中,应该考虑在操作计算机中的操作方法和其自身的计算方法之间的差别。本发明涉及一种方法和装置,用于在处理电或其它(例如,机械、化学)物理信号以产生其它所需的物理信号中操作计算机。
在本说明书中,在其名字中包括“#”的信号被认为是一个低态有效信号。用于信号的术语“确立”(assert)表示此信号有效而不管其电平为高或低。术语“撤销”(de-assert)表示此信号是无效的。详细描述现在参见图1,这是根据本发明的一个实施例配置的数字系统的说明性的方框图。本发明可应用在利用快速EEPROM存贮器阵列的任意系统中。例如计算机系统。这样的系统10的一部分包括一中央处理单元11,它执行提供的各种指令以控制系统10的操作。所述中央处理单元11连接到适用于在系统10的各部件之间传送信息的总线12。连接到总线12的有主存贮器13,主存贮器13典型地由动态随机存取存贮器构成,所述动态随机存取存贮器以一种现有技术中本领域技术人员公知的方式安置,用于在电源提供给系统10期间存储信息。
连接到总线12的还有诸如长期存贮器16等的各种外围部件和诸如数据可以写入其中的帧缓冲器17等各种电路,所述数据可以传送到诸如用于显示的监视器18等输出设备。不用通常用作长期存贮器的机电硬盘驱动器,而是可以利用快速EEPROM存贮器阵列作为长期存贮器16。这种快速EEPROM存贮器阵列可以是一位或多电平存贮器系统(其中的一个存储单元可以存储多于1个二进制位的存贮器系统),并且还可以包括用于控制存贮器阵列操作的电路,这些操作包括与读、编程(写)、和擦除存贮器阵列相关联的所有操作。
图2以方框图的形式说明了诸如图1所示出的存贮器系统16。存贮器系统16通过接口20连接到总线12。接口20提供适当的电路用于将总线12上供给的信号提供到快速系统总线21。快速系统总线21在接口20和逻辑电路22之间传送信号。在一个实施例中,此逻辑电路22是一个专用集成电路(ASIC),它提供用于完成和协调诸如快速EEPROM存贮器阵列的读、写、擦除、和确定各部分状态等的快速存贮器系统16的各种操作的逻辑。逻辑电路22用作一个命令中心并且通过快速总线24控制在多个快速EEPROM芯片对23中产生的操作,从而使得这些芯片一起成为一个长期存贮器系统。为了本发明的目的,应该注意到编码电路55和译码及纠正电路56包含在逻辑电路22中。如将要解释的那样,这些电路55和56用于完成一部分在本发明中所用的错误检测和纠正。逻辑电路22在其操作中由微处理器28协助,所述微处理器28在微处理总线25上与随机存取存贮器26和只读存贮器27相联系。为了本发明的目的,以一种本领域的技术人员公知的方式,微处理器28、随机存取存贮器26和只读存贮器27实质上起一个通用处理器的作用。在一个实施例中,只读存贮器27用于存储一过程,此过程用于控制实现本发明的错误检测和纠正操作的一部分。
在一个实施例中,每对快速EEPROM存贮器芯片23包括32块存贮器晶体管。芯片对23中的每一个芯片包括32块存贮器晶体管中的一半和控制电路,所述控制电路用于对在芯片对23的块中的各个存贮单元实现其中包括读、写、和擦除等的操作。如图3所示,它显示了在其中放有32块阵列的一对快速芯片,每个快速芯片对23通过命令用户接口(CUI)29连接到快速总线24。用户接口29从快速系统16的逻辑电路22提供命令信号到芯片对23并且控制在存贮器系统16和芯片对23之间的数据传送。用户接口29与一写状态机30相关联,此状态机用于控制芯片对23的写操作和某些内部操作。在一个实施例中,写状态机30包括一微控制器,此微控制器包括通用寄存器、调用堆栈、程序计数器、代码和数据存贮区,微控制器使存储在代码存储区中的大量命令在所述状态机30能够执行。
图3的芯片对23包括一快速EEPROM存贮器阵列31,在本实施例中所述的阵列31包括32个单独的块,每块包括64KB的快速EEPROM存贮器单元。如图中所示,阵列31包括用于控制位线和读取阵列31的输出读取器件的Y选通/读取电路33。在快速存贮器访问期间,Y译码电路34提供地址信息给Y选通/读取电路33,而同时X译码电路35提供用于选择字线的地址。地址在一地址输入缓冲器37中提供给快速芯片对23,此地址输入缓冲器37利用一地址排队寄存器38、一地址计数器39一起控制地址到芯片对23的传输。
数据在一对输入缓冲器40、41处提供到芯片对23,从所述的一对输入缓冲器中数据可以传送到一数据排队寄存器43或一对页面缓冲器44。在写状态机30的控制下,数据排队寄存器43和页面缓冲器44的每一个都提供至阵列31的一直接路径。页面缓冲器44允许积累相对大量的数据,并且然后以比可能采用单独的读写操作快得多的速度将这些数据写入阵列31或主机(host)。通过一对输出缓冲器45、46,采用由命令用户接口29控制的一输出多路复用器47,数据从阵列31中被读入系统。在命令用户接口29的控制下,所述多路复用器47也允许来自页面缓冲器44、ID寄存器和诸如状态寄存器等的其它各种内部电路的各种系统信息的传送。状态寄存器(图中的CSR和ESR)可被读取以便确定一操作的状态,诸如写或擦除、操作是否完成,以及操作是否成功地完成等。这些状态寄存器还提供关于每个芯片的状态、芯片中每块的状态、命令队列的状态、和芯片正在操作的模式等信息。数据比较器48包括与命令用户接口共同作用的电路,此电路比较采用任意命令提供给芯片对23的地址和在芯片对的每块上的地址,使得一逻辑地址可以被快速地访问。
存贮器芯片对23的命令用户接口29接收来自快速系统逻辑电路22的大量命令。这些命令可以分成读命令、写命令和存贮系统维护系统。读命令完全在接口29的控制下在芯片对23内执行。写命令和许多维护命令由接口29采用写状态机30执行。特别适用的是,在一个实施例中,所述写状态机30包括一可编程微控制器。
由Wells和Hasbun提交的申请日为1992年10月30日并且转让给本发明的受让人的题目为“A Method and Circuitry For A Solid StateMemory Disk”,序号为969,131的美国专利申请提供了一种用于控制快速EEPROM存贮器阵列操作的装置的进一步描述。
如图3所示,阵列31分成多个存储器块。通常,快速EEPROM存储器阵列分成相联接的块,使得每整块存贮器单元可以同时被擦除。对于N型互补金属氧化硅(CMOS)存贮器件,典型地,通过将一高电压值同时加到一个块的所有存贮器晶体管的源极端子,同时将这些器件的栅极端子接地和漏极端子悬空来实现其擦除。这样的擦除使块中的每个器件处于擦除状态。当在擦除状态时,器件可以编程为在其浮置栅上设置一特定的电荷电平。在过去,仅仅一个高于擦除电平的电荷电平被利用,而此电平通常称为“0”或编程态。擦除状态一直称作“1”或擦除态。用于在仅仅这两个电荷电平上存储电荷的单元能够存储一位数据。最近,已经发现,除擦除电平之外的多个电荷电平可以存储在快速EEPROM单元的浮置栅上。采用除擦除态之外的三个电荷电平,一个单元能够存储两位数据。
不管在一个单元中存贮一位还是多位数据,由于阵列的一个块中的所有存贮器晶体管的源极连接在一起,因此,一个在充电状态中的单元不能切换到擦除状态,直至阵列的这一整块再次被擦除。因此,机电硬盘驱动器通常在其盘的第一区域存储信息,然后当信息改变时重写这个相同的区域,而对于快速EEPROM存储器阵列,不擦除全部有效信息是不可能的,其中的有效信息和无效(脏)信息同时保存在这部分阵列中。
因此,在某些结构中,当在数据记录项中的信息改变时,这些改变的信息写到含有空(擦除)单元的该阵列一块上的新扇区而不是重写在旧数据上;并且将旧数据标记成无效。然后,在一块上的足够数量的扇区被标记为无效后,此整块被擦除。典型地,一快速阵列将存储在阵列中的数据写到一些含有擦除单元的阵列块中。写操作在具有空扇区的决中顺序进行,一个扇区接一个扇区,直到块中填满数据为止。
由于数据通过这种方式替换,因此,在一段时间后,阵列的每块将有许多标记为无效且不能用于存储的记录项(entry)。因此,阵列在预先存储的数据改变时填充数据;并且这时需要清除一个块中的无效数据以便为存储新的或改变的数据提供空间。当发生块擦除时,将擦除的块中存储的所有剩余的有效数据写到一新块中;数据从其中读出的那些空间标记为无效;并且然后,整个无效块被擦除(清理)并且作为一个空的存贮器块重新投入使用。
擦除一新的快速EEPROM阵列中的一块通常需要一秒。但是,由于擦除不需要重写每个记录项,因此擦除可以延迟直到一个块含有可以清理的足够数量的无效信息为止。这样就将擦除操作的次数减至最小值,并且允许当控制阵列的设备没有被读写操作占用时在后台进行擦除。
由于在这种方式中通过将数据写到不同的物理位置而将其进行替换的方式,数据存贮的物理位置经常改变。为了指示具体数据存储的位置,一逻辑扇区号被分配给此数据并且伴随此数据。根据系统的实现,此逻辑扇区号可以是象主计算机采用的那样的相同扇区号。然后,当访问阵列10中的数据时,所述控制器搜索每个逻辑扇区号。
图4是一理想化的图,它说明了阵列中的一个单独块的实施例,并且可用于描述数据存储的方法。一个典型的块示作一个大的矩形区域。在一个实施例中,此区域分成两个单独的物理芯片。以16位字工作的这些芯片的其中之一存储所有块的所有低字节数据,而另一芯片存储所有块的所有高字节数据。在一个实施例中,每个芯片有自己单独的控制电路,包括单独的控制用户接口29和单独的写状态机30。在每个芯片上为阵列的一个块分配的区域包括大量的晶体管器件,它们通常按行和列排列以便提供所需的存储。单独的晶体管,各种列和行选择线,以及用于操作块的其它导线没有在图4中示出,但这些对于设计快速EEPROM存贮器阵列技术的技术人员是公知的。
如图4中所见,从块的顶部开始,在块50的每个芯片中存储信息,并且连续进行到底部。在块50的每个芯片的顶部是称作扇区翻译表或“标题”的标示字段。此标示字段存储包括用作数据地址的逻辑扇区号的数据。例如,在一个实施例中,在顶部,一逻辑扇区号在低字节芯片的标题部分作为第一标题的一部分被存作3个字节。在图中,存储在第一标题中的第一扇区的逻辑扇区号示作“LSN1”,虽然它可能是此阵列范围内的任意数。相同的逻辑扇区号在高字节芯片的标题部分以不同的顺序存作3字节。用于检验标题有效性的一组属性和数据也可以包括在芯片的标题区域中。这些属性包括指示数据是否存储在标题下面的数据区域的位、指示块是否认为是坏的或不可用的位、修正号、和存贮模式。这些字段允许在扇区中准确地提取数据。
紧接在逻辑扇区LSN1的第一标题之下存储了用于存贮在阵列的特定块上的每个其它扇区的标题数据。典型地,阵列中一块存储大约五百个扇区。在该块的每个芯片上在包含标题的这个块的部分之下存储了用于其顶部中具有标题的每个逻辑扇区的数据。这些数据包括在写操作过程中产生的在图中标为EDAC区域的错误检测和纠正码。在一个实施例中,用于逻辑扇区LSN1的数据存储在块数据部分的底部(图中)。然后,自顶部下一个标题的数据(逻辑扇区LSN2)紧靠着在逻辑扇区LSN1的数据的上面存储。这种格式在整个块中延续。图4中的箭头示出了用于每个逻辑扇区的第一字节数据存储于其中的物理位置。关于作为块上的第一扇区的逻辑扇区LSN1,数据从在由箭头指示的位置上的字节写入,其中所述的箭头从标题中的扇区号LSN1的标题开始至在整个数据存储区底部上的一位置。图4也显示了第二箭头,此箭头从标为LSN2的逻辑扇区的标题开始至存储了逻辑扇区LSN2的数据的第一字节的块上的一物理位置,可以看到,由于用于上面存储的标题的数据扇区从块底部向上写操作,那么在标题和数据之间会留下一擦除区,如果读它会产生全部的“1”值,这些“1”值可以翻译成16进制值FF、FF。这些值可以用于管理阵列。
在块的最底部存储了可用于维护阵列的附加状态信息。在此区域中可以存储称为“可疑”(questionable)的指示,表示在访问该块中是否出现问题的一个指示,可以存储指明此块是坏的并脱离服务的一个指示,以及某些其它数据。
阵列以一位模式在读写操作期间被访问的这种方法可以通过参考图3和4来理解。在使用前,每个阵列的块格式化成含有一个标题、用于块可以存储的每扇区512字节数据的空存储区,以及一状态区。当最初用逻辑扇区号格式化时,阵列31中的大多数扇区被顺序地编号,但有几个块格式化成不用的并且在其标题区中没有扇区信息。在一个实施例中,当数据写入阵列31时,这些数据被提供到页面缓冲器44。用于写数据的一开始地址提供给阵列31的低字节芯片的页面缓冲器44。页面缓冲区中的数据写入具有空区域的一个块中的未用扇区的数据区。所述未用扇区的标题区被写状态机使用作为地址提供的逻辑扇区号进行写操作。
利用一个读或写操作,一命令字也提供给接口29以用于一个对含有修改数据的扇区的搜索。此命令字包括关于该标题的搜索的信息寻找一个还是两个字、此搜索是在一位或是多位模式、以及递增多少字。接口29实施对阵列中的扇区的搜索,其方法是,从标题区的顶部向下搜索每个块直至发现其逻辑扇区号,或者,以通过返回来自紧靠该块的标题区下面的区域中的数据值“FF、FF”而指明的形式发现其不在此块中。接口29采用数据比较器电路,以便快速地将由任意命令提供到芯片对23的一地址与此芯片对的每一块上的地址顺序地比较,使得一逻辑地址能够被快速地访问。
当在一块中发现所述逻辑扇区号时,此块和在此扇区的块上的偏移以及所发现的此扇区的一指示一起传回到页面缓冲器。对于读操作,接口29采用此地址完成这个读操作。对于写操作,不管是原始写还是数据修改,写状态机30都寻找已经发现的扇区的指示并且采用所述地址以确定此扇区存储在阵列31中的位置。由于新数据已提供到未用扇区并构造一新的标题,写状态机30将在此块上发现的具有旧数据的扇区标记为无效。
在特定逻辑扇区中的数据每次改变时都引起这种操作。采用输入地址缓冲器37而将扇区号提供到页面缓冲器44。接口29实施一搜索以寻找此逻辑扇区的物理位置。这个发现的扇区被标记为无效,并且由写状态机30将其标题和数据写到在阵列31的一个块的某个地方上的一个空扇区。
当读数据时,其逻辑扇区号送到页面缓冲器。实施所述的搜索;并且当定位一扇区时检测其标题的有效性。如果标题有效,那么就可以读数据。如果这些不匹配,则数据无效并且如此标示。每当在数据已经写到新的区域后将一扇区标记为无效,此无效扇区总是留下来,在后来的某个时刻,当此块上有足够数量的扇区标记为无效时,则被清理。由于直到整个块被擦除为止,在此块上标记为无效的空间不能释放而使用,因此,在一段时间后,阵列的每个块都将有许多标记为无效并且不能用于存储的记录项。因此,随着将该阵列用于存储数据,阵列中无效空间的总量将增加。在一段时期后,足够数量的块将满足释放空间所需要的数量,其中,通过将有效信息从一些特定脏块移到一些其它块并且擦除所述有效信息已经从中移走的整个块来完成所述的释放空间。写有效数据到其它块并且擦除一脏块的过程称作“清理块”,并且具有的效果是,释放的额外数量的扇区等于在所述擦除块上已经预先标记为无效的所有扇区。
允许快速EEPROM存贮器阵列的单个存贮单元在一位或多位模式操作的一种装置已经设计出来。这种装置的实质是提供了一第一参考单元,此单元安排在一个类似于每个位线装置的装置中。此参考单元存储的电荷值被任意选择的存贮单元存储的电荷值的读出来比较。如果此存贮单元存贮的电荷少于所述参考单元存储的电荷,那么读出放大器就提供一输出信号以指示此单元被擦除。如果此存贮单元存储的电荷多于参考单元存储的电荷,那以读出放大器就提供一输出信号以指示此单元被编程。
在其最简单的形式中,此装置还包括一第二多个参考单元,每个参考单元以一个与第一电平不同的电平存储电荷。任意存贮单元存储的电荷可以由读出放大器与这些参考电平的其中之一比较,以便确定此存贮单元存储的电荷电平。在一个实施例中,提供了三个参考电平,使得在一存贮单元的浮置栅上能够读出四个不同的电荷电平。为了以一位模式操作阵列,提供一信号以便将所述第一参考单元切换到操作中。为了以多位模式操作阵列,提供一信号以便将所述第二组多个参考单元切换到操作中。
如上所指出,在一个实施例中,错误检测和纠正码与数据一起存储,并且允许高达5位错误的检测和纠正。如前所述,当系统操作在多位模式中时引起的一个问题是,从某些快速存贮晶体管的浮置栅上的泄漏能够引起错误。这种泄漏是相对于时间的,使得当存贮单元在某一时间周期中没有写操作时,泄漏就很可能产生;并且可能丢失一些数据。不管泄漏在短时间内还是经过几年后发生,数据丢失都不能容许。基于这一理由,数据中包含了错误检测和纠正码。在一个实施例中,将十字节的错误检测和纠正码附加到存贮在每个扇区中的数据。
错误检测和纠正码与每扇区数据一起存储在快速EEPROM阵列中(在图4中表示为EDAC的区域)。此错误检测和纠正码允许检测和纠正一位或多位错误。这种类型的错误检测和纠正码对本领域的技术人员是公知的,并且广泛地应用于保护存储在机电硬盘中的数据。例如,错误纠正码及其操作这种码的例子在“Practical Error Correction DesignFor Engineers,”(第2次修订,作者Glover和Trent,Cirrus Logic Press出版,1990版)有详细描述。
图6描述了一个简化的错误检测和纠正方法,它可用于上述的两个存储装置中的错误。此方法用图说明了在组织成行和列的存贮器阵列中与检测和纠正错误相关联的问题。基于这一目的,图中仅示出了四行和四列存贮单元位置。此方法利用了一奇偶校验装置,在其中,根据存储在特定行或列中“1”的总数是奇数还是偶数而为每个行和每个列分配值。如果,例如在第一、第三和第四行中的“1”的总数为奇数,那么就存储一个“1”作为检测和纠正码,使得“1”的总数为偶数。如果,例如在第二、第三和第四列中“1”的总数为偶数,那么就存储一个“0”作为检测和纠正码,使得“1”的总数保持为偶数。通常在写数据时,这些错误校验位和数据一起存储在扇区中。在本发明的一个实施例中,存储了十字节的这种错误检测和纠正码,当从扇区中读数据时,根据读出的数据值可以校验此检测和纠正码的奇偶校验位。将会看到的是,如果产生一位错误,那么一列和一行的奇偶位将不匹配所读值的总数。例如,如果存储在第三行和第三列交叉处的值“1”被读成“0”,那么此行的奇偶检验值将为“0”而此行所存储的奇偶校验位却为“1”;并且,此列的奇偶检验值将为“1”而其所存储的奇偶校验位却为“0”。在错误校验比较过程中,这两个错误显示在所述交叉处的位不正确,并且允许将此位改正为正确值“1”。
从图6中可以看到,利用所示的简单奇偶校验错误检测和纠正方法检测在一行中发生的多个错误和在不同行中发生的多个错误,这也是可能的。采用所示的这种方法也可能纠正某些这种错误但另外的一些却不能纠正。例如,如果在第三列中产生两位错误,那么,其中产生这两位错误的每一行将出现不正确的奇偶校验位,而此列具有正确的奇偶校验位。因此,即使清楚在特定行中产生了错误,但是却不知道这些行中的哪些位产生了错误,所以,利用这种简单的方法就不能纠正。各种更复杂的错误检测和纠正方法是可用的,并且这些方法在检测和纠正错误方面更加有效。如上所述,期望比图示的更复杂的方法能够用于本发明。更具体地,现有技术中公知的Bose,Chaudhuri和Hocquenghem(BCH)码特别适用于本发明中的错误检测和纠正码。这是因为,其产生的错误类型实际上很可能是随机的和分离的,而BCH码是有效的随机纠错码。基于这一理由,在本发明中这些编码是较佳的。BCH码的描述及其实现方法在许多参考资料中可见,例如,Error ControlCodingFundamentals and Applications,第六章,Shu Lin and D.Costello,Jr.,Prentice-Hall,1983。
在一个实施例中,错误检测和纠正电路中的编码和译码电路是控制快速系统16的操作的逻辑电路22中的一部分。这包括编码电路55、译码和纠正电路56。编码电路55接收写入快速存贮器阵列的数据并且产生与每扇区数据一起存储的EDAC码。译码和纠正电路56包括从所述快速阵列中读出的数据通过其处理而提供一个第二EDAC码的电路,用于确定编码匹配以便没有错误的一比较器,和纠正电路。在一实施例中,此纠正电路硬件检测高达二位的错误、确定这些错误的位置、并且以现有技术中公知的方法纠正所有这些错误。如果发现存在多于二位的错误,电路56将操作转移到存储在只读存贮器27中的纠错过程。此过程对错误计数、确定其位置并且纠正能够检测到的错误。因此,整个错误检测和纠正过程使用这个电路和存储在只读存贮器27中的固件以实现这里讨论的各部分操作。在一个阵列实施例中,所采用的编码已经优化而提供高达六位错误的检测和五位错误的纠正。这需要通过错误检测和纠正电路为存储在该阵列的一个块中的每扇区数据产生十字节的编码数据。此编码数据与数据一起存储在扇区的数据部分。为了保证在经过一个长时期后所存储的数据不会丢失,已经发明了一种方法以确保用所述纠错码检验盘的扇区,使得在一扇区数据中产生的错误数量不会达到整个纠正不能实现的程度。这可以通过以某一固定间隔运行本发明的程序来实现。例如,程序可以在每次读快速EEPROM阵列时运行,以便检验正在使用的扇区。可替换的是,程序可以在每次清理阵列时,在每次阵列处于“接通”(on)态时、或者以一些其它的将确保阵列经常检验而使得不会产生错误积累的间隔运行。为了确保检验不经常使用的扇区,一个上次使用的指示可以与存储在扇区中的数据一起存储,并且,一些最低频率使用的扇区通过所述错误检测和纠正电路以某种固定间隔运行。用于检测在阵列的很少使用的区域中错误是否累积的一可替换方法是,每次系统加电时或者在某些其它的合适时刻,利用本发明的程序提供一用于检验阵列的随机段的处理。
对于本领域的技术人员将要发生的是,涉及经常利用的某些应用程序的数据最易发生这种数据丢失问题的类型。一程序被写入快速EEPROM阵列,然后仅仅很少地用于偶尔的操作。在一段时间后,当从某些特定单元的浮置栅上产生泄漏时一些数据开始丢失。如果已经存贮了一段时间而没有重写的一个扇区在其错误级别允许达到多于五个错误之前采用纠错码进行测试,那么所有的错误都能被校正;并且将不会丢失数据。但是,如果经过了太长的时期并且在一扇区中泄漏引起了多于五个的错误,那么纠错码不能用于校正数据。
图5是一流程图,说明了根据本发明的一方法,用于在采用多位存储的快速EEPROM存贮器阵列中纠错。每当阵列的一个扇区被读或清理时就开始此方法。为了检测积累错误,这种方法也可以以某种固定间隔(例如系统启动)开始而以某种组织的或随机的图形检验阵列中很少使用的部分。在此方法的第一步中,通过系统的错误纠正电路读扇区中的数据并通过电路56检测在此扇区中的错误数量。典型地,将没有错误,这将使得程序转移到在其中终止错误纠正程序的一个步骤。然后可以读数据。如果在此扇区中存在少于两个的错误,那么程序利用图2所示的错误检测和纠正电路56非常迅速地校正错误并终止;然后,此时可以读数据。硬连线电路用于校正少于三个的错误,因为建立电路校正这种多个错误是相对经济的。
如果在扇区中存在多于两个的错误,程序转移到一步骤,在此步骤中开始重试错误检测处理并且再对错误计数。已经估算过的是,可能产生的大多数错误由系统噪声引起。已经预测到,在每读450,000扇区中将产生少于一次的错误,所以一重试操作解决了这个问题。因此,在遇到许多错误的第一次检测操作后提供一重试操作非常有利于消除该过程的其它的处理步骤。典型地,这种重试操作由存贮在只读存贮器56中的过程来实施,和由原始操作实行的一样,此进程实现了与固件中一样的算法。应该注意的是,也可以重试该操作并且在与参考器件比较进行之前提供一较长的时期以用于存贮器件的锁存。这种较慢的重试消除了这些单元的错误,这些单元仅仅以一稍慢的速度反应。
在此重试操作后,再次计算错误数。固件算法能够检测六个错误并且校正其中五个错误。如果还有零至三个错误,那么可能存在不属于系统噪声引起的错误;并且采用固件纠错处理执行错误校正。在校正后,程序转移到一步骤,在此步骤中实现系统刷新。这种刷新把所述的原始处理步骤用于阵列的所有扇区,以便确定实际上是否有任一扇区由于存贮器件失去电荷而产生错误。
在另一方面,如果在扇区中检测到四至五个错误,在其状态区中将此块标记为“可疑”,此状态区位于在相关的芯片的块上数据所存储的位置之下。在如此标记此块后,对已出现错误的每个位置处的数据执行校正。然后将此扇区重写到阵列中的一个新位置。此时,测试此块以确定此块是否已经两次标记为“可疑”。如果否,则程序转移到一在其中启动系统刷新的步骤。如果此块已经在前面标记为可疑,则在其状态区将此块标记为“坏”,使得其能够减少服务。在此块标记为坏后,启动系统刷新。
如果错误数大于五个,则数据不能校正。因此,此块立即标记为坏而使其脱离服务,并且开始系统刷新。
虽然本发明已经根据较佳实施例进行了描述,但是可以理解的是,在不脱离本发明的精神和范围的前提下,本领域的技术人员可以作出各种修改和替换。因此,本发明应根据后面的权利要求来判断。
权利要求
1.一种管理在一快速电可擦除可编程只读存贮器(EEPROM)阵列中的数据的方法,其中的阵列包括分别可擦除的用于以扇区存储数据的存贮器件的块,此方法包括步骤检测在一所读阵列的扇区中存在的错误,如果没有检测到错误,则终止检测过程,如果检测到错误数小于第一错误数,则校正错误,如果检测到错误数大于第一错误数,则对阵列的此扇区重试错误检测,在重试后,如果检测到错误数小于第二错误数而大于第一错误数,则校正错误,如果检测到错误数大于第二错误数但小于第三错误数,则将阵列的这个块标记为可疑,其中第二错误数为错误校正处理能够校正的最大值,第三错误数是能够检测到的最大值,并且然后校正检测到的错误,重写此扇区数据到一新位置,检测此块在前面是否已经标记为可疑,如果此块在前面已经标记为可疑,则使此块脱离服务;并且如果检测到错误数大于第三错误数,则使此块脱离服务。
2.根据权利要求1的一种方法,还包括的步骤是,在任意错误校正或阵列中的一个块脱离服务后启动系统刷新。
3.根据权利要求1的一种方法,其中每个检测或校正的步骤采用Bose、Chaudhuri、和Hocquenghem(BCH)码来实现。
4.根据权利要求1的一种方法,对阵列中不经常使用的扇区,以固定间隔启动以便检测和校正这种扇区中由于泄漏产生的错误。
5.根据权利要求4的一种方法,此方法以阵列的随机扇区启动。
6.根据权利要求1的一种方法,其中,如果错误数大于第一错误数,则重试错误检测的步骤以一较慢的读取速度进行。
7.根据权利要求1的一种方法,如果检测到错误数小于第一错误数,则其检测在一所读阵列的扇区中存在的错误的步骤和校正错误的步骤都由硬件实现,以及其它的检测和校正步骤由一计算机实现的软件处理来完成。
8.根据权利要求1的一种方法,其中每个检测在阵列的一扇区中存在的错误的步骤包括下列步骤检测在一所读阵列的扇区中存在的错误数;以及确定检测到的每个错误的位置。
9.一种管理在一快速电可擦可编程只读存贮器(EEPROM)阵列中的数据的方法,其中的阵列包括分别可擦除的用于以扇区存储数据的存贮器件的块,此方法包括步骤检测在一所读阵列的扇区中存在的错误,确定检测到的错误数和每个错误的位置,如果没有检测到错误,则终止检测处理,如果检测到错误数小于第一错误数,则校正错误,如果检测到错误数大于第一错误数但小于第二错误数,则将此阵列的这个块标记为可疑,并且然后校正检测到的错误,重写此扇区数据到一新位置,检测此具有错误的块在以前是否已经标记为可疑;如果此块在以前已经标记为可疑,则使此块脱离服务;并且如果检测到错误数大于第二错误数,则使此块脱离服务。
10.根据权利要求9的一种方法,其中,还包括,在所引用的任一步骤之前,具有步骤检测在一所读阵列的扇区中存在的错误,如果没有检测到错误,则终止检测过程,以及如果检测到错误数小于第一错误数,则校正错误。
11.根据权利要求10的一种方法,其中,检测在一所读阵列的扇区中存在的错误和如果检测到错误数小于第一错误数的开始步骤由硬件执行。
12.根据权利要求9的一种方法,其中,每个步骤由一计算机实现的软件过程来完成。
13.根据权利要求9的一种方法,还包括的步骤是,在任一错误校正或阵列中的一个块脱离服务后启动系统刷新。
14.根据权利要求9的一种方法,其中每个检测或校正的步骤采用Bose、Chaudhuri、和Hocquenghem(BCH)码来实现。
15.根据权利要求9的一种方法,对阵列中不经常使用的扇区,以固定间隔启动以便检测和校正这种扇区中由于泄漏产生的错误。
16.根据权利要求15的一种方法,此方法以阵列的随机扇区启动。
17.根据权利要求9的一种方法,其中,如果错误数大于第一错误数,则以一较慢的读速度完成第二个检测错误的步骤。
18.根据权利要求9的一种方法,其中,每个检测在阵列的一扇区中存在的错误的步骤包括下列步骤检测在一所读阵列的扇区中存在的错误数,以及确定检测到的每个错误的位置。
全文摘要
一种方法,利用错误检测和纠正电路(56),在错误能够影响由快速EEPROM存贮器阵列提供的数据的准确性之前检测并校正错误,其中所述的错误能够在快速EEPROM存贮器阵列(23)的以多位单元格式存储的数据中产生。
文档编号G11C11/56GK1175311SQ95197659
公开日1998年3月4日 申请日期1995年12月21日 优先权日1994年12月27日
发明者M·克里斯托弗森, S·威尔斯, G·艾特伍德, M·鲍尔, A·法兹奥, R·哈斯本 申请人:英特尔公司
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1