首页 专利交易 科技果 科技人才 科技服务 商标交易 会员权益 IP管家助手 需求市场 关于龙图腾
 /  免费注册
到顶部 到底部
清空 搜索

用于DRAM的ECC编码方法以及DRAM 

买专利卖专利找龙图腾,真高效! 查专利查商标用IPTOP,全免费!专利年费监控用IP管家,真方便!

申请/专利权人:西安紫光国芯半导体股份有限公司

摘要:本发明涉及一种对DRAM进行ECC编码的方法和一种动态随机存取存储器DRAM。所述方法包括在对DRAM进行刷新的同时,根据标志位是否为初始值来判定是否对数据进行编码。所述ECC编码模块仅在所述标志位设定和检测模块生成一个使能信号的情况下对数据进行编码。所述方法的优点在于可以保证用于ECC编码的有效数据的长度符合ECC编码的要求。

主权项:1.一种对DRAM进行ECC编码的方法,其中,该DRAM包括存储阵列,所述方法包括:在对DRAM进行刷新的同时,标志位设定和检测模块检测标志位阵列中的标志位是否为初始值,其中所述标志位阵列位于所述存储阵列中,所述标志位设定和检测模块位于所述DRAM中,并且其中所述标志位与所述存储阵列中的数据阵列的每一数据长度为N的数据一一对应;若所述标志位设定和检测模块检测到标志位为初始值,指示与该标志位对应的N位数据未被ECC编码,则所述标志位设定和检测模块生成一个使能信号,该使能信号使得所述DRAM中的ECC编码模块对这N位数据进行ECC编码,产生相应的监督位,并且所述标志位设定和检测模块将该标志位设定为非初始值;以及若所述标志位设定和检测模块检测到标志位为非初始值,指示与该标志位对应的N位数据已被ECC编码,则所述标志位设定和检测模块不执行操作;其中所述ECC编码模块仅在所述标志位设定和检测模块生成一个使能信号的情况下对数据进行编码;其中在刷新时,DRAM的所有字线依次被激活,同一字线下的数据同时被刷新,但每次刷新时每根字线下仅一部分数据被ECC编码。

全文数据:用于DRAM的ECC编码方法以及DRAM技术领域[0001]本发明涉及存储器领域,具体地涉及DRAM,更具体地涉及一种用于DRAM的ECC编码方法以及一种DRAM。背景技术[0002]DRAMDynamicRandomAccessMemory,即动态随机存取存储器,其是一种易失性存储器。[0003]对于DRAM来说,在数据存储的过程中数据常常会出现错误,因此需要错误检测和纠正技术来保证数据存储的正确性。ECCErrorCorrectionCode纠错码利用在一定长度数据位的基础上增加监督位来检测和纠正出错的数据。包含ECC功能的DRAM的常规读写过程如图1和图2所不。[0004]图1示意性地描述了DRAM的数据写入过程。其中数据阵列用来存储数据,ECC阵列用来存储ECC位,即监督位。当N位数据从外部源写入存储器时,存储器会通过ECC编码电路用此N位数据产生M位监督位,N位数据和M位监督位会被暂时数据锁存,然后通过写驱动一起被写入相应的存储阵列,即N位数据存储于数据阵列中,M位监督位存储于ECC阵列中。其中数据长度N大于0,并小于等于存储器进行一次读写操作的数据长度。监督位长度M大于0,其值由所选取的ECC算法所决定。应注意,数据阵列、ECC阵列以及ECC编码电路都位于存储器内部,存储器内还包括在此未示出的其他部件。[0005]图2示意性地描述了DRAM的数据读取过程。N位数据和M位监督位被从各自的存储阵列中读取,经第二级灵敏放大器放大后被暂时数据锁存,然后送到ECC纠错模块,ECC纠错模块可以对错误进行检测和纠正,并输出纠正后的N位数据。[0006]从图1的数据写入过程可知道,在ECC编码模块产生M位监督位时,需要数据长度为N的数据位,这是由所选取的ECC算法决定的。但对于存储器来说,输入进的N位数据并不是都能用来进行ECC编码。也就是说,输入数据中对编码有效的数据的数据长度并不是一成不变的,其中对编码有效的数据指的是可以被用于产生监督位的数据。例如,DRAM的规范里就规定当存在数据屏蔽data-mask或者突发突变模式burstchopmode时,N位输入数据中有若干位不能用于ECC编码,其对编码有效的数据的数据长度就会改变,使得该数据长度小于N。又例如,对于不同数据长度的结构,例如X4,X8,X16等模式,其对编码有效的数据的数据长度也会随着外部的控制而变化,使得对编码有效的数据的数据长度不等于N。但是一旦选定ECC算法,其对应的ECC编码模块所需要的数据长度就是一定的,因此在对编码有效的数据的数据长度变化的情况下则不能顺利产生ECC位。[0007]现有技术中的一种解决方法是在这些可能遇到的所有限制条件里面找到一个最小数据长度,并根据这个最小数据长度选择ECC的算法,这样就能支持所有模式。如果这个最小数据长度是8,即使是对于最高效的汉明码来说,最少也需要4位的监督位,这会增加至少50%的存储面积去存储ECC的监督位,使得存储器的成本大大增加,并降低了ECC算法选取的灵活性和高效性。[0008]如果为了不增加写操作的功耗,或者不影响到写操作的时序,或者因任何原因使得在写操作的时候不进行ECC编码,用传统的方法就不能实现ECC功能。[0009]因此,需要一种新的ECC编码方法来解决上述问题。发明内容[0010]根据本发明的第一方面,提供了一种对DRAM进行ECC编码的方法,其中该DRAM包括存储阵列,所述方法包括:[0011]在对DRAM进行刷新的同时,标志位设定和检测模块检测标志位阵列中的标志位是否为初始值,其中所述标志位阵列位于所述存储阵列中,所述标志位设定和检测模块位于所述DRAM中,并且其中所述标志位与所述存储阵列中的数据阵列的每一数据长度为N的数据--对应;[0012]若所述标志位设定和检测模块检测到标志位为初始值,指示与该标志位对应的N位数据未被ECC编码,则所述标志位设定和检测模块生成一个使能信号,该使能信号使得所述DRAM中的ECC编码模块对这N位数据进行ECC编码,产生相应的监督位,并且所述标志位设定和检测模块将该标志位设定为非初始值;以及[0013]若所述标志位设定和检测模块检测到标志位为非初始值,指示与该标志位对应的N位数据己被ECC编码,则所述标志位设定和检测模块不执行操作;[0014]其中所述ECC编码模块仅在所述标志位设定和检测模块生成一个使能信号的情况下对数据进行编码。[0015]上述方法的优点在于可以保证用于ECC编码的有效数据的长度符合ECC编码的要求,这是因为刷新时字线被激活,此时存储单元的数据会被读出并放大,每次选取长度为N的数据,这些长度为N的数据可被用于ECC编码,因此确保了有效数据长度为N的数据被用于ECC编码,从而确保了ECC编码的正确性。[0016]根据本发明的方法的一个优选实施方案,在刷新时,DRAM的所有字线依次被激活,同一字线下的数据同时被刷新,但每次刷新时每根字线下仅一部分数据被ECC编码。[0017]根据本发明的方法的一个优选实施方案,在紧接着DRAM上电后的刷新中,每次刷新时每根字线中进行ECC编码的列地址数目是相同的。[0018]根据本发明的方法的一个优选实施方案,在DRAM上电后对数据阵列中的数据都进行了一次ECC编码之后,每次刷新时每根字线中进行ECC编码的列地址数目是不同的。[0019]根据本发明的方法的一个优选实施方案,在DRAM上电后的首次刷新之前,所述标志位阵列中的标志位都被设定为初始值。[0020]根据本发明的方法的一个优选实施方案,当外部数据源对DRAM执行数据写入时,所述标志位设定和检测模块使得与写入的数据相对应的标志位变为初始值。[0021]根据本发明的方法的一个优选实施方案,所述刷新包括自动刷新和自刷新。[0022]根据本发明的方法的一个优选实施方案,所述初始值为〇,所述非初始值为1。[0023]根据本发明的方法的一个优选实施方案,所述初始值为1,所述非初始值为〇。[0024]根据本发明的方法的一个优选实施方案,所述标志位设定和检测模块检测所述标志位是否为初始值是对每根字线按照列地址依次进行的。[0025]根据本发明的方法的一个优选实施方案,所述方法还包括对数据单元中的数据进行纠错的步骤,包括:[0026]所述标志位设定和检测模块检测与数据对应的标志位的状态,并生成解码使能信号,[0027]若标志位的值为初始值,则该解码使能信号关闭ECC纠错功能,[0028]若标志位的值为非初始值,则该解码使能信号开启ECC纠错功能。[0029]根据本发明的第二方面,提供了一种动态随机存取存储器DRAM,该DRAM包括存储阵列,其中所述dram还包括:[0030]标志位阵列;以及[0031]标志位设定和检测模块,在对DRAM进行刷新的同时,该标志位设定和检测模块检测标志位阵列中的标志位是否为初始值,其中所述标志位阵列位于所述存储阵列中,所述标志位设定和检测模块位于所述DRAM中,并且其中所述标志位与所述存储阵列中的数据阵列的每一数据长度为N的数据一一对应;[0032]若所述标志位设定和检测模块检测到标志位为初始值,指示与该标志位对应的N位数据未被ECC编码,则所述标志位设定和检测模块生成一个使能信号,该使能信号使得所述DRAM中的ECC编码模块对这N位数据进行ECC编码,产生相应的监督位,并且所述标志位设定和检测模块将该标志位设定为非初始值;以及[0033]若所述标志位设定和检测模块检测到标志位为非初始值,指示与该标志位对应的N位数据己被ECC编码,则所述标志位设定和检测模块不执行操作;[0034]其中所述ECC编码模块仅在所述标志位设定和检测模块生成一个使能信号的情况下对数据进行编码。[0035]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,在刷新时,DRAM的所有字线依次被激活,同一字线下的数据同时被刷新,但每次刷新时每根字线下仅一部分数据被ECC编码。[0036]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,在紧接着DRAM上电后的刷新中,每次刷新时每根字线中进行ECC编码的列地址数目是相同的。[0037]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,在DRAM上电后对数据阵列中的数据都进行了一次ECC编码之后,每次刷新时每根字线中进行ECC编码的列地址数目是不同的。[0038]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,在DRAM上电后的首次刷新之前,所述标志位阵列中的标志位都被设定为初始值。[0039]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,当外部数据源对DRAM执行数据写入时,所述标志位设定和检测模块使得与写入的数据相对应的标志位变为初始值。[0040]根据本发明的动态随机存取存储器DRAM的一个优选实施方•案,所述刷,新包^舌自动刷新和自刷新。[0041]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,所述初始值为0,所述非初始值为1。[0042]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,所述初始值为1,所述非初始值为〇。[0043]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,所述标志位设定和检测模块检测所述标志位是否为初始值是对每根字线按照列地址依次进行的。[0044]根据本发明的动态随机存取存储器DRAM的一个优选实施方案,当所述DRAM中进行ECC纠错时,所述标志位设定和检测模块检测与数据对应的标志位的状态,并生成解码使能信号,若标志位的值为初始值,则该解码使能信号关闭ECC纠错功能;若标志位的值为非初始值,则该解码使能信号开启ECC纠错功能。附图说明[0045]图1示意性地描述了DRAM的数据写入过程[0046]图2示意性地描述了DRAM的数据读取过程。[0047]图3示出了带有标志位阵列以及标志位设定和检测模块的存储器。[0048]图4a示出了在带有标志位阵列以及标志位设定和检测模块的存储器中,在紧接着上电之后进行的刷新时ECC编码操作的流程图。[0049]图4b示出了在DRAM中的所有数据于上电后都进行了ECC编码之后进行刷新时的ECC编码操作的流程图。[0050]图5示出了在带有标志位阵列以及标志位设定和检测模块的存储器中进行纠错的过程。具体实施方式[0051]下面结合附图进一步描述本发明的各个实施例。在所有附图中,相同或相似的标号表示相同或相似的元件或具有相同或相似功能的元件。应理解,下面结合附图描述的实施例仅是示例性的,旨在用于解释本发明,而不意在限制本发明。[0052]对于DRAM来说,由于存储单元(多个存储单元构成了包括数据阵列和ECC阵列的存储阵列)存储的信息可能会丢失,因此在一定的时间内需要对存储单元的存储信息进行刷新refresh。当执行刷新操作时,各个字线WLwordline被依次激活,同一根字线下的所有存储单元的存储内容会被同时读出并放大,然后再写回去,从而防止信息丢失。应理解,这里的读出和写回指的是在刷新时存储器内自身进行的读和写,而图1和图2中所描述的分别是外部源将数据写入存储器以及从存储器中将数据读取到外部。具体地,在刷新操作中,字线下的每个存储单元的数据会被读出并经第一级灵敏放大器进行放大和锁存,然后数据再写回到存储单元。这里所描述的第一级灵敏放大器是在各存储阵列内部,用于刷新操作,其在DRAM开启时还可以用于锁存数据。而上文所描述的第二级灵敏放大器是在存储阵列外部,但位于DRAM内。[0053]本发明的发明人创新性地想到利用刷新时数据会被读出来解决背景技术中所提到的问题。[0054]本发明的思想是利用刷新过程中数据需要被读出并写回来进行ECC编码,这样的操作的优点在于可以保证用于ECC编码的有效数据的长度符合ECC编码的要求,这是因为刷新时字线被激活,此时存储单元的数据会被读出并放大,每次选取长度为N的数据,这些长度为N的数据可被用于ECC编码,因此确保了有效数据长度为N的数据被用于ECC编码,从而确保了ECC编码的正确性。[0055]DRAM的刷新操作包括自动刷新操作(automaticrefreshoperation、自刷新selfrefreshoperation等等。这些不同的刷新只是在控制上稍有不同而已。本发明适用于以上列出以及其他未列出的刷新操作。[0056]根据本发明的一个优选实施方案,在存储器设置有标志位阵列以及标志位设定和检测模块,其中标志位阵列位于存储器的存储阵列中。下面将参照图3描述标志位阵列以及标志位设定和检测模块的工作原理。[0057]图3示出了带有标志位阵列以及标志位设定和检测模块的DRAM。如图3中所示出的,相对于图1和图2所示的DRAM,引入了标志位阵列以及标志位设定和检测模块。标志位阵列中存储有标志位,针对数据阵列的每一数据长度为N的数据,标志位阵列中有与之对应的一个标志位。数据长度NS卩ECC算法所设定的需要的数据长度。[0058]标志位用来标志与之相对应的数据是否进行过ECC编码。在刷新时,如果标志位指示进行过ECC编码,则就不需要对相应的数据进行ECC编码操作;如果标志位指示没有进行过ECC编码,则ECC编码器对与之对应的N位数据进行ECC编码操作,然后把生成的ECC监督位存入ECC阵列。标志位会有一个初始值,该初始值表示与之相对应的数据没有进行过ECC编码操作。当与之相对应的数据进行过ECC编码操作后,标志位设定和检测模块会使得标志位的值相应地改变成非初始值。而当外部数据写入存储阵列从而导致数据有任何变化的时候,意味着需要进行新的ECC编码计算,此时相应的标志位会被重置到初始值。[0059]图3中示出了一根字线,但应理解,这仅是示意性的,存储器中存在若干根字线。以一根字线为例,在刷新时,该字线下的所有存储单元的数据被读出,并经由第一级灵敏放大器未示出)被放大,然后被锁存在数据锁存器中。当标志位指示与之对应的数据尚未被ECC编码时,锁存在第一级灵敏放大器中的数据会经第二级灵敏放大器以及数据锁存器被送至ECC编码器,标志位设定和检测模块使能ECC编码器,从而ECC编码器产生相应的监督位,并将监督位送至ECC阵列进行存储。[0060]如上文所述,当相应的数据进行过ECC编码操作后,标志位设定和检测模块会使得对应的标志位的值改变。当外部数据写入存储阵列从而导致数据有任何变化的时候,意味着需要进行新的ECC编码计算,相应的标志位会被重置到初始值。标志位的重置由标志位设定和检测模块进行操作。标志位设定和检测模块与第二级灵敏放大器写驱动以及数据锁存器之间的交互类似于图1和图2中所描述的数据写入和数据读取,在此不再赘述。[0061]下面参照图4a-4b和图5具体描述本发明的实施方案。[0062]图4a示出了在带有标志位阵列以及标志位设定和检测模块的存储器中,在紧接着上电之后进行的刷新时ECC编码操作的流程图。[0063]由于DRAM刚上电,因此其中的数据都是新写入的。首先,标志位在上电后被初始化到一定的值,例如初始值为‘0’,表示与之对应的数据尚未被ECC编码,此时所有的标志位都为初始值。但应理解,初始值为“0”只是示意性的,本发明的标志位的初始值不限于为‘0’。上电指的是启动DRAM的过程。一旦DRAM掉电,则再次上电后需要对DRAM进行重写。[0064]当执行刷新操作的时候,L根字线被依次激活,同一字线下的存储阵列的数据同时被刷新。应理解,由于每次刷新的时间有限,因此在一次刷新时并不是每根字线下的所有数据都能够被进行ECC编码。为了将字线下的所有数据都至少进行ECC编码一次,需要执行多次刷新。例如,在第一次刷新时各个字线的第1-8个列地址的数据被进行ECC编码,在第二次刷新时各个字线的第9-16个列地址的数据被进行ECC编码,依次类推。应理解,对于刷新操作而言,每刷新一根字线,该字线下的各存储单元中的数据同时被刷新。刷新一根字线需要一定的时间T,当时间T结束后,可进行下一字线的刷新,依次类推,即各个字线依次被刷新。这里所说的第一次刷新指的是所有字线都被刷新一次,第二次刷新指的是所有字线在第一次刷新之后紧接着再次被刷新。每次刷新时进行ECC编码的列地址的数目m并非一定是此处所列举的8个,其他数目也是可行的。[0065]各字线下的存储阵列被刷新,即数据被读出并被放大,然后锁存在第一级灵敏放大器中。应理解,虽然同一字线下的数据是同时被刷新,但是对于本发明来说,标志位设定和检测模块判断是否需要进行ECC编码是针对各个字线下的列地址依次进行的,即依次对每N位数据进行判断。[0066]当判断到字线k即行地址k的列地址i时,标志位设定和检测模块检测到此地址对应的标志位的值为初始值,例如为‘0’,表示此列地址i中所存储的N位数据尚未被ECC编码,此时,N位数据从第一级灵敏放大器被送至第二级灵敏放大器,然后经数据锁存器被送至ECC编码器,编码使能信号使得这些数据通过ECC编码器产生M位ECC监督位,这些监督位被写入到ECC阵列。与此同时,针对地址i的标志位的值被改写,例如被从‘〇’改写到‘1’。[0067]如图4a中所示,刷新从第一根字线开始,依次进行到第L根字线。在第一次刷新时,各个字线的列地址i=0到i=m-l的数据被进行ECC编码,在第二次刷新时各个字线的列地址i=m到i二2m-l的数据被进行ECC编码,依次类推,直至将所有列地址下的数据都进行了ECC编码。[0068]在DRAM存储器上电后的首次刷新之前,标志位阵列中的标志位都为初始值,表明此时字线下的所有地址的数据都未被ECC编码。而在首次上电后对DRAM中的所有数据都进行了ECC编码之后,各标志位的值都为非初始值,例如“1”。但是由于常常会将新的数据写入DRAM,此时,DRAM中存储阵列的数据变化会使得相应的标志位要被重新重置到初始值,例如“0,,。[0069]图4b示出了在DRAM中的所有数据于上电后都进行了ECC编码之后进行刷新时的ECC编码操作的流程图。当刷新次数r=1时,首先对第一根字线k=1进行刷新,此时列地址i的初始值为0。标志位设定和检测模块检测与地址i对应的标志位的值是否为初始值。若为初始值,则对相应的数据进行ECC编码,并将标志位改写为非初始值。若为非初始值,则判断本字线刷新所剩余的时间是否还能进行下一个列地址的判断和编码,即当刷新一根字线的时间T结束之前是否还能进行下一个列地址的判断和编码。若可进行,则标志位设定和检测模块检测与地址i+1对应的标志位的值是否为初始值,否则本字线刷新结束,直到刷新完第L根字线。然后进行下一次第r=r+l次刷新。应注意,由于此时每根字线下并非所有列地址都需要进行ECC编码,而每根字线进行刷新的时间是相同的,因此对于每次刷新,每根字线在刷新时进行ECC编码的列地址个数并不相同。对于第r=r+l次刷新,标志位设定和检测模块开始检测的每根字线的列地址不相同,i的初值与第r-1次刷新结束时该字线的i的值相关,即如图所示的i的初值为第r-1次刷新结束时i的值加1。[0070]应理解,对于各个字线来说,也可以与图4b所示的不同,即,对于每次刷新,每根字线在刷新时进行ECC编码的列地址个数相同,这样的优点是对编码的控制变得简单。[0071]图5示出了在带有标志位阵列以及标志位设定和检测模块的存储器中进行纠错的过程。[0072]如图5所示,当进行纠错时,首先,从存储阵列读取N位数据和M位监督位,并且标志位设定和模块检测出与该N位数据对应的标志位的状态。[0073]如果标志位的值为初始状态,例如‘〇’,则解码使能信号将关闭ECC纠错功能,此时意味着ECC纠错功能不能使用。[0074]如果标志位的值不是初始状态,例如,,则解码使能信号将开启ECC纠错功能,ECC纠错功能正常,能对数据错误进行检测和纠正。[0075]应理解,本文中的实施方案和实施例仅出于示例目的,在不脱离权利要求书所限定的范围的前提下,本领域技术人员可以据此做出多种改型和变体。

权利要求:1.一种对DRAM进行ECC编码的方法,其中,该DRAM包括存储阵列,所述方法包括:在对DRAM进行刷新的同时,标志位设定和检测模块检测标志位阵列中的标志位是否为初始值,其中所述标志位阵列位于所述存储阵列中,所述标志位设定和检测模块位于所述DRAM中,并且其中所述标志位与所述存储阵列中的数据阵列的每一数据长度为N的数据一一对应;若所述标志位设定和检测模块检测到标志位为初始值,指示与该标志位对应的N位数据未被ECC编码,则所述标志位设定和检测模块生成一个使能信号,该使能信号使得所述DRAM中的ECC编码模块对这N位数据进行ECC编码,产生相应的监督位,并且所述标志位设定和检测模块将该标志位设定为非初始值;以及若所述标志位设定和检测模块检测到标志位为非初始值,指示与该标志位对应的N位数据己被ECC编码,则所述标志位设定和检测模块不执行操作;其中所述ECC编码模块仅在所述标志位设定和检测模块生成一个使能信号的情况下对数据进行编码。2.根据权利要求1所述的方法,其中,在刷新时,DRAM的所有字线依次被激活,同一字线下的数据同时被刷新,但每次刷新时每根字线下仅一部分数据被ECC编码。3.根据权利要求2所述的方法,其中,在紧接着DRAM上电后的刷新中,每次刷新时每根字线中进行ECC编码的列地址数目是相同的。4.根据权利要求2所述的方法,其中,在DRAM上电后对数据阵列中的数据都进行了一次ECC编码之后,每次刷新时每根字线中进行ECC编码的列地址数目是不同的。5.根据权利要求1所述的方法,其中,在DRAM上电后的首次刷新之前,所述标志位阵列中的标志位都被设定为初始值。6.根据权利要求1所述的方法,其中,当外部数据源对DRAM执行数据写入时,所述标志位设定和检测模块使得与写入的数据相对应的标志位变为初始值。7.根据权利要求1所述的方法,其中所述刷新包括自动刷新和自刷新。8.根据权利要求1或2所述的方法,其中所述初始值为〇,所述非初始值为1。9.根据权利要求1或2所述的方法,其中所述初始值为1,所述非初始值为〇。10.根据权利要求1或2所述的方法,其中所述标志位设定和检测模块检测所述标志位是否为初始值是对每根字线按照列地址依次进行的。

百度查询: 西安紫光国芯半导体股份有限公司 用于DRAM的ECC编码方法以及DRAM

免责声明
1、本报告根据公开、合法渠道获得相关数据和信息,力求客观、公正,但并不保证数据的最终完整性和准确性。
2、报告中的分析和结论仅反映本公司于发布本报告当日的职业理解,仅供参考使用,不能作为本公司承担任何法律责任的依据或者凭证。