具有软错误容错功能的一级缓存数据存储方法及装置的制作方法

文档序号:6382487阅读:238来源:国知局
专利名称:具有软错误容错功能的一级缓存数据存储方法及装置的制作方法
技术领域
本发明涉及微处理器中一级缓存(一级cache)设计领域,具体涉及一种具有软错误容错功能的一级缓存数据存储方法及装置。
背景技术
随着工艺水平的提高,集成电路的特征尺寸不断减小,不断降低的供电电压、持续减小的节点电容都使得集成电路对环境的影响越来越敏感,可靠性问题日益突出。特别是在纳米级工艺下,芯片的软错误率急剧增大。所谓软错误是指集成电路受到高能粒子轰击或噪声干扰时发生的瞬时充放电对电路内部状态的破坏。软错误是一种瞬时错误,是可恢复的,其发生的时间和位置随机。软错误发生的概率与集成电路节点电量和源漏区面积相关。随着集成电路工艺的进步,供电电压不断降低,单个节点上存储的电荷越来越少,所以能量较低的粒子或噪声就可能引起软错误。但同时特征尺寸的降低也使得敏感源漏区的面积减小,导致单个晶体管器件发生瞬态故障的概率降低。由于特征尺寸和供电电压是同步减小的,所以单个晶体管器件发生软错误的概率在未来的很多年中将保持不变。但是随着工艺的进步,单片上集成的晶体管数目呈指数增长,所以总的来看,芯片发生软错误的概率也将呈指数增长。有研究表明,在纳米级工艺条件下,软错误是引起芯片失效的主要原因。在现代微处理器中,各种存储单元(包括片内存储体和寄存器等)占据了芯片面积的70%以上,是芯片中对高能粒子最为敏感的部分。存储单元发生的软错误包括单事件翻转(单个高能粒子轰击导致的一位存储单元发生翻转错)和多位翻转(单个高能粒子轰击导致的多个相邻存储单元发生翻转错)两种类型。研究表明微处理器发生的各种瞬态故障,绝大部分来自于存储单元。因此目前高可靠微处理器大多针对各种存储单元进行保护。对于单事件翻转,寄存器(Flip-flop)和片内存储体发生的概率一样;但对于多位翻转,由于片内存储器电路实现布局相对于寄存器更加紧凑,因此在深亚微米器件的线宽与粒子大小可比拟的条件下,单一的粒子轰击可能引发相邻存储单元的多位翻转概率将远高于寄存器。所以相对于处理器其他部分,片内存储器更容易发生软错误,更需要采用加固技术进行防护,除了能够防护单事件翻转类型软错误外,更重要的是也能够有效支持多位翻转型软错误防护。片内存储体容软错误设计一般采用信息冗余技术进行软错误检测与纠正,常用的信息冗余技术包括奇偶检验码技术和海明校验码技术。这些技术需要写入存储器时对数据进行冗余编码,将原始数据和编码都存储在存储器中,读出时对数据和检验码进行校验。对于奇偶检验码技术,所需的冗余编码少,增加的面积和时序性能开销小,但只考虑了容单事件翻转,而未考虑容多位翻转。对于海明校验码技术,不仅考虑了容单事件翻转,也考虑了容多位翻转,但需要的冗余编码多,导致面积增加和时序性能开销大。—级缓存(LI cache)是处理器片内的大容量存储体,为了提高缓存性能,减少缓存失效率,常组织成多路组相联的结构。
如图I所示,现有技术的一级缓存存储装置一般为组相联一级缓存,组相联一级缓存包括标识阵列、数据阵列和数据冗余校验阵列三部分。标识阵列和数据阵列构成了一个典型的CAM-RAM结构,标识(tag)存储在CAM结构中,数据(data)存储在RAM结构中,CAM项和RAM项是一一对应的,组相联一级缓存的标识阵列和数据阵列实现了 η路组相联结构。标识阵列的每项包含了路O (Wayci)到路n (wayn)所有路的tag信息,并按Wayci标识、Way1标识到wayn标识的方式组织。数据阵列的每项包含了路O (way。)到路n (wayn)所有路的data信息,并按way。数据、Way1数据到wayn数据的方式组织,每路数据包含一个Cache line (即一个Cache块大小),由m个字(word)构成,每个字(word)为32位,每路数据按wordd、Word1到Wordm的方式组织。当访问组相联一级缓存时,用低位地址(address)来索引标识阵列,高位地址将作为一个搜索字输入到标识阵列中,同标识阵列中所有η路的标识进行并行比较,产生每路的命中/未命中信号。与此同时低位地址也用来索引数据阵列,读出索引项的所有η路的数据,然后基于标识阵列命中/未命中(match/dismatch)信 号产生的命中路路选择信息选择要读出的某路数据(即一个Cache line)。当填充组相联一级缓存时,待写入的数据(即一个Cache line)将根据填充路路选择信息将数据写入到组相 联一级缓存对应路的数据体中。
现有技术的一级缓存存储装置软错误容错功能由数据冗余校验阵列实现。数据冗余校验阵列用于组相联一级缓存的软错误检测,与数据阵列一一对应。当写入某路数据时,将同时根据写入数据生成校验码,并把校验码写入该路的冗余校验阵列中。当读出某路数据时,相应地也读出该路的校验码,根据读出数据和校验码进行错误检测。冗余校验阵列每项包含了路O (Waytl)到路n (wayn)所有路的校验码信息。Waytl校验码用于检测数据阵列中way。数据的软错误,Way1校验码用于检测数据阵列中Way1数据的软错误,依此类推。现有技术的一级缓存存储装置中每路数据的冗余校验机制可采用海明码等复杂校验机制(ECC),也可采用简单的奇偶检验机制(P )。ECC校验机制容软错误能力强,可检测存储体的单事件翻转错和多位翻转错,但硬件实现开销大。P校验机制硬件实现开销小,能检测存储体的单事件翻转错,当发生单粒子引发的相邻单元多位翻转错时,由于现有技术的一级缓存存储装置组相联结构下相邻单元多位错会发生在同路数据体的不同数据位上,因此该结构下P校验机制将无法检测存储体发生的多位翻转错,容软错误能力相对较弱。

发明内容
本发明要解决的技术问题是能够在低硬件开销下实现存储体软错误的高容错能力。本发明提供一种容软错误能力强、硬件开销小、时序性能好的具有软错误容错功能的一级缓存数据存储方法及装置。为了解决上述技术问题,本发明采用的技术方案为
一种具有软错误容错功能的一级缓存数据存储方法,其实施步骤如下
1)在收到数据填充命令时,接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时将所述待填充数据分别以数据位为单位分散存储于数据存储阵列中;
2)在收到数据命中命令时,从数据存储阵列中读取分散存储的各个数据位,将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。作为本发明具有软错误容错功能的一级缓存数据存储方法的进一步改进
所述步骤I)中将数据分别以数据位为单位分散存储于数据存储阵列中时,且不同路数据的相同数据位存储于数据存储阵列中的同一个存储区域。本发明还提供一种具有软错误容错功能的一级缓存数据存储装置,包括数据存储阵列、校验阵列、解码器、数据写通路和数据读通路,所述数据存储阵列包含多个数据项,任意一个所述数据项包括依次排列的多个字存储单元,所述字存储单元包含依次排列的多个位存储模块,所述位存储模块包含所有路的相同数据位,所有位存储模块中的相同数据位存储的数据构成完整的一路数据;所述校验阵列包含与数据存储阵列中每路数据一一对应的奇偶校验项,所述奇偶校验项中各个奇偶校验存储单元分别存储对应数据项中一路数据的奇偶校验码;在收到数据填充命令时,所述校验阵列接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时数据写通路将待填充数据分别以数据 位为单位分散存储于数据存储阵列的各个位存储模块中;在收到数据命中命令时,所述解码器根据数据命中命令获取数据存储阵列中各个位存储模块中的数据位,所述数据读通路从所述各个位存储模块中读取分散存储的各个数据位并将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。作为本发明具有软错误容错功能的一级缓存数据存储装置的进一步改进
所述数据写通路包括与所述位存储模块一一对应的多个写多路选择器,所述写多路选择器与对应的位存储模块相连;所述数据读通路包括与所述位存储模块一一对应的多个读多路选择器,所述读多路选择器与对应的位存储模块相连。本发明具有软错误容错功能的一级缓存存储方法具有下述优点
I、容软错误能力强。本发明采用简单的奇偶检验信息冗余编码对一级cache存储体进行容软错误保护,相比于海明ECC等复杂检验信息冗余编码,对一级cache存储体增加的面积更少,较小的存储体面积会减少存储体软错误发生率。同时本发明将一级cache数据分别以数据位为单位分散存储于数据存储阵列中,在读取时将各个数据位组合得到命中路数据,数据的分散存储保证了单粒子轰击导致的相邻多位存储单元错仅发生在不同路的数据体中,不同于现有技术的一级缓存存储组相联结构下多位翻转错发生在同路数据体不同数据位的情况;对于现有技术的一级缓存存储来说,发生在同路数据体不同数据位的多位错,奇偶检验机制将无法检测,但通过存储体路交叉的分散组织方式可将存储体多位错分布到不同路的数据体上,每路数据体仅包含I位错误,这时可通过奇偶检验机制分时检测每路数据体的单位错,从而有效地解决了存储体多位错问题,提高存储体容软错误的能力。2、硬件开销小。本发明采用的是硬件面积开销最小的奇偶检验信息冗余编码,该编码仅需对每个基本校验单位增加I位校验码即可完成校验功能,而海明ECC编码需要的校验码位远远大于奇偶检验码,例如对于缓存的I个基本校验单位I个字(32位)将需要7位校验码方可完成校验功能,更加复杂的校验编码如Reed-Solomon编码将需要更多校验位,这会给大容量一级缓存存储体带来巨大的面积开销,本发明相比于海明ECC等复杂检验信息冗余编码,对一级缓存存储体增加的面积更少,因此本发明具有硬件开销小的优点。3、时序性能好。微处理器中一级缓存的读写通路往往位于芯片访存的关键路径上,因此位于存储体读写通路上的冗余编码编解码电路时序的好坏将直接影响处理器的性能,编解码电路的性能通常依赖于编解码算法和检验位数(包括数据位和校验码位),复杂的冗余编码将需要复杂的编解码电路。而本发明采用奇偶检验冗余编码,其编解码算法简单且检验位数相对更少,使得编解码电路的时序性能相对更好,处理器性能相对更佳;同时本发明的数据组织形式能够有效避免现有技术的一级缓存存储组相联结构下引起的数据线长和线交叉问题,把现有技术的一级缓存存储组相联结构下数据读出和写入时的交叉长线变为局部短线,能够从结构上消除长线、保证存储体读写时序的改善、性能的提升。本发明具有软错误容错功能的一级缓存存储装置由于具有与具有软错误容错功能的一级缓存存储方法对应的结构,因此也具有与前述具有软错误容错功能的一级缓存存储方法相同的技术效果,在此不再赘述。


图I为现有技术一级缓存存储装置的框架结构示意图。图2为本发明实施例存储方法的基本流程示意图。图3为本发明实施例存储装置的框架结构示意图。图4为本发明实施例存储装置中数据写通路和数据读通路的框架结构示意图。图例说明1、数据存储阵列;11、字存储单元;12、位存储模块;2、校验阵列;21、奇偶校验存储单元;3、解码器;4、数据写通路;41、写多路选择器;5、数据读通路;51、读多路选择器。
具体实施例方式如图2所示,本实施例具有软错误容错功能的一级缓存数据存储方法的实施步骤如下
1)在收到数据填充命令时,接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时将待填充数据分别以数据位为单位分散存储于数据存储阵列中;
2)在收到数据命中命令时,从数据存储阵列中读取分散存储的各个数据位,将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。本实施例中,步骤I)中将数据分别以数据位为单位分散存储于数据存储阵列中,且不同路数据的相同数据位存储于数据存储阵列中的同一个存储区域,数据存储阵列中从左至右的数据组织形式如下第O路数据的第O个字的第O位、第I路数据的第O个字的第O位、……、第η路数据的第O个字的第O位;第O路数据的第I个字的第O位、第I路数据的第I个字的第O位、……、第η路数据的第I个字的第O位组织;……;第O路数据的第m个字的第O位、第I路数据的第m个字的第O位、……、第η路数据的第m个字的第O位组织;其中η为数据的路数,m为每一路数据中的字数。本实施例的数据存储阵列中数据组织形式构成了路交叉的方式,将各路数据的相同数据位物理集中,能够有效避免现有技术的一级缓存存储装置组相联结构下引起的数据线长并且线交叉的问题,能够把读出和写入时的交叉长线变为局部短线,交叉长线的消除势必会保证存储体读写时序的改善,性能的提升。本实施例的每路数据采用奇偶校验冗余编码检测存储体的软错误,奇偶校验编码仅需I位的信息冗余检验码,硬件实现开销小,增加的面积少,能有效检测存储体发生的单事件翻转软错误。对于单粒子引发的相邻存储单元多位翻转错,通过存储体路交叉的分散组织方式,使得引发的相邻单元多位错不在分布在同路数据体的不同数据位上,而是分布在不同路的数据体上,因此可通过奇偶校验码分时检测每路数据体的单位错,最终解决存储体多位错问题。相比现有技术的一级缓存存储组相联结构下奇偶校验码仅能检测单事件翻转软错误,具有软错误容错功能的一级缓存数据存储方法不仅能处理存储体单事件翻转软错误,也能处理存储体多位翻转软错误,增强了存储体容软错误的能力。如图3和图4所示,本实施例具有软错误容错功能的一级缓存数据存储装置包括数据存储阵列I、校验阵列2、解码器3、数据写通路4和数据读通路5,数据存储阵列I包含多个数据项,任意一个数据项包括依次排列的多个字存储单元11,字存储单元11包含依次 排列的多个位存储模块12,位存储模块12包含所有路的相同数据位,所有位存储模块12中的相同数据位存储的数据构成完整的一路数据;校验阵列2包含与数据存储阵列I中每路数据一一对应的奇偶校验项,奇偶校验项中各个奇偶校验存储单元21分别存储对应数据项中一路数据的奇偶校验码;在收到数据填充命令时,校验阵列2接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时数据写通路4将待填充数据分别以数据位为单位分散存储于数据存储阵列I的各个位存储模块12中;在收到数据命中命令时,解码器3根据数据命中命令获取数据存储阵列I中各个位存储模块12中的数据位,数据读通路5从各个位存储模块12中读取分散存储的各个数据位并将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。本实施例中,数据存储阵列I的每个数据项包含了路O (Wayci)到路n (wayn)所有路的数据信息,但与现有技术的一级缓存存储装置组相联结构不同的是,每个数据项中的数据组织打破了现有技术的一级缓存存储装置组相联结构下的数据组织方式,采用了存储体路交叉的分散组织结构,即数据存储阵列I中从左至右的数据组织形式如下第O路数据
的第O个字的第O位(way_)、第I路数据的第O个字的第O位(way·)、......、第η路数据
的第O个字的第O位(waynTO);第O路数据的第I个字的第O位(way_)、第I路数据的第I
个字的第O位(way11Q)、......、第η路数据的第I个字的第O位组织(waynlQ);......;第O路
数据的第m个字的第O位(way_)、第I路数据的第m个字的第O位(waylmQ)、......、第η路
数据的第m个字的第O位组织(way—)。其中η为数据的路数,m为每一路数据中的字数。本实施例中将数据存储阵列中数据构成了路交叉的方式,路交叉结构下所有路的同一位数据物理分布上集中,集中的分布能有效避免现有技术的一级缓存存储装置组相联结构下引起的数据线长并且线交叉的问题,把读出和写入时的交叉长线变为局部短线,交叉长线的消除势必会保证存储体读写时序的改善,性能的提升。
本实施例中,校验阵列2包含与数据存储阵列I中每路数据一一对应的奇偶校验项,采用硬件开销小的奇偶校验机制来生成验证码,每路数据仅需I位校验码即可检测每路数据单位错。针对现有技术的一级缓存存储装置组相联结构下单粒子引发相邻存储单元多位错时奇偶校验机制无法检测的问题,本实施例通过路交叉结构的数据存储阵列I能够有效地避免。对于单粒子引发的相邻存储单元多位错,在路交叉的数据存储阵列I的结构下,其错误不在分布在同路数据体的不同数据位上,而是分布在不同路的数据体上,不同路的数据错可通过不同路的奇偶校验检测。例如在本实施例的数据存储阵列I中,Way000,way·发生了单粒子引发的相邻存储单元多位翻转错,当数据访问到Wayci时,可通过奇偶校验检测由多位翻转引起的way_错误,当数据访问到Way1时,可通过奇偶校验检测由多位翻转引起的way·错误。本实施例通过这种分时处理单位错问题,用奇偶校验机制解决了多位翻转的软错误,保证了低硬件开销下的软错误高容错能力。如图4所示,数据写通路4包括与位存储模块12 —一对应的多个写多路选择器41,写多路选择器41与对应的位存储模块12相连;数据读通路5包括与位存储模块12—一对应的多个读多路选择器51,读多路选择器51与对应的位存储模块12相连。读出或写入 的数据来自或到达每路数据在各个位存储模块12中对应的数据位中,由命中路路选择和填充路路选择信号控制。在现有技术的一级缓存存储装置组相联结构下,所有路的同一位数据物理分布上相对分散,导致读出或写入数据中的每一位都需要一个大的多路选择器来完成读写数据和存储体的数据交互,大的多路选择会产生大量的交叉长线,增加了一级缓存存储体时序设计的困难;而在本实施例路交叉的一级缓存组相联结构下,所有路的同一位数据物理分布上集中,读出或写入数据中的每一位仅需要一个小的多路选择器(写多路选择器41或者读多路选择器51)来完成读写数据和存储体的数据交互,如图中出示的多个小的多路选择器IIiuxcici Cmux00表示所有路的第O个字的第O位Xmuxcil Cmux01表示所有路的
第O个字的第I位)、......、muxmn (!!!! ^表示所有路的第m个字的第η位),本实施例通过
写多路选择器41或者读多路选择器51的小多路选择器实现了读写数据的一位与存储体的一位数据的交互,消除了交叉长线的问题,将交叉长线变为局部短线,从而有利于时序紧张的一级缓存读写电路时序的优化和性能的提高,能够为微处理器的性能优化提供帮助。本实施例已成功应用于国防科技大学计算机学院设计并实现的高性能微处理器芯片FT1000及后续飞腾系列芯片中。FT1000及后续飞腾系列芯片都包含了大容量的一级缓存存储体(LI Cache),为了保证芯片的高可靠性,片内一级缓存存储体(LI Cache)采用了本实施例具有软错误容错功能的一级缓存存储装置,经FT1000及后续飞腾系列芯片样片测试,该发明能在FT1000及后续飞腾系列芯片处理器中正确有效地执行,具有设计代价小、容软错误能力强的优点,能有效检测一级缓存存储体的单事件翻转和多位翻转软错误。以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
权利要求
1.一种具有软错误容错功能的一级缓存数据存储方法,其特征在于其实施步骤如下 1)在收到数据填充命令时,接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时将所述待填充数据分别以数据位为单位分散存储于数据存储阵列中; 2)在收到数据命中命令时,从数据存储阵列中读取分散存储的各个数据位,将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。
2.根据权利要求I所述的具有软错误容错功能的一级缓存数据存储方法,其特征在于所述步骤I)中将数据分别以数据位为单位分散存储于数据存储阵列中时,且不同路数据的相同数据位存储于数据存储阵列中的同一个存储区域。
3.一种具有软错误容错功能的一级缓存数据存储装置,包括数据存储阵列(I)、校验阵列(2)、解码器(3)、数据写通路(4)和数据读通路(5),其特征在于所述数据存储阵列(I)包含多个数据项,任意一个所述数据项包括依次排列的多个字存储单元(11),所述字存储单元(11)包含依次排列的多个位存储模块(12),所述位存储模块(12)包含所有路的相同数据位,所有位存储模块(12)中的相同数据位存储的数据构成完整的一路数据;所述校验阵列(2)包含与数据存储阵列(I)中每路数据项一一对应的奇偶校验项,所述奇偶校验项中各个奇偶校验存储单元(21)分别存储对应数据项中一路数据的奇偶校验码;在收到数据填充命令时,所述校验阵列(2)接收待填充数据并采用奇偶检验信息冗余编码生成奇偶校验码并存储奇偶校验码,同时数据写通路(4)将待填充数据分别以数据位为单位分散存储于数据存储阵列(I)的各个位存储模块(12)中;在收到数据命中命令时,所述解码器(3)根据数据命中命令获取数据存储阵列(I)中各个位存储模块(12)中的数据位,所述数据读通路(5)从所述各个位存储模块(12)中读取分散存储的各个数据位并将各个数据位组合得到命中路数据,将命中路数据采用奇偶检验信息冗余编码生成奇偶校验码,将生成奇偶校验码与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则检测到数据错误,报告出错信息。
4.根据权利要求3所述具有软错误容错功能的一级缓存数据存储装置,其特征在于所述数据写通路(4)包括与所述位存储模块(12)—一对应的多个写多路选择器(41),所述写多路选择器(41)与对应的位存储模块(12)相连;所述数据读通路(5)包括与所述位存储模块(12)—一对应的多个读多路选择器(51),所述读多路选择器(51)与对应的位存储模块(12)相连。
全文摘要
本发明公开了一种具有软错误容错功能的一级缓存数据存储方法及装置,方法实施步骤如下1)在收到数据填充命令时,接收数据生成奇偶校验码并以数据位为单位分散存储;2)在收到数据命中命令时,读取各个数据位组合得到命中路数据,生成奇偶校验码并与存储的奇偶校验码进行比较,如果两者一致则直接将命中路数据输出,否则报告出错信息;装置包括数据存储阵列、校验阵列、解码器、数据写通路和数据读通路,数据存储阵列包含多个数据项,数据项包括多个字存储单元,字存储单元包含多个位存储模块,位存储模块包含多个数据位,多个位存储模块中的相同数据位构成完整的一路数据。本发明具有容软错误能力强、硬件开销小、时序性能好的优点。
文档编号G06F11/10GK102929743SQ20121049389
公开日2013年2月13日 申请日期2012年11月28日 优先权日2012年11月28日
发明者高军, 王永文, 窦强, 张承义, 孙彩霞, 倪晓强, 隋兵才, 陈微, 赵天磊, 王蕾, 黄立波 申请人:中国人民解放军国防科学技术大学
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1