一种用于dram缓存的纠错编码方法

文档序号:6773349阅读:275来源:国知局
专利名称:一种用于dram缓存的纠错编码方法
技术领域
本发明嵌入式硬件设计领域、存储节能设计领域,特别涉及一种用于DRAM缓存的 纠错编码方法。
背景技术
目前,先进的技术使得大的嵌入式DRAM缓存集成在片上成为可能,比传统的SRAM 更密集,但是必须及时刷新电路以保证数据完整,且DRAM易受设备材料的影响,对刷新周 期起决定性作用,刷新所需要的功耗点整个系统能耗的绝大部分,所以大的DRAM集成带来 了刷新功耗增加的问题。嵌入式DRAM缓存集成度高,需要频繁地进行刷新,否则由于丢失电等情况极容易 导致一些存储单元上的信息丢失,使得数据不可用,而高频率的刷新会大大增加功耗,这就 违反了绿色计算,节能的设计思想。为了达到节能,处理器拥有一些空闲状态支持低功耗模式,因为处理器大部分时 间处于空闲状态,所以在空闲状态减少功耗很重要,一种常用的方法是为大的内存块使用 功耗阀值。但是随着缓存密度增加,这种方法的性能和功耗代价也增加,因此不适用于高度 密集的DRAM。嵌入式系统中的DRAM刷新机制设计通常是依据最差情况下的刷新周期,也是存 储单元保留数据的最短时间。随着DRAM的容量增加,闲置状态时的功耗,刷新所需要的功 耗也随之增加。先前也有人提出一些硬件机制,以检测不同刷新频率时和存储单元的数据 保留时间。其中一种软件方法是,允许DRAM中数据保留时间长的页面分配在保留时间较短 的页面分配成完成,然后选择一个刷新周期,这个周期是根据一些常用的页确定,相对于根 据整个DRAM来确定刷新周期可减少很多操作,也能减少一定的功耗。但是这个方法需要额 外的存储空间来追踪各页的数据保留时间以及要依赖于内存的测试才能标识那些不重要 的比特存储单元。另外一种基于测试的方法是固定比特位算法,解决了刷新过程中的高错 误率的问题。由于基于测试的方法随着内存及缓存容量增加,其实现难度也会增加,代价也 很大。智能刷新技术通过给每一行增加计时器在刷新时略过最近访问过的行,这样就能 少刷新一些存储单元,达到节能的目的。但是智能刷新方法在空闲状态下很低效,因为空闲 状态下不会有缓存行被访问,因此就达不到减少功耗的目的。另一种提高刷新周期的方法 是使用纠错码技术动态地识别并纠正出错的比特位。这种方法依据最易出错的比特位来设 置刷新时间,使用纠错技术弥补一些错误数据,强大的纠错技术能纠正多比特位,意味着可 以提高刷新时间,从而减少功耗。

发明内容
为了提高刷新周期,减少刷新频率,最终减少功耗,本发明提供了一种用于DRAM 缓存的纠错编码方法。
本发明解决技术问题所采用的技术方案是一种用于DRAM缓存的纠错编码方法,包括如下步骤1)提高DRAM缓存的刷新周期,降低刷新频率;2)对缓存中的数据进行编码和解码,包括如下步骤a)编码,对于缓存中数据利用BCH码进行编码,输入的数据d为K比特,输入数据 d与矩阵G相乘得到一个数据编码信息u,从而将数据保存在编码中,并增加了 r位检查位;b)解码,通过编码的症状S来判断错误类别,根据错误类别使用纠错方法如果S为0,则数据没有错误,如果S中的哪位为非零则该位为错误;如果只有一位错误,则用单比特位纠错方法,如果错误位数为两个以上,则用多比 特位纠错方法;其中:S= v*HT = (u+e)*HT = (d*G+e)*HT = e*HT,ν = u+e,G*HT = 0,e是指错误信息位数,ν表示带有错误e的编码信息。所述DRAM缓存的刷新周期为150 μ s 500 μ S。所述错误位数为两个以上,纠错过程如下先寻找S中的错误位数,然后确定错误 位置,再将该位置的错误进行改正;假设第i 位为 1,& =£7.il:l -^aj2*1 +. + σ· ,σ (χ) = l+σ lX+. . . + σ ^t = (1- α J1x) (1-α J2x)... (1- α Jtx),式中j表示错误检查位,t表示错误检查位数,求解出这个方程的根X,就得到错误 位的位置,将相应位的错位进行改正。所述H的行数为t*m+l,其中t表示能纠正的最大错误数,m则表示数据ν的长度。所述多比特位纠错方法为5EC6ED。本发明具有的有益效果是首先,减少存储单元刷新次数,为系统节省很多电能, 达到绿色计算,保护环境的目的;其次,虽然刷新周期长,使得存储单元中的信息易丢失,但 是强大的多比特纠错编码保证了数据的正确性;再次,虽然多比特纠错功能强,但相对于传 统的纠错编码,它所花费的低价很低,占的额外空间小,延迟小,能耗也低。最后本发明可实 施性强,符合当前处理器设计的要求,能迅速应用到各种处理器上,具有广泛的商业用途。


图1是本发明一种实施例的流程图。具体实施方法以下结合附图对本发明提供的用于DRAM缓存的纠错编码方法作进一步详细的描 述图1是本发明一种实施例的流程图,该方法包括如下步骤(1)提高刷新周期,降低刷新频率嵌入式硬件中的DRAM分布比较密集,比特位数据出错的可能性严重依赖于设备 材料,整个系统的功耗中,DRAM和缓存的刷新所需要的能耗占很大一部分,较高的刷新频率 会大大增加功耗。为了减少能耗,处理器设计时考虑缓存刷新周期的设置,过于频繁会增 加功耗,而周期太长又容易使数据出错。通常都要根据硬件材料,选择一个最佳刷新周期,
4使得出错存储单元数尽量少,这样纠错也容易实现。缓存的刷新周期一般为30us,一个单 一错误纠正双错检测(SECDED)可以使刷新周期为150us,本发明中提出的错误纠正编码 (Hi-ECC)可以使刷新周期设置为440us。刷新周期短,即电路刷新频繁,则功耗比较大,提 高刷新周期能大大减少功耗,但是会提高缓存数据出错的概率,错误位检测和纠正的能力 也是有限的,当缓存数据位出错概率较大时(同时多位出错),可能就无法纠正数据位了。(2)对缓存中的数据进行编码和解码在刷新这前,一些电流会流失,可能会有一些数据信息丢失,所以需要进行纠错, 其中①编码时,实现步骤I.输入的数据d为K比特,用一个预先定义好的矩阵G,输入数据d与矩阵G相乘 得到一个数据编码信息u,(u = d*G),这样原始数据就被保存在编码中了,并增加了 r位检 查位;②解码,实现步骤解码是和编码对应的,当CPU要提出缓存中的数据时,就会对数据解码以检查是 否有错误位。解码逻辑单元检测并修复存储在编码U中的任意错误,恢复到原始的数据,这个 解码单元可分为三个部分;I.错误查找,一个带有错误e的编码信息ν (v = u+e),解码单元先将ν与一个预 先定义好的矩阵H的转置相乘得到编码的症状S (S = ν*ΗΤ (转置));这里的e是指查错误 信息位数,也就是编码后增加的r位查错位,矩阵G与H的转置相乘的值为0。H的行数为 t*m+l,其中t表示能纠正的最大错误数,在5EC6ED中t为5,而m则表示数据ν的长度,S = v*HT = (u+e)*HT = (d*G+e)*HT = e*HT因为G*HT = 0,这里的d就是编码时的数据,e就是编码后增加的r位查错位。得 到的S就是一串01的数据,如果有为1的,则表示该位数据有误,也就是数据u中的第该位 有误,改正过来就行,要么0,要么1,错误太多5EC6ED也无法处理。在矩阵H中的第一列全 为1,第一行也全为1,其他元素为a的i次方,i为(2*r-l)*(c-1),r为行号,从0开始,c 为列号,从1开始,而a是由一个多项式决定。II.错误归类,如果S为0,则数据没有错误,否则会根据S中的哪位为非零来找到 指定位的错误。III.错误纠正,根据S指定的错误位进行纠正即可;如果只有1位错误,那么只用 单比特位纠错方法就行,因为实现简单,错误位数较多时,就要用多比特纠错方案,时间复 杂度高。假设s中的第i位为1,根据前面矩阵相乘S=^Wi /·/: 1 U uJ",j表
示错误检查位,t表示错误检查位数,这里只有6位,首先就是要判定出错位,S的值只能检 查错误位数,但不能确定错误在哪里。接下来就是要找出错误位置,然后改正数据。给出一 个多项式 σ (χ) = 1+ σ lX+. .. + OtXt = (1-α J1x) (1-α J2x)... (1-α Jtx),求解出这个方程 的根X,就得到错误位的位置,所得到的解Χ使得方程等式的值为0,数据纠正很简单,数据 无非就是0和1,改成相反的就行了。本发明采用多比特位纠错,能够对多位进行查错和修正,但是所需的额外代价却 相当于单一比特位纠错编码。本发明提出了提高缓存的刷新周期,然后应用现有的编码方式组合在一起。原来的缓存刷新周期短,所以数据位出错的概率较低,利用单一比特位纠错 双比特位查错(SECDED)方法就能应付。在出错概率较大的数据位中,需要用多比特纠错查 错机制,5位纠错6位查错(5EC6ED)就是一种,这种方法代价较高,所需要的额外信息多, 如前面的在编码阶段的增加的检查位数r比较大,另一方面是它的编码和解码过程复杂, 所需要的时间也较多,严重影响系统性。而本发明侧重点在于错误的分类,如果数据没错误 或者只有1位错误,那么就用SECDED就够了,它的速度相对快一些,而当错误位数较多时, 就要用5EC6ED,这里用的是5EC6ED BCH码,多比特出错的概率通常很低,如果错误位数超 过5位,那也没法纠正了。多比特同时出错的可能性很小,所以大部分时候仍旧是对一个错 误单元进行纠正,主要特点在于先查错,然后错误分类,再根据错误类别采用相应的纠正技 术,其中部分都是一个或零个比特位出错。单一比特位纠错双比特位查错的原理类似,它的 编码和解码矩阵相对简单,所以复杂度不高。根据以上分析,本发明的有如下效果1)与减小刷新频率相结合嵌入式硬件中的DRAM分布比较密集,比特位数据出错的可能性严重依赖于设备 材料,整个系统的功耗中,DRAM和缓存的刷新所需要的能耗占很大一部分,较高的刷新频率 会大大增加功耗。目前的处理器设计首先要考虑的就是节能,通过减少刷新次数就能减少 很多功耗。刷新周期较长带来的问题是容易使得DRAM因丢失电而导致数据出错,从而需要 一种好的纠错方案。2)所需额外空间小对于多比特位纠错编码来说,所需要的存储空间很大,例如5位纠错6位查错 (5EC6ED)对于缓存行大小为64字节需要51位比特位的额外数据信息,大约增加了 10%的 额外空间。这导致了一般的多比特纠错方案很难实现,本发明则克服了这一点,所需要的额 外空间与单一纠错双查错(SE⑶ED)方案类似,11比特位,大约2%,本发明功效上类似前 都,而所占空间则与后者相同。3)小延迟5位纠错6位查错(5EC6ED)的纠错编码硬件实现很复杂且会增加很长的解码延 迟,延迟大小跟需要纠错的比特位数及缓存行数据位数成正比。如果在每次缓存访问时都 需要完整的编码与解码,那么会大大增加缓存访问延迟。本发明则利用易出错的缓存部分 可以让它无效这样一个事实,避免了一些典型操作过程中的高延迟解码。当从缓存中读取 一行时,为此行产生一个综合判定,这个判定的信息只包含0,1,或是一个更高的错误数,如 果仅仅是0或1,则只需要一个简单解码过程进行纠错,这只需要一个时钟周期。对于错误 位数较少时,只需要简单的纠错,延迟很小,对于错误位数多的情况,则纠错过程复杂,延迟 较大,但是出现这种情况的可能性很小,所以一般只需要很小的延迟就能完成纠错功能。4)低功耗本发明是采用很大的缓存行来减小强大多比特纠错码的空间代价,然而大的缓存 行会带来其他问题,传统缓存行大小为64字节,而本发明采用的是1024字节,当从低级的 内存中读取和写数据时,会出现行大小不匹配,当修改了 1024字节缓存行中的64字节子块 时,需要进行纠错,如果对整行(1024字节)进行纠错,那么复杂度较大,功耗也很大,只对 这64字节的子块进行纠错,那么就减少了很多操作,大大减小了功耗。对于缓存行的访问,不能对整个行进行查错和纠错,因为那样编码和解码操作处理的位数太多,延迟大且能源 消耗也大,只能针对行的部分子块进行纠错才能达到低能耗的目的。
权利要求
一种用于DRAM缓存的纠错编码方法,其特征在于包括如下步骤1)提高DRAM缓存的刷新周期,降低刷新频率;2)对缓存中的数据进行编码和解码,包括如下步骤a)编码,对于缓存中数据利用BCH码进行编码,输入的数据d为K比特,输入数据d与矩阵G相乘得到一个数据编码信息u,从而将数据保存在编码中,并增加了r位检查位;b)解码,通过编码的症状S来判断错误类别,根据错误类别使用纠错方法如果S为0,则数据没有错误,如果S中的哪位为非零则该位为错误;如果只有一位错误,则用单比特位纠错方法,如果错误位数为两个以上,则用多比特位纠错方法;其中S=v*HT=(u+e)*HT=(d*G+e)*HT=e*HT,v=u+e,G*HT=0,e是指错误信息位数,v表示带有错误e的编码信息。
2.根据权利要求1所述的纠错编码方法,其特征在于所述DRAM缓存的刷新周期为 150μ s 500 μ So
3.根据权利要求1所述的纠错编码方法,其特征在于所述错误位数为两个以上,纠错 过程如下先寻找S中的错误位数,然后确定错误位置,再将该位置的错误进行改正;假设第i位为1,& =Ofm‘-…钱”,σ (χ) = l+σ lX+. .. + OtXt= (1-α J1x) (1-α J2x)... (1-α Jtx),式中j表示错误检查位,t表示错误检查位数,求解出这个方程的根X,就得到错误位的 位置,将相应位的错位进行改正。
4.根据权利要求1所述的纠错编码方法,其特征在于所述H的行数为t*m+l,其中t 表示能纠正的最大错误数,m则表示数据ν的长度。
5.根据权利要求1-4任何一项所述的纠错编码方法,其特征在于所述多比特位纠错 方法为5EC6ED。
全文摘要
本发明公开了一种用于DRAM缓存的纠错编码方法,包括如下步骤(1)提高DRAM缓存的刷新周期,降低刷新频率;(2)对缓存中的数据进行编码和解码。本发明依据最易出错的比特位来设置刷新时间,使用纠错技术弥补一些错误数据,强大的纠错技术能纠正多比特位,意味着可以提高刷新时间,从而减少功耗。
文档编号G11C29/42GK101980339SQ20101053223
公开日2011年2月23日 申请日期2010年11月4日 优先权日2010年11月4日
发明者乐金明, 乔福明, 虞保忠, 陈天洲, 马建良 申请人:浙江大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1