检错和纠错电路的制作方法

文档序号:14122254阅读:758来源:国知局
检错和纠错电路的制作方法

本申请是分案申请,原申请的申请日为2012年02月24日,申请号为201210044955.8,发明名称为“检错和纠错电路”。本申请要求于2011年2月25日提交的美国专利申请no.13/035,826的优先权和利益。

本申请涉及集成电路,并更特别涉及用于检测集成电路(例如可编程集成电路)上的存储器错误的电路。



背景技术:

可编程集成电路是如下类型的集成电路,其可以由用户编程从而实现期望的定制逻辑功能。在通常情况下,逻辑设计师使用计算机辅助设计工具来设计定制逻辑电路。在设计过程完成时,工具生成配置数据。配置数据加载进入存储器元件从而配置器件以执行定制逻辑电路的功能。

存储器元件通常基于随机访问存取存储器(ram)单元。因为ram单元在器件编程期间被加载配置数据,所以ram单元有时称为配置存储器或配置随机访问存取存储器(cram)单元。

在可编程器件的正常操作期间,cram单元产生静态输出信号,其被施加于晶体管(例如传输晶体管)的栅极。cram输出信号开启一些晶体管并且关闭其它晶体管。这种选择性激活器件上的某些晶体管定制了器件的操作,使得器件执行其意图的功能。

当可编程器件工作在系统中时,其面临环境背景辐射。特别是在含有大量cram单元的现代可编程器件中,对cram单元的辐射冲击将有可能导致该cram单元改变其状态。例如,存储“1”配置位的cram单元可能翻转其状态,使得该单元错误存储“0”比特。当cram单元改变状态时,受该cram单元控制的晶体管将被置于错误状态中。例如,晶体管可能在其应该关闭时被开启。

在配置随机访问存取存储器单元中出现的辐射引起的错误有时称为软错误。可以解决软错误的一种方式是改变配置随机访问存取存储器单元的设计。然而,改变配置随机访问存取存储器单元会引入不期望的电路复杂性,并且会消耗额外的电路面积(realestate)。

可编程器件有时包括检错电路,其连续监控整个cram单元阵列。如果在阵列中检测到错误,则可以设置错误标志。要求高可靠性操作的系统可以监控错误标志的状态,从而确定可编程器件是否已经经历任何软错误。只要没有错误存在,系统就允许可编程器件正常操作。然而,如果错误标志的状态指示器件上的配置随机访问存取存储器单元中的一个展现软错误,则系统可以通过将原配置数据重加载进入配置随机访问存取存储器单元来重配置器件。然而,每次检测到软错误就重加载整个可编程器件会导致不必要的频繁中断,并且会消耗大量的功率。

常规检错电路,例如使用循环冗余校验(crc)的检错电路,可以执行顺序数据校验。使用该顺序方法的检错速度受每时钟周期可以处理的数据位的数量限制。例如,使用crc的常规检错电路可能需要多于1亿个时钟周期来确定具有1亿个cram单元的可编程器件上是否存在软错误。



技术实现要素:

集成电路(例如可编程集成电路)可以具有耦合到检错电路和纠错电路的存储器元件。检错电路可以用来监控(扫描)存储器单元是否存在软错误,而纠错电路可以用来纠正检测到的错误。

例如,可编程集成电路可以含有一个或多个配置随机访问存取存储器(cram)单元阵列。每个阵列可以含有用来存储配置数据的多行和多列配置随机访问存取存储器单元。集成电路还可以组织为不同的逻辑区域,每个逻辑区域具有其自己的一组存储器阵列。

连接到公共地址线的存储器单元可以统称为存储器单元列。连接到公共数据线(或位线)的存储器单元可以统称为存储器单元行。术语行和列有时可以互换使用。地址线可以连接到相应的地址寄存器,而数据线可以连接到数据寄存器。

检错电路可以处理每个单元列从而扫描软错误。响应于检测到的错误,纠错电路(例如纠错码电路)可以定位和纠正软错误。如果期望,存储器阵列中的所选区域可以被重配置(重编程)从而改写错误。检错电路扫描给定列的速度可以比纠错电路定位和纠正给定列中的错误的速度快100倍以上。检错电路的速度可以被定义为自存储器位从数据寄存器传输到检错电路至使错误信号有效的时间段。纠错电路的速度可以定义为自检测到错误至纠正过的数据被写入保存错误数据的单元的时间的时间段。例如,检错电路可能需要10ns检测单元列中的错误,而纠错单元可能需要多于1μs来定位和纠正该单元列中的错误。

存储器检错电路可以包括耦合到数据寄存器的逻辑门,例如逻辑异或(xor)门。xor门可以布置为多组线性链或二叉树。不同组的线性链或二叉树可以交错从而提供单比特或相邻多比特检错能力。单比特检错能力可以针对每组存储器单元包括单个奇偶位,而多比特检错能力可以针对每组存储器单元包括多个奇偶位。线性链可以流水线化从而满足检错性能标准。

奇偶位可以使用计算机辅助设计工具(例如逻辑设计工具)预先计算,或可以在器件配置期间(例如在加载期间)计算。

具有每列单个奇偶位的存储器检错电路可以生成单个错误信号,其指示是否检测到单比特错误。具有每列多个交错奇偶位的存储器检错电路可以生成多个错误信号,其指示是否检测到多比特相邻错误。单比特错误和多比特错误可以经由使用ecc电路或器件重配置进行的纠错而纠正。

根据附图和下面详细描述,本发明的其他特征、其性质和各种优点将更明显。

附图说明

图1是根据本发明实施例的说明性可编程集成电路的图示。

图2是根据本发明实施例示出通过逻辑设计系统生成配置数据,并配置器件以便基于配置数据在系统中操作的图示。

图3是具有检错和纠错电路的可编程集成电路的图示。

图4是根据本发明实施例的具有检错电路和纠错电路的说明性集成电路的图示。

图5a是根据本发明实施例的具有适合检测单比特错误的交错结构的说明性检错电路的图示。

图5b是根据本发明实施例的具有适合检测相邻多比特错误的交错结构的说明性检错电路的图示。

图6是根据本发明实施例的具有交错树形结构的说明性检错电路的图示。

图7和8是根据本发明实施例的具有流水线交错树形结构的说明性检错电路的图示。

图9是根据本发明实施例的具有图7的检错电路的说明性集成电路的图示。

图10是根据本发明实施例的具有图7的检错电路和列多路复用器的说明性集成电路的图示。

图11是根据本发明实施例的说明性数据线缓冲器的图示。

图12是根据本发明实施例的说明性流水线数据线缓冲器的图示。

图13是根据本发明实施例的具有流水线数据线缓冲器和检错电路的说明性集成电路的图示。

具体实施方式

本发明的实施例涉及集成电路,并更特别涉及具有存储器元件的集成电路。

含有存储器元件的集成电路可以包括存储器芯片、具有存储器阵列的数字信号处理电路、微处理器、具有存储器阵列的专用集成电路、可编程逻辑器件集成电路或在其中存储器元件用于配置存储器的其它可编程集成电路,或其它合适的集成电路。

集成电路,例如可编程集成电路,使用可编程存储器元件存储配置数据。在可编程集成电路的编程期间,配置数据被加载到存储器元件中。在可编程集成电路的操作期间,每个存储器元件都提供静态输出信号。存储器元件供应的静态输出信号充当控制信号。这些控制信号被施加到集成电路上的可编程逻辑,从而定制可编程逻辑以执行期望的逻辑功能。

存储器元件可以被组织为具有多个行和列的阵列。例如,存储器阵列电路可以在可编程逻辑器件集成电路上形成为几百或几千行和列。图1的可编程集成电路10是在其上形成存储器阵列电路的说明性集成电路的例子。

如在图1中示出,可编程集成电路10可以具有输入输出电路12,用于经输入输出管脚14驱动信号离开器件10并且从其它器件接收信号。互连资源16(例如全局和本地垂直和水平导线和总线)可以用来路由器件10上的信号。互连资源16包括固定互连(导线)和可编程互连(即各固定互连之间的可编程连接)。可编程逻辑18可以包括组合与时序逻辑电路。可编程逻辑18可以被配置为执行定制逻辑功能。

可编程集成电路10含有存储器元件20,可以使用管脚14和输入输出电路12将存储器元件加载配置数据(也称为编程数据)。一旦加载,存储器元件各自提供对应的静态控制输出信号,其控制可编程逻辑18中关联的逻辑部件的状态。通常,存储器元件输出信号用来控制金属氧化物半导体(mos)晶体管的栅极。晶体管中的一些可以是p沟道金属氧化物半导体(pmos)晶体管。这些晶体管中的大多数在可编程部件(例如多路复用器)中可以是n沟道金属氧化物半导体(nmos)传输晶体管。当存储器元件输出为高时,由该存储器元件控制的nmos传输晶体管将被开启,从而使逻辑信号从其输入传到其输出。当存储器元件输出为低时,传输晶体管被关闭并且不传输逻辑信号。

通常的存储器元件20由多个晶体管形成,这些晶体管被配置为形成交叉耦合的反相器。也可以使用其它布置(例如具有更多分布式类反相器电路的单元)。通过一个合适的方法,互补金属氧化物半导体(cmos)集成电路技术用来形成存储器元件20,所以基于cmos的存储器元件实现在此作为例子进行描述。在可编程集成电路的情境中,存储器元件存储配置数据,并且因此有时称为配置随机访问存取存储器(cram)单元。

在图2中示出针对器件10的说明性系统环境。器件10可以安装在系统38中的板件36上。通常,可编程逻辑器件10可以从编程设备或从其它合适的设备或器件接收配置数据。在图2的例子中,可编程逻辑器件10是如下类型的可编程逻辑器件,其从关联的集成电路40接收配置数据。在该类型的布置中,如果期望,电路40可以与可编程逻辑器件10一样安装在同一板件36上。电路40可以是可擦除可编程只读存储器(eprom)芯片、具有内置存储器的可编程逻辑器件配置数据加载芯片(有时称为配置器件),或其它合适的器件。当系统38启动时(或在另一合适时间),可以将配置可编程逻辑器件的配置数据从器件40供应到可编程逻辑器件,如通过路径42示意示出的。向可编程逻辑器件供应的配置数据可以存储在可编程逻辑器件中,在其配置随机访问存取存储器元件20中。

系统38可以包括处理电路44、存储46和与器件10通信的其它系统部件48。系统38的部件可以位于一个或多个板件上,例如板件36或其它合适的安放结构或外壳上,并且可以通过总线和其它电气路径50互连。

可以经由路径(例如路径52)向配置器件40供应用于器件10的配置数据。配置器件40可以例如从配置数据加载设备54或在配置器件40中存储该数据的其它合适的设备接收配置数据。器件40可以在安装在板件36上之前或之后加载数据。

在可编程逻辑器件中设计和实现期望的逻辑电路会是一件繁重的任务。因此,逻辑设计师通常使用基于计算机辅助设计(cad)工具的逻辑设计系统来帮助他们设计电路。逻辑设计系统可以帮助逻辑设计师为系统设计和测试复杂的电路。当设计完成时,逻辑设计系统可以用来生成配置数据,用于对适当的可编程逻辑器件进行电编程。

如在图2中示出,由逻辑设计系统56产生的配置数据可以经由路径(例如路径58)提供到设备54。设备54向器件40提供配置数据,使得器件40可以稍后经由路径42向可编程逻辑器件10提供该配置数据。系统56可以基于一个或多个计算机和一个或多个软件程序。通常,软件和数据可以存储在系统56中的任何计算机可读介质(存储)上,并且在图2中示意性地示作存储60。

在通常情况下,逻辑设计师使用逻辑设计系统56来生成定制电路设计。系统56产生对应的配置数据,其被提供到配置器件40。在加电之后,配置器件40和可编程逻辑器件10上的数据加载电路用来将配置数据加载到器件10的cram单元20中。然后,器件10可以用于系统38的正常操作。

图3是具有常规检错和纠错电路的可编程集成电路的图示。如在图3中示出,可编程集成电路70包括以行和列方式布置的cram单元72。器件70可以例如包括10,000行的cram单元72和10,000列的cram单元72。

每列单元72连接到相应的地址线84。具体地,第一列单元72连接到第一地址线84(即在其上传送地址信号add0的地址线),而第二列单元72连接到第二地址线84(即在其上传送地址信号add1的地址线),以此类推。cram单元72被组织为十组单元72,每组包括1000个单元列。沿给定位线的单元被每组单元72之间的数据线缓冲器80隔开。每组单元72从对应的地址移位寄存器82接收地址信号。例如,第一组单元72由通过第一地址移位寄存器82提供的地址信号add0-add999控制,而第二组单元72由通过第二地址移位寄存器82提供的地址信号add1000-add1999控制,以此类推。

每行单元72连接到相应的数据线78。具体地,第一行单元72连接到第一数据线78(即在其上传送数据线信号dl0的数据线),而第二行单元72连接到第二数据线78(即在其上传送数据线信号dl1的数据线),以此类推。与给定的一组单元72关联的数据线78通过数据线缓冲器80耦合到与相邻的一组单元72关联的数据线78,如在图3中示出。例如,与第一组中的第一行单元72关联的数据线78通过第一数据线缓冲器80连接到与第二组中的第一行单元72关联的数据线78。

数据线78连接到数据寄存器74。数据寄存器74含有10,000个触发器,每个触发器与相应的单元行通信。与单个一比特宽的传输相比,为了提高数据传输速度,数据寄存器74包括八个移位寄存器76,每个移位寄存器含有串联连接的1,250个触发器。每组八个连续单元行连接到八个移位寄存器76中的对应的触发器。例如,第一行单元72连接到第一移位寄存器76中的第一触发器,第二行单元72连接到第二移位寄存器76中的第一触发器,第三行单元72连接到第三移位寄存器76中的第一触发器,…,第九行单元72连接到第一移位寄存器76中的第二触发器,第十行单元72连接到第二移位寄存器76中的第二触发器,第十一行单元72连接到第三移位寄存器76中的第二触发器,以此类推。

地址寄存器82和数据寄存器74连接到控制和错误校验码(ecc)电路86。ecc电路86可以检测器件70上的错误、识别错误位置以及可选地重写正确数据。ecc电路86使用顺序过程执行检错。因此,使用电路86检错的速度受每时钟周期可以处理的数据位的数量限制(即,检错速度受串行移出每列数据所需的时钟周期的数量限制)。

考虑以下例子,在其中器件10含有10,000行和10,000列cram单元72以及八个1,250位移位寄存器76。在检错模式期间,一列单元72通过数据寄存器74并行锁存(即,每个移位寄存器76并行锁存1,250个对应的存储器数据位)。接着,数据位串行移出到ecc电路86。因此,移出一列单元72需要1,250个时钟周期。因此,移出器件70中全部10,000列到电路86需要12,500,000个时钟周期(1,250乘以10,000)。对于典型的10ns时钟周期,ecc电路86需要125ms(12,500,000×10×10-9)来执行整个cram单元72阵列的检错。对于现代器件(其包括的存储器单元的数量日益增加),使用ecc电路86检错的速度可能会慢得不能接受。

图4示出具有检错电路的集成电路10,该检错电路具有改善的检错速度。如在图4中示出,器件10可以包括以阵列方式布置的存储器元件20。存储器元件20可以是随机访问存取存储器(ram)元件(例如静态随机访问存取存储器(sram)单元或配置随机访问存取存储器(cram)单元)、非易失性存储器元件或其它类型的存储器元件。器件10可以包括任何期望数量的行和列的存储器单元20。

每列单元20可以连接到相应的地址线98。例如,第一列单元20可以连接到第一地址线98(例如,在其上传送地址信号add0的地址线),而第二列单元20可以连接到第二地址线98(即在其上传送地址信号add1的地址线),以此类推。

如在图4中示出,单元20可以被组织为不同组的单元20,每组包括八列单元20。每组单元20可以从对应的地址寄存器96接收地址信号。例如,第一组单元可以由通过第一地址寄存器96提供的地址信号add0-add7控制,而第二组单元可以由通过第二地址寄存器96提供的地址信号add8-add15控制,以此类推。

图4的布置仅是说明性的。如果期望,器件10的存储器阵列可以布置为任何期望大小的组(例如,每组单元可以包括多于八个单元列、少于八个单元列、一千或更多单元列、一万或更多单元列等)。每个地址寄存器96可以具有等于每组单元中单元列数量的长度。

每行单元20可以连接到相应的数据线92(有时称为位线)。例如,第一行单元可以连接到第一数据线92,而第二行单元20可以连接到第二数据线92,以此类推。与给定的一组单元关联的数据线92可以通过相应的数据线缓冲器(例如数据线缓冲器(dlb)94)耦合到与相邻的一组单元关联的数据线92(参见例如图4)。例如,与第一组中的第一行单元关联的数据线92通过第一dlb94耦合到与第二组中的第一行单元关联的数据线92。

数据线92可以连接到数据寄存器90。数据寄存器90由数据存储元件链例如触发器链(有时称为数据位存储元件或单元)形成。数据寄存器90可以包括多个移位寄存器。每个移位寄存器可以包括串联连接的多个触发器。数据寄存器90中的移位寄存器可以用来并行锁存来自所选列的存储器单元20的数据。移位寄存器可以使用“分布式”配线布置连接到数据线92。

例如,考虑如在图4中示出的存储器电路。图4的存储器电路包括14行单元20(作为例子)。每组两个连续行的单元20可以连接到数据寄存器90中第一和第二移位寄存器中的对应触发器。具体地,第一行单元20可以连接到第一移位寄存器中的第一触发器,第二行单元20可以连接到第二移位寄存器中的第一触发器,第三行单元20可以连接到第一移位寄存器中的第二触发器,第四行单元20可以连接到第二移位寄存器中的第二触发器,…,第十三行单元20可以连接到第一移位寄存器中的第七触发器,第十四行单元20可以连接到第二移位寄存器中的第七触发器。

考虑以下另一例子,在其中器件10包括10,000个单元行。数据寄存器90可以包括八个移位寄存器,每个移位寄存器含有串联连接的1,250个触发器。每组八个连续行的单元20可以连接到八个移位寄存器中的对应的触发器。具体地,第一行单元20可以连接到第一移位寄存器中的第一触发器,第二行单元20可以连接到第二移位寄存器中的第一触发器,第三行单元20可以连接到第三移位寄存器中的第一触发器,…,第九行单元20可以连接到第一移位寄存器中的第二触发器,第十行单元20可以连接到第二移位寄存器中的第二触发器,第十一行单元20可以连接到第三移位寄存器中的第二触发器,以此类推。

图4的例子仅是说明性的。可以在器件10上形成任何期望数量的单元行(例如,器件10可以包括十个或更多行,或一千或更多行的单元20)。数据寄存器90可以划分为任何期望数量的移位寄存器,并且可以使用在此描述的分布式配线布置连接到数据线92。

为了清晰,在图4中没有示出数据寄存器90划分为多个移位寄存器以及多个移位寄存器和数据线92之间的分布式连接。为了简化,假设第一数据线92连接到数据寄存器90中的第一比特位置(bitposition)中的第一触发器(例如正在存储存储器数据位d0的触发器),第二数据线92连接到数据寄存器90中第二比特位置中的第二触发器(例如正在存储存储器数据位d1的触发器),第三数据线92连接到数据寄存器90中第三比特位置中的第三触发器(例如正在存储存储器数据位d2的触发器),以此类推。

器件10可以包括检错电路,例如检错电路88。电路88可以包括以线性链方式(例如14位线性链)布置的逻辑xor门,例如xor门100。每个xor门100可以具有输出、第一输入和第二输入,第一输入从数据寄存器90中对应的触发器接收数据,第二输入连接到先前xor门100的输出。第一输入连接到寄存器90的第一触发器的异或门100可以称为“尾部”xor门,而第一输入连接到寄存器90的最后一个触发器(即锁存来自最后一行单元20的数据的触发器)的xor门100可以称为“头部”xor门。头部xor门的第一输入可以连接到地供电线,而尾部xor门可以在其输出生成错误信号error。

可以将奇偶位(或奇偶校验位)加载到所选行的存储器单元20中(例如可以将奇偶位加载到沿所选单元行布置的奇偶位存储器元件中)。例如,可以在检错操作之前将奇偶位加载到由d0指示的第一单元行中。如果期望,可以将奇偶位加载到另一行或其它行的单元20中。因为奇偶性被设置为在没有错误时产生逻辑“0”,所以奇偶位仅用于奇偶计算,并且不用来控制任何配置电路。可以使用结合图2描述的设计工具56预先确定奇偶位。

在其它合适的布置中,可以将多个奇偶位加载到每列中。例如,每列可以有两个奇偶位,其中第一奇偶位与序号(索引)为偶数的存储器元件关联,而第二奇偶位与序号为奇数的存储器元件关联。通常,在此定义的结构可以扩展到多个奇偶位,其针对每列中的存储器位交错或成组。使用在每列中的存储器位上交错的多个奇偶位的配置提供了检测多个相邻错误的额外能力。

在检错模式期间,来自所选列的单元20的数据可以由数据寄存器90锁存。在传播延迟(其与串联连接的门100的数量成比例)之后,信号error将指示所选列的单元是否展现单比特错误。例如,如果信号error为低,则没有检测到软错误。如果信号error为高,则所选列展现单比特错误。图4的检错电路88能够检测所选列的单元20是否在单个时钟周期中含有单比特错误。因为电路88的准确性取决于预先确定的奇偶位的准确性,所以电路88有时可以称为奇偶校验电路。

检错电路88可以比ecc电路86更迅速地检测错误,并且可以结合ecc电路86使用从而提供改善的检错和纠错速度。检错电路88可以用来顺序扫描和检测每个单元列中的错误。响应于检测到错误,纠错电路200(例如ecc电路)可以用来确定错误的精确位置并且纠正错误(例如,将正确的数据回写到阵列中)。一旦检测到错误,图3的控制块86中的纠错电路可以用来执行纠正。

例如,考虑以下情形,在其中ecc电路86用来对具有10,000行和10,000列的存储器阵列执行检错和纠错。在每比特通常10ns时钟周期的情况下,使用ecc电路86对整个阵列检错和纠错可能需要多于100ms。

考虑另一情形,在其中检错电路88用来对具有10,000行和10,000列的存储器阵列进行检错。在每列通常10ns时钟周期的情况下,使用检错电路88对整个阵列检错可能仅需要100μs(作为例子)。接着,ecc电路200可以用来定位和纠正检测到的错误。如果期望,可以重配置(重编程)存储器阵列中的所选区域从而改写错误。

检错电路扫描给定列的速度可以比纠错电路定位和纠正给定列中错误的速度快100倍以上。例如,检错电路可能需要10ns检测列中的错误,而纠错电路可能需要多于1μs来定位和纠正该单元列中的错误。因此,通过仅在检测到错误时接合纠错电路,所有无错误的列可以在10ns内处理,而1μs纠正时间用于含有错误的列。

如该例子中示出,相比于ecc电路86,检错电路88可以用来改善检错速度。

图4的检错电路具有非交错布置。如在图5a中示出,检错电路88可以使用交错结构布置从而提供单比特检错能力(例如,电路88具有指示是否检测到单比特错误的单输出信号error)。例如,图5a的电路88可以包括第一组逻辑门(例如第一线性链102)和第二组逻辑门(例如第二线性链104)。第一组门(即与图5a的寄存器90中偶数子组数据元关联的那组逻辑电路)和第二组门(即与寄存器90中奇数子组数据元关联的那组逻辑电路)可以独立校验偶数组和奇数组数据元中的错误。线性链102和104是八位线性链。可以将一组奇偶位加载到给定行的单元20中。

第一线性链102可以包括逻辑xor门100链,每个逻辑xor门100具有输出、第一输入和第二输入,第一输入连接到数据寄存器90中对应的偶数数据位索引(例如,线性链102中第一xor门100的第一输入可以连接到存储位d0的触发器,而线性链102中第二xor门100的第一输入可以连接到存储位d2的触发器,以此类推),第二输入连接到线性链102中先前的xor门100的输出。第二线性链104可以包括逻辑xor门100链,每个逻辑xor门100具有第一输入和第二输入,第一输入连接到数据寄存器90中对应的奇数数据位索引(例如,线性链104中第一xor门100的第一输入可以连接到存储位d1的触发器,而线性链104中第二xor门100的第一输入可以连接到存储位d3的触发器,以此类推),第二输入连接到线性链104中先前的xor门100的输出。

线性链102中头部xor门(例如,具有接收位d14的第一输入的xor门100)的第二输入和线性链104中头部xor门(例如,具有接收位d15的第一输入的xor门100)的第二输入可以连接到地线。线性链102的尾部xor门(例如,具有接收位d0的第一输入的xor门100)可以具有连接到组合xor门100’的第一输入的输出,而线性链104的尾部xor门(例如,具有接收位d1的第一输入的xor门100)可以具有连接到逻辑xor门100’的第二输入的输出。线性链102的尾部xor门可以输出指示针对对应偶数位索引的数据位是否检测到错误的第一检错信号,而线性链104的尾部xor门可以输出指示针对对应奇数位索引的数据位是否检测到错误的第二检错信号。异或门100’可以基于第一和第二检错信号在其输出产生错误信号error。如果error为低,则所选列没有软错误。如果error为高,则所选列展现单比特错误。

电路88也可提供多比特检错能力。如在图5b中示出,链102可以生成第一错误信号error1,而链104可以生成与第一错误信号error1分开的第二错误信号error2。可以将第一组奇偶位加载到给定行的单元20中,而可以将第二组奇偶位加载到不同于给定行的另一行单元20中(例如,交错奇偶位可以用来提供多比特检错能力)。如果信号error1为低,则对应的位(例如,存储在所选列中偶数编号的行中的数据位)没有软错误。如果信号error1为高,则对应该列中偶数索引的所选单元可能展现单比特错误。如果信号error2为低,则对应的位(例如,存储在所选列中奇数编号的行中的数据位)没有软错误。如果信号error2为高,则对应该列中奇数索引的所选单元可能展现单比特错误。

因此,信号error1和error2可以指示使用电路88是否检测到双比特相邻错误。

图5a和5b的检错电路88称为双路交错(例如,以提供交错处理),因为两个线性链(例如线性链102和104)用来处理数据寄存器90中全部数据位。由多个交错链产生的错误信号可以产生多个奇偶位、检测多个错误,或结合为单个奇偶位以便检测单比特错误。如果期望,电路88可以具有三路交错结构(例如,使用三个线性链来处理数据寄存器90中的全部数据位),该结构使用单个奇偶位来提供单错误检测能力,或使用三个分开的交错奇偶位来提供三比特相邻错误检测能力错误信号,电路88可以具有多达四个交错位的四路交错结构,从而提供多达四比特相邻错误检测能力,以此类推。图5a和5b的例子仅是说明性的。交错结构可以用来处理具有任何数量行的存储器阵列。

图5a和5b中电路88的检错速度取决于每个线性链的传播延迟。具体地,传播延迟可能与线性链102和104的长度成比例。可以使用混合树形结构布置检错电路88,从而减少传播延迟,同时保留识别多比特错误的能力。图6的例子示出具有树形结构的双路交错。为了清晰,仅示出两个交错的四比特树中的一个。为了容纳两比特交错,可以将第一组奇偶位加载到给定行的单元20中,而将第二组奇偶位加载到不同于给定行的另一行单元20中。

如同图5a和5b的布置,图6的电路88可以包括第一逻辑电路和第二逻辑电路,第一逻辑电路用来监控寄存器90中第一子组位(例如偶数子组位)的状态,第二逻辑电路用来监控寄存器90中第二子组位(例如与偶数子组位交替的奇数子组位)的状态。图6的电路88可以例如包括第一组(级)xor门100(例如组106)以及第二组(级)xor门100(例如组108)。组106中的每个xor门100可以具有第一和第二输入,它们连接到数据寄存器90中相应的奇数数据位索引(例如,组106中第一xor门100的第一输入可以连接到存储位d1的触发器,组106中第一xor门100的第二输入可以连接到存储位d3的触发器,组106中第二xor门100的第一输入可以连接到存储位d5的触发器,组106中第二xor门100的第二输入可以连接到存储位d7的触发器,以此类推)。为了清晰,没有示出输入连接到数据寄存器90中相应偶数数据位索引的那组门100。

组108中的每个xor门100可以具有第一和第二输入,它们连接到组106中相应的门100的输出。组108中的门100可以各自具有输出,其连接到两比特线性链110中对应的xor门100。图6中具有四比特树电路的两路交错检错电路88的传播延迟与n/k+log2(k)成比例,其中n是数据寄存器90的长度(即单元行的数量),并且k是到每个树的输入的数量。如果期望,电路88可以包括八比特树(例如每个都处理八比特存储器数据的二叉树)、十六比特树(例如每个都处理16比特存储器数据的二叉树)或其它类型树形结构,从而处理具有任何数量行的存储器阵列。

线性链110可能引入额外的门延迟。线性链110可以包括流水线触发器,例如耦合在两个xor门100之间的触发器112(ff),从而减少额外的门延迟,如在图7中示出。以此方式流水线化检错电路88中的线性链可以用来为具有数千单元行的器件10进一步优化检错速度。

图8是示出说明性的、带有四比特树的流水线化(例如每流水线级两比特线性链)/两路交错检错电路88(有时称为四比特树电路)。在该例子中,因为每时钟周期可以处理八组四比特树,所以每时钟周期可以处理32比特存储器数据。时钟周期(或时钟循环)会受执行读取操作所需的时间量限制。如果读取操作可以在10ns时钟周期内完成,则可以每10ns处理所选列的单元20。对于包括10,000行和10,000列单元20的器件10,检错可以在100μs(10,000×10×10-9)中执行,该时间比图3的电路86所需的125ms快1,250倍。

使用触发器112的流水线化可能在处理从每个所选列访问的数据中引入至少一个额外的时钟周期延迟。考虑如图9中示出的例子,其中具有四比特树的流水线化(例如,每流水线级单比特链)/双路交错检错电路88用来对具有16行单元20的存储器阵列执行检错。在给定时钟周期中,可以访问列114中的存储器数据并且由数据寄存器90锁存(例如,可以使控制信号add2有效从而选择列114)。列114下半部中的单元20(例如,列114中对应于位索引d8-d15的阴影单元20)可以由电路88处理。得到的第一部分结果可以由触发器112锁存。

在给定时钟周期之后的相继时钟周期中,可以访问列116中的存储器数据并且由数据寄存器90锁存(例如,可以使控制信号add3有效从而选择列116)。列116上半部中的单元20(例如,列116中对应于位索引d0-d7的阴影单元20)可以由电路88处理,从而获得第二部分结果。可以使用xor门100’组合第一和第二部分结果,从而提供信号error。信号error指示针对阴影单元是否检测到单比特错误或相邻双比特错误。

虽然数据寄存器90每时钟周期采样单列单元20,但是执行的每个奇偶校验计算可以基于从不同单元列收集的数据位(例如,单奇偶校验计算可以基于从第一单元列收集的第一部分单元以及从相邻第一单元列的第二单元列收集的第二部分单元)。基于偏移或偏斜数据位执行奇偶校验有时可以称为对存储器的“对角条(diagonalstripes)”或对角区域执行检错。

可以将至少一组奇偶校验位加载到器件10中所选行的单元。流水线化电路88的奇偶校验位的计算可以考虑流水线化寄存器112的延时。在一个合适的布置中,使用计算机辅助设计工具(例如结合图2描述的工具56)预先计算奇偶位(例如,工具56可以计算每个对角条的奇偶性)。

在另一合适的布置中,当器件10加载有存储器数据时,可以计算奇偶位(例如,在器件配置期间计算奇偶位)。因为在奇偶性计算期间流水线触发器112在使用中,所以以此方式计算奇偶位本身就考虑了流水线延时。在器件配置期间计算的奇偶位可以在检错操作之前加载到期望行的单元20中。如果期望,可以使用计算奇偶位的其它方式。

图9的例子包括通过流水线寄存器112分开的两个流水线级。在含有大量单元行的器件中,可以使用多于两个流水线级。例如,考虑以下情形,其中器件10包括10,000单元行和20,000列单元20的情况。可以用39个流水线寄存器112将10,000行分为40个流水线级(作为例子)。因此,每个奇偶校验可以基于从40个不同单元列收集的数据位(例如,每个全对角条可以包括来自40个不同单元列的存储器数据)。也可以处理在存储器阵列左右边缘的部分列(部分条)。在该例子中,可以执行20,039个奇偶校验从而处理全对角条和部分对角条。

器件10的存储器电路可以包括额外的开关电路,从而补偿通过流水线寄存器112的延时。如在图10中示出,器件10可以包括耦合在每个单元列中不同组单元之间的多路复用器电路,例如多路复用器122。每组单元20可以与相应的流水线级关联。

例如,第一多路复用器122可以耦合在第一单元列中对应于索引d0-d7的第一组单元和第一单元列中对应于索引d8-d15的第二组单元之间,而第二多路复用器122可以耦合在第二单元列中对应于索引d0-d7的第一组单元和第二单元列中对应于索引d8-d15的第二组单元之间,以此类推。与给定单元列关联的多路复用器122可以具有第一输入、第二输入、输出和控制输入,第一输入连接到前一单元列的地址线98,第二输入连接到给定列的第一部分地址线98(例如,连接到该列中第一部分单元20的地址线),输出连接到给定列的第二部分地址线98(例如,连接到该列中第二部分单元20的地址线),控制输入接收控制信号。

以此方式配置器件10的存储器电路可以允许流水线化检错电路88对单列而不是对角条执行奇偶校验。考虑如在图10中示出的例子,其中使用具有四比特树的流水线化/双路交错检错电路88来对具有16个单元行的存储器阵列执行检错。在器件10的正常操作期间,每个多路复用器122可以各自被控制电路配置为将其第二输入处的信号路由到其输出。在检错模式期间,每个多路复用器122可以被控制电路配置将其第一输入处的信号路由到其输出。

在检错模式期间给定时钟周期中,可以使列118中的地址信号有效。因为与列118关联的多路复用器122被配置为将其第一输入处的信号路由到其输出,所以可以由电路88处理列120下半部中的单元20(即列120中对应于位索引d8-d15的阴影单元20)。得到的第一部分结果可以由触发器112锁存。

在给定时钟周期之后的相继时钟周期中,可以使列120中的地址信号有效。可以由电路88处理列120上半部中的单元20(即列120中对应于位索引d0-d7的阴影单元20),从而获得第二部分结果。在相继时钟周期期间,可以将第一部分结果提供在触发器112的输出。可以组合第一和第二部分结果,从而提供信号error,其指示针对阴影单元20是否检测到单比特错误。如在图10中示出,以此方式转换地址线可以使得能够对沿单个单元列布置的单元20进行奇偶校验。因此,应该基于每个单元列中的期望值计算奇偶校验位(例如,使用软件工具预先计算或在器件配置期间实时计算)。

在一沿长的数据线92(例如,沿行连接到一百个或更多单元、沿行连接到一千个或更多单元等的数据线)访问期望的单元时,具有大量单元列的器件10可能表现出相当大的线延迟。

在图11中示出非流水线化dlb,例如dlb94。非流水线化数据线缓冲器94可以包括各自具有输入和输出的三态反相器(或缓冲器)124和126。反相器124的输入可以连接到反相器126的输出,而反相器126的输入可以连接到反相器124的输出。反相器124可以由信号write控制,而反相器126可以由信号read控制。如果write为高并且read为低,则dlb94以箭头93的方向朝着期望被写入的单元驱动期望的信号。如果read为高并且write为低,则dlb94以箭头95的方向传播要被数据寄存器90锁存的读取数据。

器件10可以包括流水线化数据线缓冲器94’,从而增加沿数据线92的数据吞吐量。如在图12中示出,dlb94’可以包括各自具有输入和输出的三态反相器124和126。反相器124的输入可以连接到反相器126的输出,而反相器126的输入可以通过触发器128(有时称为一比特数据寄存器)耦合到反相器124的输出。数据寄存器128可以用来缓冲沿数据线的数据线信号,使得读取时间由沿单个数据段(例如,一部分数据线92,其通过单个dlb94’耦合到另一部分数据线92)的线延迟限制。

流水线化数据线92可能为穿过dlb94’的任何数据引入额外的时钟周期延迟。图13示出器件10,其具有流水线化dlb94’和带有两比特树的流水线化(例如,四个单比特流水线级)/两路交错检错电路88。可以使用结合图9描述的相似方法处理部分对角条和全对角条的奇偶校验。跨越dlb94’的对角条的奇偶校验可以包括额外的配置。

例如,在第一时钟周期中,可以使列136中的地址信号有效。可以处理列136中对应于位索引d12-d15的阴影单元20,从而生成第一部分结果。第一部分结果可以由电路88中第一触发器112-1锁存。

在第二时钟周期中,可以使列138中的地址信号有效。可以处理列138中对应于位索引d8-d11的阴影单元20,从而生成第二部分结果。在第二时钟周期期间,可以在第一触发器112-1的输出提供第一部分结果。可以由xor门100-2将第一和第二部分结果组合,从而产生第三部分结果。第三部分结果可以由电路88中第二触发器112-2锁存。

在第三时钟周期中,可以使列140中的地址信号有效。可以由对应的dlb94’锁存列140中对应于位索引d0-d3的阴影单元20中的数据位。可以由对应的dlb94’锁存列140中对应于位索引d8-d11的单元20’中存储的数据位。在第三时钟周期期间,因为单元20’中的数据位由流水线化dlb94’(例如图13的区域142中的dlb94’)门控,所以第三部分结果不能与另一部分结果结合。

检错电路88可以包括可以用来绕开期望的部分结果的多路复用器,例如多路复用器134。在该例子中,与触发器112-3关联的多路复用器134可以被配置为将信号从触发器112-2直接路由到触发器112-3,从而绕开门控的数据位,如通过图13中粗体路径144示出。

在第四时钟周期中,可以使列142中的地址信号有效。来自列140中阴影单元20的数据可以在对应dlb94’的输出处提供到检错电路88。该数据可以由电路88处理,从而生成第四部分结果。使用xor门100-4,第四部分结果可以与在触发器112-3的输出处提供的第三部分结果组合,从而生成信号error。使用流水线化dlb94’的检错不校验存储在绕开的单元20’中的软错误。如果在器件配置期间计算奇偶位,则自然考虑了该dlb延迟。如果使用设计工具预先计算奇偶位,则该设计工具将必须考虑绕开(忽略)的位。

图13的例子仅是说明性的。可以在器件10中使用多于一列的dlb94’,从而提供期望的数据线段延迟。

器件10可以进一步包括纠错码(ecc)电路,其用来纠正器件10上的存储器错误。响应于使用电路88检测到错误,可以使用ecc电路来识别错误的精确位置并且纠正该错误。可以针对软错误重复扫描器件10上的存储器阵列。如果期望,可以将正确的数据重加载到期望列中,从而纠正错误。

例如,考虑以下情形,其中器件10包括10,000行和10,000列单元20、具有16比特树的流水线化(例如具有20个流水线级)/32路交错电路,并且具有10ns的时钟周期。因此,每组位(即每个流水线级)包括512个数据位(16×32)。在该例子中,可以执行10,019个奇偶校验,从而处理全对角条和部分对角条。因为每个奇偶校验可以在一个时钟周期内执行,所以需要100.19μs(10,019×10×10-9)来对整个存储器阵列执行检错。

如果检测到软错误,则有20个可能的列需要使用ecc电路来校验。对于每32路交错组单元,ecc电路可以在313个时钟周期(10,000除以32)中执行检错和纠错。为了对全部20列执行检错和纠错,需要6,260个时钟周期(20×313)或62.6μs(6260×10×10-9)。因此,使用电路88和ecc电路执行检错和纠错需要总共163μs(100.19+62.6),这比常规检错和纠错电路快100倍以上。

附加实施例

附加实施例1。一种集成电路,包括:具有关联的地址线和数据线的存储器阵列,其中每条地址线耦合到给定的一组存储器元件;第一电路,其可操作来检测给定的该组存储器元件中的错误;第二电路,其可操作来定位和纠正给定的该组存储器元件中的错误;以及耦合到第一和第二电路的控制电路,其中控制电路可操作来响应于使用第一电路检测到错误而控制第二电路定位和纠正检测到的错误。

附加实施例2。根据附加实施例1所述的集成电路,其中第二电路包括纠错码电路,并且其中第一电路可操作来以比第二电路可操作来定位和纠正检测到的错误的速度快至少一百倍的速度检错。

附加实施例3。根据附加实施例1所述的集成电路,进一步包括:数据寄存器,其可操作来从与地址线中给定的一条关联的存储器元件接收数据。

附加实施例4。根据附加实施例3所述的集成电路,其中第一电路包括一组逻辑门,每个逻辑门耦合到数据寄存器中相应的数据存储元件。

附加实施例5。根据附加实施例4所述的集成电路,其中该组逻辑门包括异或门。

附加实施例6。根据附加实施例4所述的集成电路,进一步包括:奇偶位存储器元件,其可操作来存储与给定的该组存储器元件关联的奇偶位。

附加实施例7。根据附加实施例6所述的集成电路,其中第一电路被配置为接收奇偶位,并且被配置为基于奇偶位检测给定的该组存储器元件中的错误。

附加实施例8。根据附加实施例4所述的集成电路,其中该组逻辑门包括逻辑门树。

附加实施例9。根据附加实施例8所述的集成电路,其中逻辑门树包括异或门。

附加实施例10。根据附加实施例9所述的集成电路,其中逻辑门树包括多个逻辑门树中的一个,所述集成电路进一步包括:额外的逻辑电路,其可操作来从多个逻辑门树接收相应的数据信号。

附加实施例11。根据附加实施例10所述的集成电路,其中额外的逻辑电路包括具有输出的逻辑门链,逻辑门链可操作来供应检错信号。

附加实施例12。一种集成电路,包括:存储器元件阵列;树形电路,其可操作来检测存储器元件阵列中第一组存储器元件中的错误;以及纠错电路,其可操作来定位和纠正在第一组存储器元件中检测到的错误。

附加实施例13。根据附加实施例12所述的集成电路,进一步包括:额外的树形电路,其可操作来检测存储器元件阵列中第二组存储器元件中的错误。

附加实施例14。根据附加实施例13所述的集成电路,进一步包括:给定的电路,其可操作来从树形电路和额外的树形电路接收信号,并且还可操作来产生对应的检错信号。

附加实施例15。根据附加实施例12所述的集成电路,其中纠错电路包括纠错码电路,并且其中树形电路可操作来以比纠错电路可操作来定位和纠正检测到的错误的速度快一百倍以上的速度检错。

附加实施例16。根据附加实施例14所述的集成电路,其中给定的电路包括逻辑门链和至少一个触发器。

附加实施例17。根据附加实施例16所述的集成电路,其中树形电路可操作来向逻辑门中的第一个供应第一输出信号,其中额外的树形电路可操作来向逻辑门中的第二个供应第二输出信号,以及其中触发器插在链中的第一和第二逻辑门之间。

附加实施例18。根据附加实施例12所述的集成电路,进一步包括:阵列中的多条地址线;以及多个多路复用器,每个多路复用器可操作来接收地址线中的至少一条作为输入。

附加实施例19。一种集成电路,包括:存储器元件阵列,其可操作来经由数据线加载有数据,其中每条数据线具有至少第一段和第二段,并且其中存储器元件阵列具有可操作来经由第一段加载的第一组存储器元件和可操作来经由第二段加载的第二组存储器元件;以及插在每条数据线内的数据寄存器,该数据寄存器将该数据线的第一段耦合到该数据线的第二段。

附加实施例20。根据附加实施例19所述的集成电路,进一步包括:与每条数据线中数据寄存器关联的缓冲器电路,其中缓冲器电路包括第一缓冲器,其可操作来增强在该数据线中从第一段传到第二段的信号,并且其中缓冲器电路包括第二缓冲器,其可操作来增强在该数据线中从第二段传到第一段的信号。

附加实施例21。根据附加实施例19所述的集成电路,进一步包括:第一树形电路,其可操作来检测第一组存储器元件中的错误;第二树形电路,其可操作来检测第二组存储器元件中的错误;以及第三电路,其可操作来从第一树形电路和第二树形电路接收信号,并进一步可操作来产生对应的检错信号。

附加实施例22。根据附加实施例21所述的集成电路,其中第三电路包括逻辑门链和至少两个触发器。

附加实施例23。根据附加实施例22所述的集成电路,其中逻辑门中给定的一个插在两个触发器之间,集成电路进一步包括:多路复用器,其可操作来被选择性地配置为绕开链中给定的逻辑门。

附加实施例24。根据附加实施例23所述的集成电路,其中逻辑门中给定的一个包括异或门。

附加实施例25。根据附加实施例19所述的集成电路,进一步包括:可操作来检测存储器元件阵列中一组存储器元件中的错误的电路;以及纠错电路,其可操作来定位和纠正该组存储器元件中检测到的错误,其中电路可操作来以比纠错电路可操作来定位和纠正检测到的错误的速度快至少一百倍的速度检错。

前述仅是本发明原理的说明,并且本领域技术人员在不背离本发明的范畴和精神的情况下可以做出各种修改。前述实施例可以单独实现或以任何组合方式实现。

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