具有兼容不同数据长度的纠错功能的存储器和纠错方法与流程

文档序号:11585732阅读:205来源:国知局
具有兼容不同数据长度的纠错功能的存储器和纠错方法与流程

本发明涉及一种具有纠错功能的存储器以及一种存储器纠错方法。



背景技术:

ecc(errorcorrectioncode,纠错码)通过在一定长度数据位的基础上增加监督位来检测和纠正出错的数据。具有纠错功能的存储器的常规读写过程如图1和图2所示,其中图1示意性示出了写入过程。数据阵列1用于存储数据,ecc阵列2用于存储ecc的监督位。当从系统将n位数据写入存储器时,将利用此n位数据通过ecc编码模块3生成m位监督位,然后n位数据和m位监督位一起写入相应的存储阵列。其中数据长度n大于0,并小于等于存储器进行一次读写操作的数据长度。监督位长度m大于0,其值取决于选取的ecc算法。

图2示意性示出了读出过程。n位数据和m位监督位被从相应的存储阵列中读出,被放大之后被传送到ecc解码模块4,ecc解码模块4可以对出错的数据进行检测和纠正,并且读出纠正后的n位数据。

从图1的写入过程可以知道,在ecc编码模块3生成m位监督位时,需要数据长度为n的数据位,这是由所选取的ecc算法决定的。但对于存储器来说,其有效的输入数据的长度不是一成不变的,例如动态随机存取存储器dram(dynamicrandomaccessmemory),其规范里就有规定,当存在突发突变模式(burstchopmode,在下文中简称bc模式)时,其数据长度就会改变,使得数据长度小于n;或者对于不同数据长度的结构,例如在x4,x8,x16等模式下,其数据长度也会随着外部控制而变化,使得数据长度不等于n。但是一旦ecc算法选定,其对应的ecc的编码模块所需要的数据长度是一定的,如果数据长度变化就不能顺利生成ecc的监督位。除非在这些可能遇到的所有限制条件里面找到一个最小的数据长度,根据这个最小的数据长度选择ecc算法,这样就能支持所有模式。如果这个最小的数据长度是8,即使是对于最高效的汉明码来说,最少也需要4位的监督位,这会增加至少50%的存储面积来存储ecc的监督位,这使得存储器的成本大大增加,并降低了ecc算法选取的灵活性和高效性。

因此,需要提供一种兼容不同数据长度的具有纠错功能的存储器。



技术实现要素:

为此,在根据本发明的第一方面,提供了一种具有纠错功能的存储器,其中,包括:数据阵列、ecc阵列、ecc编码模块、ecc解码模块、第一数据选择模块、第二数据选择模块和数据输出模块,其中,当写入数据时:该数据阵列被配置成存储写入的数据;该第一数据选择模块被配置成接收该写入的数据,并且响应于影响数据长度的控制信号来确定是否还接收来自该数据阵列的数据;该ecc编码模块被配置成接收该第一数据选择模块输出的数据,并且根据其内预先设置的ecc算法对该数据进行编码以生成监督位;且该ecc阵列被配置成存储生成的监督位;当读出数据时:该数据阵列被配置成输出存储的数据;该ecc阵列被配置成输出存储的监督位;该ecc解码模块被配置成同时接收该数据阵列输出的数据和该ecc阵列输出的监督位来进行数据的检测和纠正;该第二数据选择模块被配置成响应于影响数据长度的控制信号生成数据输出模块控制信号;该数据输出模块被配置成接收经纠正的数据并且响应于该数据输出模块控制信号来控制该数据输出模块输出的数据的长度。

根据一个优选实施方案,所述影响数据长度的控制信号是与x4、x8、x16模式或者x4、x8以及x16模式之一与突发突变模式的组合模式对应的信号。

根据一个优选实施方案,在写入数据时,若影响数据长度的控制信号有效,则该第一数据选择模块还接收来自该数据阵列的数据,以将来自该数据阵列的数据与写入的数据组合成符合该ecc编码模块内预先设置的ecc算法的数据。

根据一个优选实施方案,在写入数据时,若影响数据长度的控制信号无效,则该第一数据选择模块不接收来自该数据阵列的数据而只接收写入的数据就能够输出符合该ecc编码模块内预先设置的ecc算法的数据。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号有效,则该数据输出模块输出的数据的长度不对应于该ecc算法所需要的数据的长度。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号无效,则该数据输出模块输出的数据的长度对应于该ecc算法所需要的数据的长度。

在根据本发明的第二方面,提供了一种具有纠错功能的存储器,其中,包括:数据阵列、ecc阵列、ecc编码模块、ecc解码模块、数据选择模块和数据输出模块,其中,当写入数据时:该数据阵列被配置成存储写入的数据;该ecc编码模块被配置成接收来自该数据阵列的数据,并且根据其内预先设置的ecc算法对该数据进行编码以生成监督位;且该ecc阵列被配置成存储生成的监督位;当读出数据时:该数据阵列被配置成输出存储的数据;该ecc阵列被配置成输出存储的监督位;该ecc解码模块被配置成同时接收该数据阵列输出的数据和该ecc阵列输出的监督位来进行数据的检测和纠正;该数据选择模块被配置成响应于影响数据长度的控制信号生成数据输出模块控制信号;该数据输出模块被配置成接收经纠正的数据并且响应于该数据输出模块控制信号来控制该数据输出模块输出的数据的长度。

根据一个优选实施方案,所述影响数据长度的控制信号是与x4、x8、x16模式或者x4、x8以及x16模式之一与突发突变模式的组合模式对应的信号

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号有效,则该数据输出模块输出的数据的长度不对应于该ecc算法所需要的数据的长度。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号无效,则该数据输出模块输出的数据的长度对应于该ecc算法所需要的数据的长度。

在根据本发明的第三方面,提供了一种存储器纠错方法,其中,该存储器包括数据阵列、ecc阵列、ecc编码模块、ecc解码模块、第一数据选择模块、第二数据选择模块和数据输出模块,该存储器纠错方法包括:当写入数据时:将写入的数据存储在该数据阵列中;通过该第一数据选择模块接收该写入的数据,并且通过该第一数据选择模块响应于影响数据长度的控制信号来确定是否还接收来自该数据阵列的数据;通过该ecc编码模块接收该第一数据选择模块输出的数据,并且通过该ecc编码模块根据其内预先设置的ecc算法对该数据进行编码以生成监督位;且将生成的监督位存储在该ecc阵列中;当读出数据时:从该数据阵列输出存储的数据;从该ecc阵列输出存储的监督位;通过该ecc解码模块同时接收该数据阵列输出的数据和该ecc阵列输出的监督位来进行数据的检测和纠正;通过该第二数据选择模块响应于影响数据长度的控制信号生成数据输出模块控制信号;通过该数据输出模块接收经纠正的数据并且响应于该数据输出模块控制信号来控制该数据输出模块输出的数据的长度。

根据一个优选实施方案,所述影响数据长度的控制信号是与x4、x8、x16模式或者x4、x8以及x16模式之一与突发突变模式的组合模式对应的信号。

根据一个优选实施方案,在写入数据时,若影响数据长度的控制信号有效,则该第一数据选择模块还接收来自该数据阵列的数据,以将来自该数据阵列的数据与写入的数据组合成符合该ecc编码模块内预先设置的ecc算法的数据。

根据一个优选实施方案,在写入数据时,若影响数据长度的控制信号无效,则该第一数据选择模块不接收来自该数据阵列的数据而只接收写入的数据就能够输出符合该ecc编码模块内预先设置的ecc算法的数据。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号有效,则该数据输出模块输出的数据的长度不对应于该ecc算法所需要的数据的长度。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号无效,则该数据输出模块输出的数据的长度对应于该ecc算法所需要的数据的长度。

在根据本发明的第四方面,提供了一种存储器纠错方法,其特征在于,该存储器包括数据阵列、ecc阵列、ecc编码模块、ecc解码模块、数据选择模块和数据输出模块,该存储器纠错方法包括:当写入数据时:将写入的数据存储在该数据阵列中;通过该ecc编码模块接收来自该数据阵列的数据,并且通过该ecc编码模块根据其内预先设置的ecc算法对该数据进行编码以生成监督位;且将生成的监督位存储在该ecc阵列中;当读出数据时:从该数据阵列输出存储的数据;从该ecc阵列输出存储的监督位;通过该ecc解码模块同时接收该数据阵列输出的数据和该ecc阵列输出的监督位来进行数据的检测和纠正;通过该数据选择模块响应于影响数据长度的控制信号生成数据输出模块控制信号;通过该数据输出模块接收经纠正的数据并且响应于该数据输出模块控制信号来控制该数据输出模块输出的数据的长度。

根据一个优选实施方案,所述影响数据长度的控制信号是与x4、x8、x16模式或者x4、x8以及x16模式之一与突发突变模式的组合模式对应的信号。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号有效,则该数据输出模块输出的数据的长度不对应于该ecc算法所需要的数据的长度。

根据一个优选实施方案,在读出数据时,若该数据输出模块控制信号无效,则该数据输出模块输出的数据的长度对应于该ecc算法所需要的数据的长度。

根据本发明所述的存储器和存储器纠错方法至少具有以下优点:适用于任何ecc算法,增加了ecc算法选取的灵活性和高效性;可兼容不同数据长度;不受突发突变模式、x4、x8和x16模式的影响;可以减少功耗;以及不会影响到常规的写入操作和读出操作的功能和时序。

附图说明

本发明的优点和特征通过如下的参照附图描述的实施方案会变得明显,在附图中:

图1示意性示出了存储器的写入过程;

图2示意性示出了存储器的读出过程;

图3示意性示出了根据本发明的具有纠错功能的存储器的第一种写入过程;

图4示意性示出了根据本发明的具有纠错功能的存储器的第二种写入过程;以及

图5示意性示出了根据本发明的具有纠错功能的存储器的读出过程。

具体实施方式

应当理解,此处所描述的具体实施例仅是为了便于更好地理解本发明,而并非限制本发明。

现在将参照图3和图5详细描述根据本发明的第一方面的具有纠错功能的存储器以及该存储器的读写过程。

该存储器总体包括数据阵列1、ecc阵列2、ecc编码模块3、ecc解码模块4、第一数据选择模块5、第二数据选择模块6和数据读出模块7。当写入数据时:该数据阵列1被配置成存储写入的数据a;该第一数据选择模块5被配置成接收该写入的数据a,并且响应于影响数据长度的控制信号(例如,与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号,以及其他未示出的可以影响到数据长度的控制信号)来确定是否还接收来自该数据阵列1的数据b;该ecc编码模块3被配置成接收该第一数据选择模块5输出的数据c,并且根据其内预先设置的ecc算法对该数据c进行编码以生成监督位;且该ecc阵列2被配置成存储生成的监督位。当读出数据时:该数据阵列1被配置成输出存储的数据(例如,n位数据);该ecc阵列2被配置成输出存储的监督位(例如,m位监督位);该ecc解码模块4被配置成同时接收该数据阵列输出的数据和该ecc阵列输出的监督位来进行数据的检测和纠正;该第二数据选择模块被配置成响应于影响数据长度的控制信号(例如,与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号,以及其他未示出的可以影响到数据长度的控制信号)生成数据输出模块控制信号;该数据输出模块7被配置成接收经纠正的数据(例如,n位数据)并且响应于该数据输出模块控制信号来控制该数据输出模块7输出的数据的长度。

更具体而言,在写入数据时,若影响数据长度的控制信号有效(换言之,当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度不等于预先设置的ecc算法的数据长度时),则该第一数据选择模块5还接收来自该数据阵列1的数据b,以将来自该数据阵列1的数据b与写入的数据a组合成符合该ecc编码模块3内预先设置的ecc算法的数据。举例而言,若与该预先设置的ecc算法对应的数据长度为n位,则当写入的数据a为k位数据时(换言之,当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度为k时),该第一数据选择模块5还接收来自该数据阵列的n-k位数据,并且将该k位数据与该n-k位数据组合成符合该ecc编码模块3内预先设置的ecc算法的n位数据c。如图3所示,对于地址1,该第一数据选择模块5接收写入的k1(k1=n/2)位数据且还接收来自该数据阵列的n-k1位数据;对于地址2,该第一数据选择模块5接收写入的k2(k2=3*n/4)位数据且还接收来自该数据阵列的n-k2位数据。

若影响数据长度的控制信号无效(换言之,当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度等于预先设置的ecc算法的数据长度时),则该第一数据选择模块5只接收写入的数据a而不接收来自该数据阵列1的数据b就能够输出符合该ecc编码模块3内预先设置的ecc算法的数据。举例而言,若与该预先设置的ecc算法对应的数据长度为n位,则当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度为n时,该第一数据选择模块5只接收写入的数据a就能够输出符合该ecc编码模块3内预先设置的ecc算法的n位数据c。如图3所示,对于地址0,第一数据选择模块5只接收n位数据a而不接收来自该数据阵列1的数据b。

在读出数据时,m位监督位和n位数据都被同时读出传送到ecc解码模块4来进行数据的检测和纠正。若该数据输出控制信号有效(换言之,当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度不等于预先设置的ecc算法的数据长度时),则该数据输出模块7输出的数据的长度不对应于该ecc算法所需要的数据的长度,如图5所示,对于地址1,该数据输出模块7输出k1位数据;对于地址2,该数据输出模块7输出k2位数据。在读出数据时,若该数据输出模块控制信号无效(换言之,当与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号令数据a的长度等于预先设置的ecc算法的数据长度时),则该数据输出模块7输出的数据的长度对应于该ecc算法所需要的数据的长度,如图5所示,对于地址0,该数据输出模块7输出n位数据。

现在将参照图4和图5详细描述根据本发明的第二方面的具有纠错功能的存储器以及该存储器的读写过程。根据本发明的第二方面的具有纠错功能的存储器与根据本发明的第一方面的具有纠错功能的存储器相比仅写入过程不同。

该存储器总体包括数据阵列1、ecc阵列2、ecc编码模块3、ecc解码模块4、数据选择模块6(其对应于关于本发明的第一方面所述的第二数据选择模块)和数据读出模块7。当写入数据时:该数据阵列1被配置成存储写入的数据a;该ecc编码模块3被配置成接收来自数据阵列的数据(该数据的长度对应于ecc编码模块3中预先存储的ecc算法所需要的数据的长度,例如n位)并且对该数据进行编码以生成监督位;且该ecc阵列2被配置成存储生成的监督位(例如,m位监督位)。当读出数据时:该数据阵列1被配置成输出存储的数据(例如,n位数据);该ecc阵列2被配置成输出存储的监督位(例如,m位监督位);该ecc解码模块4被配置成同时接收该数据阵列1输出的数据和该ecc阵列2输出的监督位来进行数据的检测和纠正;该数据选择模块6被配置成响应于影响数据长度的控制信号(例如,与x4、x8、x16模式或者x4、x8以及x16模式之一与bc模式的组合模式对应的信号,以及其他可以影响数据长度的控制信号)生成数据输出模块控制信号;该数据输出模块7被配置成接收经纠正的数据并且响应于该数据输出模块控制信号来控制该数据输出模块7输出的数据的长度。

更具体而言,在写入数据时,无论写入的数据a是否为n位数据,该ecc编码模块3所需要的n位数据输入都来自该数据阵列1。如图4所示,对于地址0、地址1和地址2,该ecc编码模块3接收n位数据。

由于根据本发明的第二方面的具有纠错功能的存储器的读出过程与根据本发明的第一方面的具有纠错功能的存储器的读出过程相同,因此不再详述根据本发明的第二方面的具有纠错功能的存储器的读出过程。

需要说明的是,上面所提到的地址0、地址1和地址2仅是为了指示不同的地址,不是存储器的真正的地址0、1和2。与n不一致的数据长度也不仅限于k1=n/2和k2=3*n/4两种,任何与n不一致的数据长度均适用。

对本发明的以上描述,并不旨在是穷举性的或限于所公开的确切形式。尽管出于例示目的在本文中描述了本发明的具体实施方案和实施例,但是在不偏离本发明的精神和范围的前提下,还可能有多种等同改型。

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