CN104750577B - 面向片上大容量缓冲存储器的任意多位容错方法及装置 - Google Patents
面向片上大容量缓冲存储器的任意多位容错方法及装置 Download PDFInfo
- Publication number
- CN104750577B CN104750577B CN201510171762.2A CN201510171762A CN104750577B CN 104750577 B CN104750577 B CN 104750577B CN 201510171762 A CN201510171762 A CN 201510171762A CN 104750577 B CN104750577 B CN 104750577B
- Authority
- CN
- China
- Prior art keywords
- array
- data array
- data
- memory cell
- tag
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Landscapes
- Techniques For Improving Reliability Of Storages (AREA)
- For Increasing The Reliability Of Semiconductor Memories (AREA)
- Dram (AREA)
Abstract
本发明公开了一种面向片上大容量缓冲存储器的任意多位容错方法及装置,方法包括上电复位后输出扫描启动信号,正常工作状态下根据缓冲存储器的状态输出标签或数据阵列刷新启动信号;根据扫描启动信号和刷新启动信号隔离硬错误并进行ECC校验;替换存储单元时,选择被隔离硬错误外的存储单元进行替换;装置包括扫描与刷新控制单元、标签阵列及数据阵列错误检测单元和容错替换策略单元。本发明能避免不同类型错误的叠加和累积效应,降低缓冲存储器发生多位错的概率,降低对更复杂ECC校验编码的需求,提升缓冲存储器的空间效率,减少对正常缓冲存储器中存储体读写的影响,提升缓冲存储器访问的时间效率,实现代价低、容错效率高、可扩展性好。
Description
技术领域
本发明涉及处理器的缓冲存储器(Cache)的容错设计技术领域,具体涉及一种面向片上大容量缓冲存储器的任意多位容错方法及装置。
背景技术
在现代处理器中,缓冲存储器(以下简称Cache)通常占据绝大部分(大于50%)的芯片面积。由于摩尔定律的持续稳定发展,片上Cache的容量,即存储单元数量,也快速增长。于是在生产、制造和使用过程中,存储单元发生错误的概率也随着基数的增大而增长。同时,新型的非易失性存储器件(NVM)由于面积和功耗优势开始广泛应用于片上最后一级缓冲(Last Level Cache)。NVM器件的一个普遍缺点就是写寿命不高,即器件在写入一定次数以后就会损坏。且由于Cache对不同存储单元的写操作分布不均匀,处于写热点的NVM存储单元失效的速度大大提高。针对这些情况,如果Cache没有容错设计,则某一位存储单元的错误就将导致整个处理器不能正常工作,大大降低系统的可用性、可靠性甚至芯片的良率。相反的,采用容错设计的Cache在存储单元发生错误时,仍可保证系统正确运行。且由于Cache占据芯片的绝大部分面积,芯片生产、制造过程中引入的瑕疵有较大的概率被Cache的容错设计吸收,直接提升芯片的良率。
Cache存储单元的错误可分为两类:软错误和硬错误。存储单元的软错误指暂时性的可恢复错误。比如Cache使用过程中,存储单元由于放射性粒子或电磁场干扰等原因发生单位电平翻转,从而导致存储内容出错。发生这种错误时存储单元本身并没有损坏,在重新写入正确数据后仍然可以正常使用。存储单元的硬错误是存储单元发生永久性的损坏,比如生产、制造过程中由尘埃引起的存储单元结构损坏,或者读写次数超过单元寿命造成的永久性破坏。
为保证处理器稳定运行,Cache中存储的有效数据不能发生错误。传统方法采用Error Correcting Coding (ECC)编码来检测并纠正Cache存储单元的软和硬错误。ECC编码要求占用Cache的一部分存储空间用于保存冗余校验码。比如海明编码需要r位冗余码来保护(k=2r-r-1)位数据位。虽然海明编码的有效编码率(即有效数据位和冗余编码位的比例)高,但它只能纠正一位错误。当Cache存储单元发生多位错误时,类似海明编码的ECC校验就不再有效,导致处理器运行出错从而中断系统正常运行。这里,Cache发生多位错定义为:一个n(n>2)位的存储单元同时发生2位及以上错误的情形。现代处理器通常采用n=72,其中64位为有效数据8位为ECC编码。随着片上Cache容量的快速增长以及新型存储器件的应用,Cache发生多位错的概率也随之增长。于是更先进的能纠多位错的ECC编码技术也开始引起大家注意,比如Reed-Solomon(RS)编码或Low-density parity-check (LDPC)编码。RS和LDPC编码虽然能纠多位错,但是不可避免的要求更多的空间和逻辑开销。冗余位增加会降低Cache的有效容量,而更复杂的校验码逻辑必然增加每一次读写请求的延迟,降低读写效率。
发明内容
本发明要解决的技术问题是:针对现有技术的上述缺陷,提供一种能够避免不同类型错误的叠加和累积效应,降低缓冲存储器发生多位错的概率,降低对更复杂ECC校验编码的需求,提升缓冲存储器的空间效率,减少对正常缓冲存储器中存储体读写的影响,提升缓冲存储器访问的时间效率,实现代价低、容错效率高、可扩展性好的面向片上大容量缓冲存储器的任意多位容错方法及装置。
为了解决上述技术问题,本发明采用的技术方案为:
一种面向片上大容量缓冲存储器的任意多位容错方法,步骤包括:
1)在处理器上电复位后输出数据阵列扫描启动信号;在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
2)如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
3)检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
优选地,所述步骤2)的详细步骤包括:建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1,所述错误隔离标志位存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;同时,建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
优选地,所述步骤2)还包括定时启动标签阵列和数据阵列刷新的步骤,所述定时启动标签阵列和数据阵列刷新的详细步骤包括分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
本发明还提供一种面向片上大容量缓冲存储器的任意多位容错装置,包括:
扫描与刷新控制单元,用于在处理器上电复位后输出数据阵列扫描启动信号;在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
标签阵列及数据阵列错误检测单元,用于如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
容错替换策略单元,用于检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
优选地,所述标签阵列及数据阵列错误检测单元包括:
数据阵列扫描及刷新状态机模块,用于建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1,所述错误隔离标志位存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;
标签阵列更新及刷新状态机模块,用于建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
优选地,所述标签阵列及数据阵列错误检测单元还包括定时启动标签阵列和数据阵列刷新模块,所述定时启动标签阵列和数据阵列刷新模块用于分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
本发明面向片上大容量缓冲存储器的任意多位容错方法具有下述优点:
1、本发明通过在标签阵列中的存储单元状态信息增加错误隔离标志位E来区别缓冲存储器中的硬错误和软错误,将缓冲存储器的硬错误和软错误隔离处理,并基于数据阵列扫描启动信号、标签阵列刷新启动信号或者数据阵列刷新启动信号对缓冲存储器进行定时刷新,避免了不同类型错误的叠加和累积效应,能够有效降低缓冲存储器发生多位错的概率,从而降低对更复杂ECC校验编码的需求,提升缓冲存储器的空间效率,在处理器的片上缓冲存储器容量持续增大、出错概率上升的情况下,能够有效容忍缓冲存储器发生任意多位错,保障计算机系统的稳定运行。
2、本发明采用体系结构级的容错技术,充分利用缓冲存储器现成的访问流水线发送扫描和刷新请求,避免在正常读写通路上增加新的逻辑,有效减少对正常缓冲存储器中存储体读写的影响,提升缓冲存储器访问的时间效率。
3、本发明实现开销低,仅仅需要在标签阵列中的存储单元状态信息里增加错误隔离标志位E,具有易实现、容错效率高、可扩展性好的优点。
本发明面向片上大容量缓冲存储器的任意多位容错装置为本发明面向片上大容量缓冲存储器的任意多位容错方法完全对应的装置,因此也具有面向片上大容量缓冲存储器的任意多位容错方法相同的技术效果,故在此不再赘述。
附图说明
图1为本发明实施例方法的流程示意图。
图2为本发明实施例装置的框架结构示意图。
具体实施方式
如图1所示,本实施例面向片上大容量缓冲存储器的任意多位容错方法的步骤包括:
1)在处理器上电复位后输出数据阵列扫描启动信号(此时相当于缓冲存储器的硬错误初始化状态);在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列(Tag阵列)发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
2)如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位E标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
3)检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位E未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
为更好地解决缓冲存储器的多位错问题,本实施例的思路是将缓冲存储器的硬错误和软错误隔离,如果能够防止缓冲存储器硬错误和软错误叠加,则Cache同时发生多位错误的概率将大大降低。为了解决该问题,一方面,本实施例通过在标签阵列中的存储单元状态信息增加错误隔离标志位E来区别缓冲存储器中的硬错误和软错误,如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位E标记1,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位E未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作,从而有效地实现了将缓冲存储器的硬错误和软错误隔离,而且实现代价低,对正常读写请求的影响小,可扩展性好;另一方面,为防止软错误累积,本实施例基于标签阵列刷新启动信号和数据阵列刷新启动信号实现了ECC校验,在传统的ECC单位错保护基础之上,对缓冲存储器进行定时刷新,及时消除已经或正要发生的软错误。因此结合上述两个方面的体系结构层面的措施,能够有效降低缓冲存储器发生多位错的概率,从而降低采用更复杂ECC编码的需求,而且由于从体系结构上进行容错设计可以充分利用现有的缓冲存储器访问流水线结构,减少对正常缓冲存储器存储体读写请求的影响。而相比传统方法,本实施例还存在实现代价低、对正常读写请求的影响小、容错效率高、可扩展性好的优势。
本实施例中,步骤2)的详细步骤包括:建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位E标记1,错误隔离标志位E存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;同时,建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
本实施例中,步骤2)还包括定时启动标签阵列和数据阵列刷新的步骤,定时启动标签阵列和数据阵列刷新的详细步骤包括分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
如图2所示,本实施例面向片上大容量缓冲存储器的任意多位容错装置包括:
扫描与刷新控制单元,用于在处理器上电复位后输出数据阵列扫描启动信号;在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
标签阵列及数据阵列错误检测单元,用于如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位E标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
容错替换策略单元,用于检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位E未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
与典型的缓冲存储器访问流水线(Cache访问流水线)相同,本实施例的缓冲存储器访问流水线同样也包括标签阵列访问和数据阵列访问两个串行的部分:数据阵列以cacheline为单位保存实际数据,即数据阵列的存储单元为cacheline,标签阵列则保存每个cacheline的存储单元状态信息,存储单元状态信息(Tag项)包括有效位V、脏标志位D、标签地址Tag Address等基本信息。由于数据阵列通常占据整个缓冲存储器容量的85%以上,因此是容错设计的主要目标。现代大容量的缓冲存储器通常采用多路组相联的策略,即同一个物理地址只能映射到缓冲存储器上的唯一一组,而同一组内的多路cacheline则可以自由映射。一个缓冲存储器访问请求首先根据请求地址生成对标签阵列访问的索引Index,然后从标签阵列中读出与索引Index对应的一组cacheline的状态信息,与请求地址的Tag部分并行比较并判断命中,如果请求命中,则生成对数据阵列的访问请求,否则根据cache策略更新标签阵列。为了实现对硬错误的隔离,如图2所示,本实施例中从体系结构上进行缓冲存储器容错设计,在存储单元状态信息(Tag项)上增加一位错误隔离标志位E:当对应的cacheline发现硬错误时,置错误隔离标志位E为1;缓冲存储器在写入或替换cacheline时避免选择错误隔离标志位E为1的cacheline,从而隔离硬错误对cache功能的影响。要发现缓冲存储器的硬错误需要对数据阵列进行扫描测试,扫描过程可以利用正常的缓冲存储器访问流水线通过状态机发送一系列请求完成。例如本实施例在处理器启动阶段对数据阵列进行扫描,当发现硬错误时,及时更新标签阵列中的错误标志位;扫描完成后,处理器即可进行正常的读写访问,此时标签阵列内已经保存了数据阵列的所有硬错误信息。缓冲存储器的写入和替换策略就可以依据这些信息将硬错误隔离,而ECC校验码只需负责对软错误进行保护。为避免软错误累积,可以对标签阵列和数据阵列进行定时刷新。刷新过程同样可以利用正常的缓冲存储器访问流水线通过状态机发送一系列请求完成;刷新的时机可以由固定的刷新定时器决定,也可以在ECC校验发现错误时触发,也可以同时基于ECC校验发现错误时触发和固定的刷新定时器触发刷新;本实施例同时基于ECC校验发现错误时触发和固定的刷新定时器触发刷新。
如图2所示,本实施例的标签阵列及数据阵列错误检测单元包括:
数据阵列扫描及刷新状态机模块,用于建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位E标记1,错误隔离标志位E存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;
标签阵列更新及刷新状态机模块,用于建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
本实施例中,标签阵列及数据阵列错误检测单元还包括定时启动标签阵列和数据阵列刷新模块,定时启动标签阵列和数据阵列刷新模块用于分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
本实施例装置主要包括扫描与刷新控制单元、数据阵列扫描及刷新状态机模块、标签阵列更新及刷新状态机模块以及容错替换策略单元四个模块:(1)扫描与刷新控制单元负责在适当的时机发出扫描或刷新控制信号。数据阵列扫描可以在处理器初始化阶段完成,扫描与刷新控制单元在上电复位后向数据阵列扫描及刷新状态机模块发送扫描启动信号。扫描完成后,缓冲存储器进入正常工作状态;扫描与刷新控制单元监控缓冲存储器的标签阵列和数据阵列状态,当ECC逻辑检验到存储单元错误时,扫描与刷新控制单元启动对应阵列的刷新操作,并输出标签更新信号。此外,如果刷新定时器过期,扫描与刷新控制单元也将启动标签阵列和数据阵列的刷新操作;当缓冲存储器进行扫描或刷新操作期间,正常请求的处理需要被暂停。(2)数据阵列扫描及刷新状态机模块负责生成数据阵列的扫描和刷新请求。扫描和刷新过程均需要遍历数据阵列的所有项。遍历过程由地址计数器控制,每发送一个请求,地址计数器自动加1。当地址计数器达到数据阵列的容量时,遍历过程完成。对数据阵列的扫描需要生成不同类型的测试激励,对每个存储单元进行反复的读出和写入以确认该存储单元是否存在硬错误。对数据阵列的刷新则是依次读出每个存储单元的内容,进行ECC校验,如果发现位错误,则将纠正后的数据写回对应的存储单元,否则顺序读取下一存储单元。(3)标签阵列更新及刷新状态机模块负责在数据阵列扫描阶段对标签阵列进行更新,以及在缓冲存储器正常工作阶段对标签阵列进行刷新。如果发现标签阵列的存储单元硬错误,则标签阵列更新及刷新状态机模块生成标签阵列刷新启动信号,将对应cacheline的错误隔离标志位E置1;在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态,在刷新状态下,标签阵列更新及刷新状态机模块启动对标签阵列的刷新操作,依次读出每个标签阵列存储单元的内容,进行ECC校验,如果发现位错误,则将纠正后的数据写回对应的存储单元,否则顺序读取下一存储单元直至完成本轮的刷新操作;在本轮的刷新操作完成以后,则标签阵列更新及刷新状态机恢复空闲状态。(4)容错替换策略单元负责在发生cacheline写入以及替换时检查候选cacheline的错误隔离标志位E,确保写入以及替换算法选中的用于写入以及替换的cacheline的错误隔离标志位为零。综上所述,本实施例通过将缓冲存储器中存储单元的硬错误与软错误隔离,避免不同类型错误叠加;同时对缓冲存储器进行定时刷新,避免缓冲存储器中存储单元软错误的累积,从而大大降低片上大容量缓冲存储器同时发生多位错而影响系统稳定的可能性。与传统方法相比,本实施例避免采用更加复杂的ECC编码来提升系统可靠性,节省巨大的存储空间;并通过充分利用缓冲存储器现有的访问流水线,降低容错设计对缓冲存储器访问时间的影响。
以上所述仅是本发明的优选实施方式,本发明的保护范围并不仅局限于上述实施例,凡属于本发明思路下的技术方案均属于本发明的保护范围。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理前提下的若干改进和润饰,这些改进和润饰也应视为本发明的保护范围。
Claims (6)
1.一种面向片上大容量缓冲存储器的任意多位容错方法,其特征在于步骤包括:
1)在处理器上电复位后输出数据阵列扫描启动信号;在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
2)如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
3)检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
2.根据权利要求1所述的面向片上大容量缓冲存储器的任意多位容错方法,其特征在于,所述步骤2)的详细步骤包括:建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1,所述错误隔离标志位存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;同时,建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
3.根据权利要求2所述的面向片上大容量缓冲存储器的任意多位容错方法,其特征在于,所述步骤2)还包括定时启动标签阵列和数据阵列刷新的步骤,所述定时启动标签阵列和数据阵列刷新的详细步骤包括分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
4.一种面向片上大容量缓冲存储器的任意多位容错装置,其特征在于包括:
扫描与刷新控制单元,用于在处理器上电复位后输出数据阵列扫描启动信号;在缓冲存储器完成扫描识别数据阵列中各个存储单元的硬错误后的正常工作状态下,监测缓冲存储器的标签阵列和数据阵列的状态,如果标签阵列发生ECC校验错误则输出标签阵列刷新启动信号,如果数据阵列发生ECC校验错误则输出数据阵列刷新启动信号;
标签阵列及数据阵列错误检测单元,用于如果检测到数据阵列扫描启动信号,则进行数据扫描识别数据阵列中各个存储单元的硬错误,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1;如果检测到标签阵列刷新启动信号则刷新标签阵列,完成对标签阵列中每一个存储单元状态信息的ECC校验,如果检测到数据阵列刷新启动信号则刷新数据阵列,完成对数据阵列中每一个存储单元中存储数据的ECC校验;
容错替换策略单元,用于检测数据阵列中存储单元的写入或者替换操作,当需要进行存储单元的写入或者替换操作时,从组相连的多路存储单元中选择对应的错误隔离标志位未被标记为1的存储单元作为写入或者替换的目标存储单元来进行写入或者替换操作。
5.根据权利要求4所述的面向片上大容量缓冲存储器的任意多位容错装置,其特征在于,所述标签阵列及数据阵列错误检测单元包括:
数据阵列扫描及刷新状态机模块,用于建立具有空闲状态、请求发送状态两种状态的数据阵列扫描及刷新状态机,将数据阵列扫描及刷新状态机初始化为空闲状态,在空闲状态下如果检测到数据阵列扫描启动信号或者数据阵列刷新启动信号,则数据阵列扫描及刷新状态机进入请求发送状态;在请求发送状态下,如果收到的信号为数据阵列扫描启动信号,则生成不同类型的写数据,对数据阵列中的存储单元进行反复写入和读出,如果发现某个存储单元写入和读出的数据不相符合,则判定该存储单元发生硬错误,输出标签更新信号,将数据阵列中发生硬错误的存储单元对应的错误隔离标志位标记1,所述错误隔离标志位存储于发生硬错误的存储单元在标签阵列中对应的存储单元状态信息中;如果收到的信号为数据阵列刷新启动信号,则顺序读取数据阵列中每一个存储单元的内容并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元中的错误数据,然后继续读取数据阵列中下一个存储单元直至完成数据阵列中所有存储单元的遍历读取,数据阵列扫描及刷新状态机恢复空闲状态;
标签阵列更新及刷新状态机模块,用于建立具有空闲状态、刷新状态两种状态的标签阵列更新及刷新状态机,将标签阵列更新及刷新状态机初始化为空闲状态,在空闲状态下如果检测到标签阵列刷新启动信号或者标签更新信号,则标签阵列更新及刷新状态机进入刷新状态;在刷新状态下,顺序读取标签阵列中每一个存储单元状态信息并进行ECC校验,如果ECC校验出错,则针对ECC校验出错的存储单元状态信息进行纠错并将纠错后的正确数据更换ECC校验出错的存储单元状态信息,然后继续读取标签阵列中下一个存储单元状态信息直至完成标签阵列中所有存储单元状态信息的遍历读取,标签阵列更新及刷新状态机恢复空闲状态。
6.根据权利要求5所述的面向片上大容量缓冲存储器的任意多位容错装置,其特征在于,所述标签阵列及数据阵列错误检测单元还包括定时启动标签阵列和数据阵列刷新模块,所述定时启动标签阵列和数据阵列刷新模块用于分别为标签阵列和数据阵列设置刷新定时器,当标签阵列的刷新定时器超时,则向标签阵列输出标签阵列刷新启动信号,重置并重新启动标签阵列的刷新定时器;当数据阵列的刷新定时器超时,则向数据阵列输出数据阵列刷新启动信号,重置并重新启动数据阵列的刷新定时器。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171762.2A CN104750577B (zh) | 2015-04-13 | 2015-04-13 | 面向片上大容量缓冲存储器的任意多位容错方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201510171762.2A CN104750577B (zh) | 2015-04-13 | 2015-04-13 | 面向片上大容量缓冲存储器的任意多位容错方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN104750577A CN104750577A (zh) | 2015-07-01 |
CN104750577B true CN104750577B (zh) | 2017-09-29 |
Family
ID=53590314
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201510171762.2A Active CN104750577B (zh) | 2015-04-13 | 2015-04-13 | 面向片上大容量缓冲存储器的任意多位容错方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN104750577B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109189719B (zh) * | 2018-07-27 | 2022-04-19 | 西安微电子技术研究所 | 一种片内容错存储的复用结构及方法 |
CN113157490B (zh) * | 2021-04-01 | 2023-12-26 | 深圳市纽创信安科技开发有限公司 | 一种芯片内嵌的Flash存储器和存储控制方法 |
CN113076219B (zh) * | 2021-04-27 | 2022-07-12 | 中国人民解放军国防科技大学 | 一种高能效的片上存储器错误检测与纠错电路及实现方法 |
CN114637624B (zh) * | 2022-05-19 | 2022-08-12 | 武汉凌久微电子有限公司 | 一种主动错误探测的gpu显存访问修复方法及装置 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937088A (zh) * | 2005-09-23 | 2007-03-28 | 力晶半导体股份有限公司 | 系统软错误的样本筛选的方法 |
CN101901169A (zh) * | 2010-03-23 | 2010-12-01 | 成都市华为赛门铁克科技有限公司 | 扫描装置及方法 |
CN102376362A (zh) * | 2010-08-24 | 2012-03-14 | 晨星软件研发(深圳)有限公司 | 应用于快闪存储器的方法与相关的控制器 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US7275202B2 (en) * | 2004-04-07 | 2007-09-25 | International Business Machines Corporation | Method, system and program product for autonomous error recovery for memory devices |
JP2012103826A (ja) * | 2010-11-09 | 2012-05-31 | Fujitsu Ltd | キャッシュメモリシステム |
-
2015
- 2015-04-13 CN CN201510171762.2A patent/CN104750577B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1937088A (zh) * | 2005-09-23 | 2007-03-28 | 力晶半导体股份有限公司 | 系统软错误的样本筛选的方法 |
CN101901169A (zh) * | 2010-03-23 | 2010-12-01 | 成都市华为赛门铁克科技有限公司 | 扫描装置及方法 |
CN102376362A (zh) * | 2010-08-24 | 2012-03-14 | 晨星软件研发(深圳)有限公司 | 应用于快闪存储器的方法与相关的控制器 |
Non-Patent Citations (2)
Title |
---|
多核处理器验证中存储数据错误快速定位机制;周宏伟等;《国防科技大学学报》;20121231;第34卷(第6期);期刊全文 * |
频率2GHZ的16核处理器二级缓存设计;李永进等;《上海交通大学学报》;20130131;第47卷(第1期);期刊全文 * |
Also Published As
Publication number | Publication date |
---|---|
CN104750577A (zh) | 2015-07-01 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US8255742B2 (en) | Dynamically replicated memory | |
US8543863B2 (en) | Efficiency of hardware memory access using dynamically replicated memory | |
CN101996689B (zh) | 存储器错误处理方法 | |
US8725944B2 (en) | Implementing raid in solid state memory | |
US8874979B2 (en) | Three dimensional(3D) memory device sparing | |
TWI289851B (en) | Semiconductor memory and method of correcting errors for the same | |
US8869007B2 (en) | Three dimensional (3D) memory device sparing | |
US7533321B2 (en) | Fault tolerant encoding of directory states for stuck bits | |
CN103577111B (zh) | 基于非易失性存储器的动态独立冗余阵列存储系统及方法 | |
CN104750577B (zh) | 面向片上大容量缓冲存储器的任意多位容错方法及装置 | |
US10127103B2 (en) | System and method for detecting and correcting mapping table errors in a non-volatile memory system | |
US20130304970A1 (en) | Systems and methods for providing high performance redundant array of independent disks in a solid-state device | |
Jian et al. | Parity helix: Efficient protection for single-dimensional faults in multi-dimensional memory systems | |
Mittal et al. | A survey of techniques for improving error-resilience of DRAM | |
US20190019569A1 (en) | Row repair of corrected memory address | |
CN105378690A (zh) | 存储器节点差错校正 | |
CN112306737A (zh) | 控制易失性存储器装置的修复的方法和存储装置 | |
US10275307B2 (en) | Detection of error patterns in memory dies | |
CN110309014B (zh) | 一种全行编解码sram编码器数据读写结构及数据读写方法 | |
US9106260B2 (en) | Parity data management for a memory architecture | |
CN110265074A (zh) | 一种层次化多重冗余的磁性随机存储器及其运行方法 | |
CN105027084B (zh) | 在移动通信系统中控制存储器的装置和方法 | |
US8661320B2 (en) | Independent orthogonal error correction and detection | |
CN110737539B (zh) | 裸片级错误恢复方案 | |
CN210136722U (zh) | 一种存储器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |