非易失性存储器修复电路的制作方法

文档序号:15807470发布日期:2018-11-02 21:56阅读:158来源:国知局
非易失性存储器修复电路的制作方法

本发明大体涉及包含存储器装置的集成电路,并且更具体地涉及具有存储器以及修复缺陷存储器单元或者针对缺陷存储器单元进行调整的存储器修复系统的集成电路。

背景技术

半导体集成电路通常包含片上存储器,如闪存存储器。闪存存储器可能会由于例如制造工艺变动或老化而具有一些缺陷存储器单元。与丢弃该集成电路相比,提供用于修复该存储器的电路系统更具成本效益。

一种避免丢弃含有具有带缺陷的存储器单元的片上存储器的集成电路的已知技术是使用熔丝(例如,多晶硅熔丝(polyfuses)和反熔丝)以及冗余存储器扇区。典型地,存储器包含一组存储器扇区,并且每个扇区都包含一组存储器单元。存储器还包含自测电路,该自测电路测试每个存储器扇区以定位任何缺陷存储器单元。识别缺陷存储器单元的方法是众所周知的。具有一个或多个缺陷存储器单元的存储器扇区被称为故障存储器扇区。

当自测电路识别到故障存储器扇区时,使用激光器或电压源来停用对应于故障存储器扇区的熔丝。还基于熔丝的类型而使用激光器或电压源来激活对应于冗余存储器扇区的熔丝。冗余存储器扇区对应于故障存储器扇区。然后,原先要存储于故障存储器扇区中的数据作为替代被存储于冗余存储器扇区中。冗余存储器扇区从而代替了故障存储器扇区,并且这被称为修复了存储器。但是,这种技术使用了大量的资源,例如,熔丝和冗余存储器扇区。此外,激活和停用熔丝的方法容易出错,并且可能会导致存储器装置的不当操作。同样必要的是,冗余存储器扇区与故障存储器扇区是相同的存储器类型。由于熔丝的激活和停用需要外部的构件(如激光器),因而这种技术只能够在集成电路的初始测试期间(即,在工厂)实现。还存在着已停用的熔丝由于停用故障以及外部参数(如温度)的影响而被重新激活的可能性。此外,故障存储器扇区还可能具有除了少数缺陷单元外都是没有缺陷的大量存储器单元。

另一种已知的方法是使用包含一组存储器单元的修复电路,这组存储器单元被排列为一组行或一组列。存储器还包含对应的一组冗余的行或列。修复电路能够测试存储器,以检测并定位缺陷单元(即,有缺陷的存储器单元的行或列)。然后,所识别的行或列的存储器单元的数据被存储于对应的冗余行或冗余列中。但是,为了成功实现这种方法,这些组的冗余行和冗余列在结构上与存储器的这些组的行和列相似是至关重要的。此外,修复电路需要额外的处理和时间来确定缺陷存储器单元的行和列并将所识别的缺陷单元的行或列之一替换为冗余行或冗余列的对应单元。

因此,若能获得以下集成电路将是有利,该集成电路具有使用有限数量的资源不仅能够在工厂测试期间修复也能够在集成电路的寿命期间即时(onthefly)修复的存储器。

附图说明

当结合附图来阅读时,下面关于本发明的优选实施例的详细描述将会更好理解。本发明以示例的方式来示出,但并不限定于附图,在附图中,同样的附图标记指示相似的元件。

图1是根据本发明的实施例的存储器装置的示意框图。

具体实施方式

关于附图的详细描述旨在作为关于本发明的当前优选实施例的描述,而并非旨在代表本发明可以实现的唯一形式。应当理解,相同或相当的功能可以由旨在包含于本发明的精神和范围内的不同实施例来实现。如同本文所使用的,术语多路复用器已被缩写为复用器(mux)。此外,如同本文所使用的,电可擦除可编程只读存储器或“eeprom”指的是具有每字节擦除功能的存储器”,“闪存”是只支持大块擦除的一种类型的eeprom,而高速缓冲存储器指的是相对较小的、易失性存储器(例如,寄存器阵列)。

在一种实施例中,本发明包含具有片上闪存存储器、片上eeprom、修复控制器和高速缓冲存储器的集成电路。闪存存储器,也称为第一非易失性存储器,被用来将第一数据包存储于具有第一地址的第一存储器段中。第一存储器段包含一组存储器单元。修复控制器连接到闪存存储器并自其处接收错误信号。错误信号指示该组存储器单元中的存储器单元有缺陷。修复控制器还基于错误信号来接收第一数据包和第一地址(即,当错误信号有效时)。eeprom连接到修复控制器。当闪存存储器生成错误信号时,eeprom接收并存储第一数据包和第一地址。高速缓冲存储器连接到闪存存储器和eeprom。高速缓冲存储器在读操作期间接收来自闪存存储器的第一读地址。高速缓冲存储器还基于负载请求信号接收并存储来自eeprom的第一数据包和第一地址,并且当在读操作期间第一读地址与第一地址相匹配时输出第一数据包。

在另一种实施例中,本发明提供一种用于修复位于集成电路芯片上的闪存存储器的方法。闪存存储器被用来将第一数据包存储于闪存存储器的具有第一地址的第一存储器段中。闪存存储器包括含有一组存储器单元的存储器段。该方法包括生成指示该组存储器单元中的存储器单元有缺陷的错误信号并将错误信号提供给修复控制器。该方法还包括由修复控制器基于错误信号来接收第一数据包和第一地址。该方法还包括由eeprom接收来自修复控制器的第一数据包和第一地址,由此修复闪存存储器。该方法还包括基于负载请求信号将接收自eeprom的第一数据包和第一地址存储于高速缓冲存储器中。该方法还包括高速缓冲存储器在读操作期间将第一读地址与第一地址进行比较。该方法还包括:当第一读地址与第一地址匹配时,高速缓冲存储器在读操作期间输出对应于第一地址的第一数据包。

本发明的各种实施例提供用于修复片上存储器的系统和方法。芯片包含闪存存储器、修复控制器、eeprom和高速缓冲存储器。闪存存储器被用来将第一数据包存储于具有第一地址的第一存储器段中。第一存储器段包含一组存储器单元。当该组存储器单元中的存储器单元有缺陷时,闪存存储器生成错误信号。当第一地址处的存储器单元没有缺陷时,闪存存储器将第一数据包存储于该第一地址。但是,当第一地址处的一个或多个存储器单元有缺陷时,则第一数据包和第一地址由修复控制器基于错误信号而存储于eeprom中。高速缓冲存储器连接到闪存存储器和eeprom,并且基于负载请求信号接收及存储第一数据包和第一地址。在读操作期间,高速缓冲存储器接收第一读地址。当第一读地址与第一地址匹配时,高速缓冲存储器输出第一数据包。

因而,通过将eeprom用作具有缺陷单元的(一个或多个)存储器地址的替代来修复闪存存储器。上述修复机制的一个优点在于:不存在熔丝,所以不需要执行熔丝编程。此外,eeprom可以比闪存小得多——也就是,不需要行或列复制。另外,在读操作期间,高速缓冲存储器能够在一个闪存时钟周期中输出对应于第一地址的第一数据包。因而,片上存储器与采用常规修复机制的常规存储器装置相比在更短的时间内输出第一数据包。而且,存储器的修复并不一定只能在工厂测试阶段期间执行,所以如果随时间推移,闪存存储器单元之一由于例如老化而变为有缺陷的,则有缺陷的单元能够即时被修复。由于修复电路系统和方法不需要在自修复期间识别缺陷存储器单元的行或列,因而闪存存储器修复很快。

现在参照图1,该图示出了包含片上闪存存储器的集成电路芯片100的部分。芯片100包含闪存存储器系统102、修复控制器104、电可擦除可编程只读存储器(eeprom)106、高速缓冲加载器108和高速缓冲存储器110。闪存存储器102(也称为“第一存储器系统”)包含闪存存储器控制器112和闪存存储器114(也称为“第一非易失性存储器”)。eeprom106(也称为“第二存储器系统”)包含eeprom控制器116、eeprom主阵列118和eeprom修复阵列120。高速缓冲存储器110(也称为“易失性存储器”)包含第一和第二地址搜索逻辑电路122和124、地址存储器阵列126和数据存储器阵列128。第一和第二地址搜索逻辑电路122和124以及地址存储器阵列126形成内容可寻址存储器(cam)130。高速缓冲存储器110还包含第一多路复用器132。

闪存存储器114包含多个闪存存储器扇区,图中示出了其中两个——第一存储器扇区136和第二存储器扇区138。第一闪存存储器扇区136包含第一组闪存存储器段,图中示出了其中三个——第一至第三存储器段136a-136c。第二闪存存储器扇区138包含第二组闪存存储器段,图中示出了其中三个——第四至第六存储器段138a-138c。第一和第二组闪存存储器段中的每个闪存存储器段都包含一组存储器单元(未示出)。每个闪存存储器段还存储数据包,并且该组存储器单元的每个存储器单元都存储数据包的位。第一闪存存储器扇区136存储第一组数据包,图中示出了其中三个——第一至第三数据包(dp10-dp12),而第二闪存存储器扇区138存储第二组数据包,图中示出了其中三个——第四至第六数据包(dp20-dp22)。

当闪存存储器114的缺陷存储器单元被检测到时,闪存存储器控制器112生成错误信号。包含缺陷存储器单元的闪存存储器段被称为缺陷存储器段。此外,存储于缺陷存储器段中的数据包被称为修复数据包,而缺陷存储器段的地址被称为故障地址。

闪存存储器控制器112接收闪存命令(flashcommand)(flash_cmd)、写数据(wdata)、读地址(raddr)和写地址(waddr)。闪存存储器控制器112输出错误信号、命令地址(cmd_addr)、闪存命令(flash_cmd)和闪存数据(flashdata)(pdata_64bit)。读地址(raddr)表示从其中读出所存储的数据包的闪存存储器114中的地址。写地址(waddr)是数据包将要存储的闪存存储器114中的地址。闪存存储器114输出存储于读地址(raddr)的数据包作为第一数据包(dp1)。闪存命令(flash_cmd)包括将由闪存存储器控制器112对存储于闪存存储器114中的至少一个数据包执行的至少一条指令。闪存命令(flash_cmd)的示例包括程序检查命令、程序命令、全擦除命令、块擦除命令、扇区擦除命令、长字程序命令等。写数据(wdata)包括将要存储于闪存存储器114中的至少一个数据包。当闪存存储器控制器112生成错误信号时,闪存数据(pdata_64bit)包括将要存储于eeprom修复阵列120中的至少一个数据包。命令地址(cmd_addr)是要执行闪存命令(flash_cmd)处的闪存存储器114中的位置。

修复控制器104连接到闪存存储器系统102,用于接收错误信号、命令地址命中信号、闪存命令(flash_cmd)、闪存数据(pdata_64bit)和命令地址(cmd_addr)。修复控制器104还输出负载请求信号、eeprom写数据(eep_wdata)、eeprom地址(eep_addr)和命令确认信号(cmd_ack)。闪存存储器系统102接收命令确认信号(cmd_ack)。eeprom写数据(eep_wdata)包含待存储于eeprom修复阵列120中的数据包。eeprom地址(eep_addr)是要存储eeprom写数据(eep_wdata)的数据包处的eeprom修复阵列120中的地址。命令确认信号(cmd_ack)指示修复控制器104是否已经执行闪存命令(flash_cmd)。

eeprom系统106连接到修复控制器104,用于接收eeprom写数据(eep_wdata)和eeprom地址(eep_addr)。eeprom系统106输出eeprom读数据(eep_rdata)和eeprom确认命令(eep_cmd_ack)。修复控制器104接收eeprom读数据(eep_rdata)和eeprom确认命令(eep_cmd_ack)。eeprom修复阵列120包含一组eeprom段140a-140d(共同称为“eeprom段140”)。为了图示的目的,在图1中示出了第一至第四eeprom段140a-140d。该组eeprom段140的每个eeprom段140都包含一组eeprom存储器单元(未示出),用于存储修复数据包的位。每个eeprom段140都存储故障地址和修复数据包中的至少一项。例如,第一eeprom段140a存储第一故障地址,第二eeprom段140b存储第一修复数据包,第三eeprom段140c存储第二故障地址,而第四eeprom段140d存储第二修复数据包。eeprom段140的位长度不一定与第一至第三闪存存储器段136a-136c和第四至第六闪存存储器段138a-138c中的每个闪存存储器段的位长度相同。

高速缓冲加载器108连接到修复控制器104,用于接收负载请求信号,并且连接到eeprom系统106,用于接收故障地址和修复数据包。高速缓冲加载器108输出故障地址和修复数据包,分别作为高速缓冲地址(cache_addr)和高速缓冲数据(cache_data)。

在一种实施例中,高速缓冲加载器108接收第一eeprom段140a的地址以及该组eeprom段140的eeprom段140的总数量。高速缓冲加载器108然后基于第一eeprom段140a的地址和eeprom段140的总数量接收第一故障地址,并且随后按以下顺序接收第一修复数据包、第二故障地址和第二修复数据包。

高速缓冲存储器110连接到高速缓冲加载器108,用于接收高速缓冲地址(cache_addr)和高速缓冲数据(cache_data)并且生成读地址命中信号和命令地址命中信号。地址存储器阵列126存储高速缓冲地址(cache_addr)。数据存储器阵列128存储高速缓冲数据(cache_data)。第一和第二地址搜索逻辑电路122和124每个都包含连接到地址存储器阵列126的一组地址搜索线(未示出)。此外,第一和第二地址搜索逻辑电路122和124每个都包含一组匹配线(未示出)。该组匹配线的每个匹配线对应于存储于地址存储器阵列126中的每个地址。第一地址搜索逻辑电路122接收读地址(raddr),并且第二地址搜索逻辑电路122接收命令地址(cmd_addr)。当命令地址(cmd_addr)或读地址(raddr)中的任一项与存储于地址存储器阵列126中的地址匹配时,对应的匹配线输出匹配信号。基于匹配信号,第一地址搜索逻辑电路122生成读地址命中信号,而第二地址搜索逻辑电路124生成命令地址命中信号。匹配线还连接至在第一地址搜索逻辑电路122中的编码器(未示出),该编码器基于匹配信号输出选择信号。选择信号指示修复数据包存储于数据存储器阵列128中的地址。修复数据包对应于读地址(raddr)。

第一多路复用器132连接到第一地址搜索逻辑电路122,用于接收选择信号,并且连接到数据存储器阵列128,用于接收修复数据包。此外,第一多路复用器132还基于选择信号来输出修复数据包作为第二数据包(dp2)。

第二多路复用器134连接到闪存存储器114,用于接收第一数据包(dp1),并且连接到高速缓冲存储器110,用于接收读地址命中信号和第二数据包。第二多路复用器134基于读地址命中信号而输出第一和第二数据包中的至少一项作为读数据(rdata)。当读地址(raddr)与故障地址不匹配时;读数据(rdata)是存储于由读地址(raddr)指示的闪存存储器114中的地址处的第一数据包(dp1)。当读地址(raddr)与故障地址匹配时;读数据(rdata)是按故障地址存储于数据存储器阵列128中的第二数据包(dp2),该故障地址被存储于地址存储器阵列126中。

在一种实施例中,闪存存储器控制器112包含对应于第一和第二组闪存存储器段136和138的闪存存储器寄存器(未示出)。闪存存储器控制器112测试第一至第三组和第四至第六组闪存存储器段136a-136c和138a-138c的每个存储器单元。闪存存储器寄存器存储对应于数据包将要存储于其中的第一和第二组闪存存储器段136和138的每个存储器单元的状态。该状态指示每个存储器单元是否包含错误并从而是否是缺陷存储器单元。

闪存存储器控制器112执行自测以识别出闪存存储器114中的受损存储器单元。闪存存储器控制器112可以被编程用于执行工厂测试、用户程序测试和用户自测这三类自测之一。在工厂测试期间,闪存存储器控制器112测试闪存存储器114的每个存储器单元。一般地,工厂测试在集成电路100被发运给客户之前执行。

用户程序测试在用户应用程序被存储于芯片100中期间执行。用户应用程序是包含存储于闪存存储器114中的一组指令的程序代码。在一种实施例中,闪存存储器控制器112在用户程序测试期间接收该组指令的第一指令作为写数据(wdata)。然后,闪存存储器控制器112测试第一闪存存储器段136a并以其状态来更新闪存存储器寄存器。当该状态指示在第一存储器段136a中没有故障存储器单元时,闪存存储器控制器112将第一指令作为第一数据包(dp10)存储于第一闪存存储器段136a中。但是,当第一闪存存储器段136a包含故障存储器单元时,闪存存储器控制器112以指示第一闪存存储器段136a为缺陷存储器段的状态来更新闪存存储器寄存器。闪存存储器控制器112然后要么丢弃第一指令,要么测试第二闪存存储器段136b。一旦第一指令被存储于闪存存储器114中,则闪存存储器控制器112接收该组指令的第二指令,并且重复上述顺序步骤。因而,在用户程序测试中,闪存存储器控制器112仅测试该组指令(即,用户应用程序)存储于其中的闪存存储器段。因此,用户程序测试使用较少的时间和资源。

在用户自测期间,闪存存储器控制器112测试第一和第二存储器段136和138的有限数量的存储器单元,以确定在闪存存储器114中是否存在故障或缺陷存储器单元。闪存存储器控制器112按系列来测试存储器单元。在一个例子中,闪存存储器控制器112测试相间的存储器单元,即,第一存储器单元、第三存储器单元、第五存储器单元等等。在测试的后续步骤中,闪存存储器控制器112测试第二存储器单元、第四存储器单元、第六存储器单元等等。因而,闪存存储器控制器112不测试第一和第二存储器段136和138的全部存储器单元。此外,用户自测能够周期性地执行,以识别出在闪存存储器114中是否存在缺陷单元。

当闪存存储器控制器112执行工厂测试、用户程序测试和用户自测中的至少一项时,闪存存储器控制器112将对应的状态存储于闪存存储器寄存器中。该状态指示在闪存存储器114中是否存在至少一个缺陷存储器单元。

在一种实施例中,闪存存储器控制器112执行工厂测试。闪存存储器控制器112识别到第一闪存存储器段136a包含缺陷存储器单元。因而,第一闪存存储器段136a是缺陷闪存存储器段。第一闪存存储器段136a的地址(addr_10)被称为缺陷地址(addr_10)。

闪存存储器控制器112接收写地址(waddr)以及作为闪存命令(flash_cmd)的数据存储命令,连同作为写数据(wdata)的第一数据包(dp10)。在一种实施例中,写地址(waddr)与缺陷地址(addr_10)匹配。因而,将要存储于该缺陷地址(addr_10)处的第一数据包(dp10)被称为修复数据包(dp10)。闪存存储器控制器112针对第一闪存存储器段136a的存储器单元的状态对闪存存储器寄存器进行检查,并且输出故障地址(addr_10)和作为闪存数据(pdata_64bit)的修复数据包(dp10)。此外,闪存存储器控制器112还输出错误信号。

修复控制器104接收缺陷故障地址(addr_10)和作为闪存数据(pdata_64bit)的修复数据包(dp10)。此外,修复控制器104接收错误信号,并且输出第一和第二eeprom寄存器地址作为eeprom地址(eep_addr)。

eeprom系统106包含用于将eeprom修复阵列120的起始地址存储为第一eeprom寄存器数据的第一eeprom寄存器(未示出),以及用于存储第二eeprom寄存器数据的第二eeprom寄存器(未示出)。第二eeprom寄存器数据包含在eeprom修复阵列120中用于修复的若干eeprom段140。第一和第二eeprom寄存器地址是第一和第二eeprom寄存器在eeprom系统106中的地址。eeprom修复阵列120接收第一和第二eeprom寄存器地址,并且输出第一和第二eeprom寄存器数据作为eeprom读数据(eep_rdata)。修复控制器104基于eeprom读数据(eep_rdata)以及故障地址(addr_10)的位长度及对应的第一数据包(dp10)来检查在eeprom修复阵列120中eeprom段140的可用性。

当eeprom读数据(eep_rdata)指示在eeprom修复阵列120中有eeprom段140可用时,修复控制器104确定故障地址(addr_10)能够存储的第一eeprom地址。此外,修复控制器104确定修复数据包(dp10)能够存储的第二eeprom地址。当eeprom段140的位长度不等于闪存存储器114的第一至第三闪存存储器段136a-136c和第四至第六闪存存储器段138a-138c的闪存存储器段的位长度时,修复控制器104修改修复数据包(dp10)存储过程,并生成经修改的数据(eep_wdata)。当eeprom段140的位长度等于闪存存储器114的第一至第三闪存存储器段136a-136c和第四至第六闪存存储器段138a-138c的闪存段的位长度时,修复控制器104不生成经修改的数据(eep_wdata)。

在一个示例中,当缺陷地址(addr_10)的位长度为32位,修复数据包(dp10)的位长度为64位,而eeprom段140的位长度为32位时,修复控制器104修改闪存数据(pdata_64bit)以生成对应于故障地址(addr_10)的32位的第一经修改的数据,对应于修复数据包(dp10)的前32位的第二经修改的数据以及对应于修复数据包(dp10)的后32位的第三经修改的数据。此外,修复控制器104生成存储第一至第三经修改的数据处的第一至第三eeprom地址。此外,修复控制器104生成对应于第一至第三经修改的数据的第一至第三存储命令。当eeprom控制器116接收到作为eeprom系统命令(eep_cmd)的第一存储命令、作为eeprom地址(eep_addr)的第一eeprom地址以及作为eeprom写数据(eep_wdata)的第一经修改的数据时,eeprom控制器116将第一经修改的数据存储于eeprom修复阵列120中的第一eeprom地址处。同样地,eeprom控制器116将第二经修改的数据存储于eeprom修复阵列120中的第二eeprom地址处,并且将第三经修改的数据存储于eeprom修复阵列120中的第三eeprom地址处。

在优选的示例中,缺陷地址(addr_10)的位长度为32位;修复数据包(dp10)的位长度为64位,并且eeprom段140的位长度为64位。修复控制器104生成第一和第二存储命令。修复控制器104还生成第一和第二eeprom地址。第一和第二eeprom地址分别对应于第一eeprom段140a和第二eeprom段140b的地址。

修复控制器104将第一存储命令作为第一eeprom系统命令(eep_cmd)输出给eeprom系统106,输出作为eeprom写数据(eep_wdata)的缺陷地址(addr_10)以及第一eeprom地址(eep_addr)。eeprom控制器116接收第一eeprom系统命令(eep_cmd)、第一eeprom地址(eep_addr)及故障地址(addr_10),并且将故障地址(addr_10)存储于eeprom修复阵列120中的对应的eeprom地址(eep_addr)处。此外,eeprom控制器116输出第一eeprom确认命令(eep_cmd_ack)。修复控制器104接收第一eeprom确认命令(eep_cmd_ack)。第一eeprom确认命令(eep_cmd_ack)给修复控制器104指示,eeprom控制器116已将故障地址(addr_10)成功存储于eeprom修复阵列120中。因而,修复控制器104输出作为第二eeprom系统命令(eep_cmd)的第二存储命令、作为eeprom写数据(eep_wdata)的修复数据包(dp10)以及第二eeprom地址(eep_addr)。eeprom控制器116接收第二eeprom系统命令(eep_cmd)、第二eeprom地址(eep_addr)和修复数据包(dp10),并且将修复数据包(dp10)存储于eeprom修复阵列120中的第二eeprom地址(eep_addr)处。eeprom控制器116还输出第二eeprom确认命令(eep_cmd_ack)。第二eeprom确认命令(eep_cmd_ack)给修复控制器104指示,eeprom控制器116已将修复数据包(dp10)成功存储于eeprom修复阵列120中。

修复控制器104接收第二eeprom确认命令(eep_cmd_ack),并且将负载请求信号和命令确认信号(cmd_ack)分别输出到高速缓冲加载器108和闪存存储器控制器112。命令确认信号(cmd_ack)给闪存存储器控制器112指示,修复控制器104已将故障地址(addr_10)和修复数据包(dp10)成功存储于eeprom修复阵列120中。闪存存储器控制器112接收命令确认信号(cmd_ack)并执行后续的闪存命令(flash_cmd)。

替换地,假使修复控制器104未能将缺陷地址(addr_10)和修复数据包(dp10)存储于eeprom修复阵列120中,则修复控制器104将失败的命令确认信号(cmd_ack)输出给闪存存储器控制器112。闪存存储器控制器112接收失败的命令确认信号(cmd_ack)并输出错误消息。在一种实施例中,连接到闪存存储器控制器102的处理器(未示出)接收错误消息。在另一种实施例中,错误消息被显示给芯片100的用户。

高速缓冲加载器108接收来自修复控制器104的负载请求信号、来自第一eeprom寄存器的第一eeprom段140a的地址以及来自第二eeprom寄存器的一组eeprom段140的总数量。高速缓冲加载器108还接收存储于第一eeprom段140a中的故障地址(addr_10)。高速缓冲加载器108将故障地址(addr_10)作为高速缓冲地址(cache_addr)输出给高速缓冲存储器110的地址存储器阵列126。然后,高速缓冲加载器108接收存储于第二eeprom段140b中的修复数据包(dp10)。高速缓冲加载器108将修复数据包(dp10)作为高速缓冲数据(cache_data)输出给高速缓冲存储器110的数据存储器阵列128。

在另一种实施例中,写地址(waddr)与故障地址(addr_10)不匹配。闪存存储器控制器112将修复数据包(dp10)存储于闪存存储器114中的由写地址(waddr)指示的地址处。

在读操作期间,闪存存储器系统102接收读地址(raddr)。在一种实施例中,读地址(raddr)与故障地址(addr_10)匹配。闪存存储器114输出存储于读地址(raddr)所指示的地址处的不准确的数据包作为第一数据包(dp1)。第一地址搜索逻辑电路122接收读地址(raddr)并将其与存储于地址存储器阵列126中的至少一个地址进行比较。当读地址(raddr)与故障地址(addr_10)匹配时,第一地址搜索逻辑电路122输出高逻辑状态处的读地址命中信号。当读地址(raddr)与故障地址(addr_10)匹配时,第一地址搜索逻辑电路122还输出选择信号。该选择信号指示修复数据包(dp10)的对应于数据存储器阵列128中的读地址(raddr)的地址。第一多路复用器132接收选择信号和修复数据包(dp10),并且输出修复数据包(dp10)作为对应于故障地址(addr_10)的第二数据包(dp2)。第二多路复用器134接收第二数据包(dp2)、第一数据包(dp1)以及高逻辑状态的读地址命中信号。第二多路复用器134输出第二数据包(dp2)作为读数据(rdata)。

在另一种实施例中,读地址(raddr)与故障地址(addr_10)不匹配。在一个示例中,读地址(raddr)对应于第二闪存存储器段136b的地址。因而,闪存存储器114输出存储于读地址(raddr)所指示的地址处的第二数据包(dp11)作为第一数据包(dp1)。第一地址搜索逻辑电路122接收读地址(raddr),并且将读地址(raddr)与存储于地址存储器阵列126中的至少一个地址进行比较。当读地址(raddr)与故障地址(addr_10)不匹配时,第一地址搜索逻辑电路122输出低逻辑状态的读地址命中信号。此外,第一地址搜索逻辑电路122输出不准确的选择信号。第一多路复用器132输出随机数据包作为第二数据包(dp2)。第二多路复用器134接收第二数据包(dp2)、第一数据包(dp1)以及低逻辑状态的读地址命中信号。第二多路复用器134输出第一数据包(dp1)作为读数据(rdata)。

在一种替换的实施例中,当闪存存储器系统102接收到闪存命令(flash_cmd)和写地址(waddr)时,写地址(waddr)指示闪存命令(flash_cmd)将要执行处的闪存存储器114中的地址。闪存存储器控制器112输出写地址(waddr)作为命令地址(cmd_addr)。

在一种实施例中,写地址(waddr)与故障地址(addr_10)匹配。第二地址搜索逻辑电路124接收命令地址(cmd_addr)并输出高逻辑状态的命令地址命中信号,因为命令地址(cmd_addr)与存储于地址存储器阵列126中的至少一个地址匹配。修复控制器104接收命令地址命中信号并输出命令确认信号(cmd_ack)。命令确认信号(cmd_ack)给闪存存储器控制器112指示,写地址(waddr)与存储于地址存储器阵列126中的至少一个地址匹配。闪存存储器控制器112接收命令确认信号(cmd_ack)并输出闪存命令(flash_cmd)。

修复控制器104接收作为命令地址(cmd_addr)的写地址(waddr)以及闪存命令(flash_cmd)。修复控制器104将闪存命令(flash_cmd)修改为eeprom系统命令(eep_cmd),并且将命令地址(cmd_addr)修改为经修改的地址(eep_addr)。经修改的地址(eep_addr)指示第一数据包(dp10)所存储的eeprom段140b的地址。此外,修复控制器104输出eeprom系统命令(eep_cmd)和经修改的地址(eep_addr)。eeprom控制器116接收eeprom系统命令(eep_cmd)和经修改的地址(eep_addr),并且对存储于eeprom修复阵列120中由命令地址(cmd_addr)指示的地址处的第一数据包(dp10)执行eeprom系统命令(eep_cmd)。eeprom控制器116输出eeprom确认命令(eep_cmd_ack)。eeprom确认命令(eep_cmd_ack)给修复控制器104指示,eeprom控制器116已成功执行了eeprom系统命令(eep_cmd)。修复控制器104接收eeprom确认命令(eep_cmd_ack)并将命令确认信号(cmd_ack)输出给闪存存储器系统102。命令确认信号(cmd_ack)给闪存存储器系统102指示,修复控制器104已成功执行了闪存命令(flash_cmd)。

在另一种实施例中,写地址(waddr)与故障地址(addr_10)不匹配。第二地址搜索逻辑电路124接收命令地址(cmd_addr)并且输出低逻辑状态的命令地址命中信号,因为命令地址(cmd_addr)与存储于地址存储器阵列126中的至少一个地址不匹配。修复控制器104接收命令地址命中信号并输出命令确认信号(cmd_ack)。命令确认信号(cmd_ack)给闪存存储器控制器112指示,写地址(waddr)与存储于地址存储器阵列126中的至少一个地址不匹配。闪存存储器控制器112接收命令确认信号(cmd_ack)。此外,闪存存储器控制器112对存储于闪存存储器114中由写地址(waddr)指示的地址处的第二数据包(dp11)执行闪存命令(flash_cmd)。

因而,闪存存储器系统102使用eeprom系统106来修复,该eeprom系统106并不是与闪存存储器系统102相同类型的存储器。上述修复机制同样可以被实施用于eeprom系统的修复。此外,在读操作期间,高速缓冲存储器110在一个闪存时钟周期内输出数据。另外,芯片100与常规的存储器装置相比具有更快的获取时间。芯片100能够使用现有的设计程序(例如,寄存器-传输级设计)来实现。芯片100使用第一和第二eeprom段140a和140b,而不是冗余的闪存存储器扇区来修复在第一闪存存储器扇区136中的错误。因此,上述修复机制与使用冗余的闪存存储器扇区的现有技术的解决方案相比是经济的。此外,与现有技术解决方案相比,上述修复机制代替较少数量的不包括错误的存储器单元。

虽然已经示出并描述了本发明的各种实施例,但是应当清楚,本发明并不仅限定于这些实施例。本领域技术人员应当清楚没有脱离权利要求书所描述的本发明的精神和范围的众多的修改、改变、变动、替代和等效形式。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1