一种全行编解码SRAM编码器数据读写结构及数据读写方法与流程

文档序号:18831359发布日期:2019-10-09 03:32阅读:651来源:国知局
一种全行编解码SRAM编码器数据读写结构及数据读写方法与流程

本发明属于微电子技术领域,具体涉及一种全行编解码sram编码器数据读写结构及数据读写方法。



背景技术:

在现有sram设计中,一般通过将访问地址进行行译码和列译码找到相应存储空间,然后将存于存储空间的数据读出或写入。为实现片内数据容错设计,一般采用对单地址数据进行edac(错误检测与纠正)编码加固,即对每个地址的n位(8位、16位、32位或更多位)数据配置1组edac码,在存储器进行写入时,对数据进行edac编码后单独存储,在存储器进行读出时,同时读出edac码后译码,并与读出数据比较,从而发现并纠正可能出现的数据中的错误位。

edac编码的基本思想是在被传送或存储的信息中附加一些校验位,在两者之间建立一种校验关系,当这种校验关系因传输错误或其它干扰受到破坏后,可以被发现并予以纠正。这种纠错能力和检错能力是通过增加数据的冗余度来换取的。通过构造适当的生成矩阵和监督矩阵,可以使得当码字中某位发生错误时,会得到唯一的非零校验子s向量,该向量只与码字出错位置的图样有关,而与码字无关,这样就可以通过一些冗余的监督位实现对数据中单个错误的纠正。目前常用的edac编码主要包括hamming码、bch码以及rs码等,检错编码主要包括奇偶校验码、crc码以及校验和等。一般情况下,纠检错能力越强,其需要额外存储的检验元信息就越多,译码过程也会越复杂,最终会给系统带来沉重的存储负担,以及可能会降低系统的整体性能。

另外纠错编码作为一门学科,不同编码有不同纠检特性,不同的编码效率以及实现复杂度,同一种码也有不同构造方式和解码实现方式,因此根据存储器的特性,研究不同工艺条件下存储器的edac技术,选择合适的edac实现方式对于存储器的数据容错加固以及读写速度至关重要。

目前基于edac电路的sram容错设计技术已经成为业内大容量存储器的主流数据容错加固技术。通常大容量存储器的列选电路是8选1及以上,因此一位纠检错方式成为150nm工艺以上32位大容量sram芯片的最优化选择,同时其增加的校检位数据面积占到整体面积的20%。而当工艺进入超深亚微米工艺后,io端口发生多位错误的概率大大增加,一位纠检错方式已经不能满足抗辐射加固性能要求,二位纠检错方式逐渐成为超深亚微米工艺及以下sram抗辐射加固研究的主流趋势,并且面积开销越来越大。

以通常基于差错控制编码中的hamming码来为例说明器件抗存储数据位错的方法。hamming码是只能纠正单个错误的线性分组(n,k)码,当码字发生2个或是更多错误时,则无能为力,而且很有可能会因为发生2个(或更多个)错误的叠加,误认为是另外的一个错误,而产生误码。扩展hamming码是通过再多增加一个校验元,使hamming距离d增加1,即d=4,来实现纠1检2(根据定理2),即发生的所有的两个错误都能检查出来,而不会误码。hamming码的信息元和校验元的个数需要满足:2r≥k+r+1;其中,r是校验元的个数。扩展hamming码的校验元则需要再增加一个,即满足:

2r≥k+r(1)

hamming码译码方法决定了它只能纠正1个错误。但由于其译码简单,所以得到广泛的应用。如前所述,为了要实现32位数据纠1检2的功能,根据(1)式,为了得到扩展hamming码,32位的信息元,需要7位的校验元,即是(39,32)的hamming码。

现有采用edac技术进行容错加固的sram存储器架构,一般针对单地址数据进行edac编码。在该结构中,将每列存储单元的所共有的位线都连接至ymux(多选一选通器)后,每个ymux对应一套读/写电路,而edac则针对每一地址的数据分别进行编码后存储至edac码存储区,如图1所示。其工作原理如图3所示,为实现对存储数据的容错加固,在原有数据存储区的基础上主要增加了edac码存储区、edac编码逻辑、edac译码逻辑、比较器及数据选通逻辑四个模块。若sram数据宽度为32位,若采用edachamming码技术实现纠1检2功能,每个地址需要增加7位存储区作为edac码存储空间。该sram存储器的工作过程如下:

(一)读操作:当对sram存储器进行读操作时,(1)根据读地址选择数据存储区的对应数据和edac码存储区的对应edac码,经列电路ymux选择后通过读写电路输出,(2)读出的edac码译码并于读出数据比较,(3)如果结果正确则将读出数据直接输出到存储器io端口,(4)如果结果错误则将数据纠正后输出至存储器io端口,同时将正确的数据回写至数据存储区。

(二)写操作:当对sram存储器进行写操作时,(1)将要写入的32位数据通过读写电路和ymux选择写入数据存储区的相应地址,(2)同时将32位写数据进行edac编码并将编码写入edac存储区的相应地址。

但是在现有全行编码所需edac码所占用的总存储容量大,同时存储器的面积消耗大。采用edac技术进行容错加固的sram一般需要定时进行内容刷新,即在存储器空闲时将内部数据逐一读出后校验纠正,然后再写入,以防止时间对存储器错误的累积效应,因此需要对存储器内容进行刷新。原有的针对单地址数据编码技术中一般采用单地址数据刷新,效率低。



技术实现要素:

本发明的目的在于提供一种全行编解码sram编码器数据读写结构及数据读写方法,以克服现有技术的不足。

为达到上述目的,本发明采用如下技术方案:

一种全行编解码sram编码器数据读写结构,包括edac模块、寄存器、比较纠错逻辑模块和ymux单元;

edac模块与sram编码器连接;

edac模块用于对sram编码器内存储的数据进行edac编码并存储edac码;

寄存器用于读取sram编码器内的数据及edac模块内对应的edac码读取并存储,

比较纠错逻辑模块用于从寄存器中获取edac码并对edac码进行译码得到译码后的数据,然后将译码后的数据与读取sram编码器内的数据进行错误检测与纠正;并将检测结果通过ymux单元输出或者将纠正后的结果回写至sram编码器;

ymux单元用于地址选择并将数据输出。

进一步的,比较纠错逻辑模块包括纠检错模块和回写电路。

进一步的,ymux单元为多选一选通器。

进一步的,在sram存储器每一列存储单元对应一根位线和一套读出电路和写入电路。

一种全行编解码sram编码器数据读写结构的数据读取方法,包括以下步骤:

步骤1)、根据对读地址的行译码结果,将读地址对应行的sram编码器内的存储数据及edac模块内的edac码数据全部读出;

步骤2)、将读出的edac码数据进行译码,将译码后的数据结果与从sram编码器内的存储数据进行比较,如果sram编码器内的存储数据与译码后的数据结果相对应,则将读取的存储数据送入ymux单元进行读地址选择,最后将所需数据读出,sram编码器内的存储数据与译码后的数据结果不一致,则对错误的存储数据进行纠正,然后将纠正后的存储数据回写至数据存储区中对应的行,同时将纠正后的存储数据送至ymux单元进行读地址选择,完成数据读取。

进一步的,将从sram编码器及edac模块内读取的数据通过寄存器进行暂存。

一种全行编解码sram编码器数据读写结构的数据写入方法,包括以下步骤:在sram存储器进行写操作时,首先将写操作地址对应的sram编码器内的全行数据及edac模块内的edac码读出,并对读取的全行数据进行纠检错,当全行数据与edac码解码后数据对应正确时,则根据写入地址将写入的数据替换所读出的全行数据中相应位得到写入全行数据,并将写入全行数据暂存至寄存器中,然后将写入全行数据进行edac编码得到写入edac码,将写入全行数据及写入edac码写回sram编码器及edac模块中的对应行;

当全行数据与edac码解码后数据对比存在差异时,将读出的全行数据中的错误位纠正,然后再以写入数据替换纠正后的全行数据中写地址所对应的位数据得到写入全行数据,并将写入全行数据暂存至寄存器中,然后将写入全行数据进行edac编码得到写入edac码,将写入全行数据及写入edac码写回sram编码器及edac模块中的对应行;完成sram纠检错的数据写入。

进一步的,将读出的edac码数据进行译码后对读取的全行数据进行纠检错纠正。

与现有技术相比,本发明具有以下有益的技术效果:

本发明一种全行编解码sram编码器数据读写结构及数据读写方法,利用寄存器对sram编码器全行数据和edac模块数据进行暂存,从而将一行中多个地址数据统一进行编码并存储,对于一定容量的存储器,该方法所需要的edac码总存储容量要比原有单地址数据编码少很多,从而减少了edac码存储容量的同时减小了存储器的总容量,使得存储器面积大大减小,本发明通过将sram编码器内部数据逐一读出后校验纠正,然后再写入,以防止时间对存储器错误的累积效应,因此对存储器内容进行刷新时只需对一行数据中的一个地址进行访问,即可实现整行的刷新,因此该方法比原有的逐地址刷新提高了刷新效率,减少了刷新时间。采用edac模块模块进行纠检错,当存储器出现存储数据位错时则自行进行纠检错,无需用户干预,因此在用户使用中节省了在系统级进行数据加固的需求,从而减小了系统设计的复杂度。

附图说明

图1为现有带edac功能的sram存储器架构。

图2为采用全行编码纠检错技术的sram存储器架构。

图3为现有采用单地址纠检错技术的sram存储器工作原理。

图4为采用全行编码纠检错技术的sram存储器工作原理。

图5为采用全行编码纠检错技术的sram存储器读操作流程图。

图6为采用全行编码纠检错技术的sram存储器写操作流程图。

具体实施方式

下面结合附图对本发明做进一步详细描述:

一种全行编解码sram编码器数据读写结构,包括edac模块、寄存器、比较纠错逻辑模块和ymux单元;

edac模块与sram编码器连接;

edac模块用于对sram编码器内存储的数据进行edac编码并存储edac码;

寄存器用于读取sram编码器内的数据及edac模块内对应的edac码读取并存储,

比较纠错逻辑模块用于从寄存器中获取edac码并对edac码进行译码得到译码后的数据,然后将译码后的数据与读取sram编码器内的数据进行错误检测与纠正;并将检测结果通过ymux单元输出或者将纠正后的结果回写至sram编码器;

ymux单元用于地址选择并将数据输出。

比较纠错逻辑模块包括纠检错模块和回写电路;

ymux单元为多选一选通器;

在sram存储器每一列存储单元对应一根位线和一套读出电路和写入电路;

一种全行编解码sram编码器数据读写结构的数据读取方法,包括以下步骤:

步骤1)、根据对读地址的行译码结果,先将读地址对应行的sram编码器内的存储数据及edac模块内的edac码数据全部读出;并将所读取的数据通过寄存器进行暂存;

步骤2)、将读出的edac码数据进行译码,将译码后的数据结果与从sram编码器内的存储数据进行比较,如果sram编码器内的存储数据与译码后的数据结果相对应,则将读取的存储数据送入ymux单元进行读地址选择,最后将所需数据读出,sram编码器内的存储数据与译码后的数据结果不一致,则对错误的存储数据进行纠正,然后将纠正后的存储数据回写至数据存储区中对应的行,同时将纠正后的存储数据送至ymux单元进行读地址选择,最后将所需数据读出。

一种全行编解码sram编码器数据读写结构的数据写入方法,包括以下步骤:在sram存储器进行写操作时,首先将写操作地址对应的sram编码器内的全行数据及edac模块内的edac码读出,并对读取的全行数据进行纠检错,当全行数据与edac码解码后数据对应正确时,则根据写入地址将写入的数据替换所读出的全行数据中相应位得到写入全行数据,并将写入全行数据暂存至寄存器中,然后将写入全行数据进行edac编码得到写入edac码,将写入全行数据及写入edac码写回sram编码器及edac模块中的对应行;

当全行数据与edac码解码后数据对比存在差异时,将读出的全行数据中的错误位纠正,然后再以写入数据替换纠正后的全行数据中写地址所对应的位数据得到写入全行数据,并将写入全行数据暂存至寄存器中,然后将写入全行数据进行edac编码得到写入edac码,将写入全行数据及写入edac码写回sram编码器及edac模块中的对应行;完成sram纠检错的数据写入。

将读出的edac码数据进行译码后对读取的全行数据进行纠检错纠正;

下面结合附图对本发明的结构原理和使用步骤作进一步说明:

实施例

采用全行编解码sram编码器数据读写结构的说明如下:

以数据位宽32位、存储阵列为1024列的sram存储器为例,其对应的全行编解码edac模块阵列为12位,因此,寄存器的存储阵列总列数为1036;其中,每一列存储单元对应一根位线和一套读出电路(sa)和写入电路,如图2所示,工作原理如图4所示。其工作过程如下:

(一)读操作:当对sram存储器进行读操作时,(1)根据对读地址的行译码结果,先一次性将读地址对应行的1024位数据存储区及12位edac码存储区的数据全部读出,并将读出的12位edac码进行译码,(2)将译码后的数据结果与从数据区读出的1024位数据进行比较,如果比较结果正确,则将全部1024位数据送入ymux模块,(3)ymux模块根据读地址选择后,将32位所需数据读出;(4)如果比较结果错误,则纠正错误的1024位数据,(5)然后将全部纠正后的1024位数据回写至数据存储区中对应的行,(6)同时将纠正后的1024位数据送至ymux模块,根据读地址选择后,将32位所需数据送至存储器io读出。如图5所示。

(二)写操作:当对sram存储器进行写操作时,(1)将要写入的32位数据送至io端口,(2)同时将要写入的地址所对应行的数据存储区中1024位数据和edac码存储区中,12位edac码全部读出后暂存至寄存器,并对edac码进行译码,(3)将译码结果与读出的1024位数据进行对比,如果对比结果正确,则根据写入地址,用io端口处写入的数据替换所读出的1024位数据中相应位得到写入1024位数据,并将写入1024位数据暂存至寄存器,(4)将写入1024位数据进行edac编码后得到写入edac码,将写入1024位数据及写入edac码写回sram编码器及edac模块中的对应行;(5)如果对比结果错误(即存在差异时),则先纠正1024位错误数据,(6)再用io端口处写入的写数据替换所读出的1024位数据中的相应位得到写入1024位数据,并将写入1024位数据暂存至寄存器,(7)对写入1024位数据进行edac编码后得到写入edac码,将写入1024位数据及写入edac码写回sram编码器及edac模块中的对应行。如图6所示。

由于edac模块编解码中,所要编解码的数据位宽越宽,所需的纠检错码位效率越高,也即单位数据位所需要的编码位数越少。例如,对于每行1024个数据,若存储器数据位宽为32位,则每行需要edac码总数为7*(1024/32)=224,若采用全行编码,则每行需要edac码位数为12,相应的面积也就减小18.67倍。若对于每行2048个数据,若存储器数据位宽为32位,则每行需要edac码总数为7*(2048/32)=448,若采用全行编码,则每行需要edac码位数为13,相应的面积也就减小34.46倍。对纠二检四类型的edac码,本发明的面积优势更明显,对比结果如表1所示。

表1采用全行编解码与采用单地址编解码效果对比

本发明具有edac容错结构的sram存储器采用全行刷新的方式。进行全行刷新相当于对多个地址同时进行数据刷新,比传统edac容错sram存储器所采用的逐地址刷新提高了刷新效率,减少了总的刷新时间。例如,对于每行1024位数据,若单地址数据为32位,则每行包括1024/32=32个单地址数据,因此采用全行编码的sram存储器刷新时间为采用单地址编码sram存储器刷新时间的1/32。

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