数据读取、写入方法及装置、软错误处理系统与流程

专利查询2023-1-11  148



1.本公开的实施例涉及一种数据读取方法、数据写入方法、数据读取装置、数据写入装置、软错误处理系统。


背景技术:

2.芯片能否持续稳定的工作取决于芯片系统上各个部件的稳定性,而静态随机存储器(static random-access memory,sram)是在当前芯片设计中大量使用的部件,这种存储器只要保持通电,里面储存的数据就可以恒常保持。通常静态随机存储器用来存储关键数据,减少延时,提高芯片的性能。例如,静态随机存储器可以作为cpu(central processing unit,中央处理器)或gpu(graphics processing unit,图形处理器)中的高速缓存(cache)、数据通路上的数据缓存(data buffer)以及先进先出队列(first input first output,简称fifo)等。静态随机存储器相比动态随机存储器(dynamic random-access memory,dram)具有延时小,速度快的特点,而且不需要刷新,因此有利于提升芯片的性能和减少访问数据的功耗。


技术实现要素:

3.本公开至少一实施例提供一种数据读取方法,应用于数据存储器,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述数据读取方法包括:利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;将所述第二校验结果作为读取结果;其中,n、m、n均为正整数。
4.例如,在本公开至少一实施例提供一种数据读取方法中,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据存储器为所述m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述n个错误校验存储行中的每个包括p个错误校验位,所述n个错误校验存储行中第i行的p个错误校验位用于存储所述对应的列组中的第i行包括的c位数据对应的错误校验数据;所述数据存储器为所述n个行组和所述m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与所述存储阵列的m列一一对应的m位以及与所述m个第一校验阵列的m*p列一一对应的m*p位,所述奇偶校验存储行用于存储与所述奇偶校验存储行对应的行组相对应的参考奇偶校验向量,所述参考奇偶校验向量的m位对应于所述对应的行组的m列,所述参考奇偶校验向量的m*p位对应于所述m个第一校验阵列中与所述对应的行组属于
同一行的m*p列,其中,m、c、p、i均为正整数。
5.例如,在本公开至少一实施例提供一种数据读取方法中,响应于m大于1,所述m个列组分别包括的c列彼此交叉排列,以使得所述存储阵列中位于同一行的相邻数据位属于不同列组。
6.例如,在本公开至少一实施例提供一种数据读取方法中,所述第二校验结果的校正位数量等于所述错误校验方法能够检测的最大错误检测位数的m倍。
7.例如,在本公开至少一实施例提供一种数据读取方法中,利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果,包括:按照所述m个列组的位置关系,读取所述目标行中各个列组存储的c位数据和所述各个列组分别对应的p位错误校验数据,以得到分别对应于所述m个列组的m个第一数据行;利用所述错误校验方法,对所述m个第一数据行分别进行所述第一校验,得到所述第一校验结果。
8.例如,在本公开至少一实施例提供一种数据读取方法中,利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果,包括:针对所述目标行组包括的r行数据,利用奇偶校验方法,对所述r行数据的m列以及所述r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;将所述检测奇偶校验向量与所述目标行组对应的目标参考奇偶校验向量按位进行比较,确定所述检测奇偶校验向量与所述目标参考奇偶校验向量之间的多个差异位;根据所述多个差异位得到所述奇偶校验结果。
9.例如,在本公开至少一实施例提供一种数据读取方法中,将所述检测奇偶校验向量与所述目标参考奇偶校验向量按位进行比较,包括:将所述检测奇偶校验向量与所述目标参考奇偶校验向量进行按位异或计算。
10.例如,在本公开至少一实施例提供一种数据读取方法中,响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,所述第一校验结果至少包括所述m个第一数据行中出现a位错误的q个第一数据行,结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,包括:针对所述q个第一数据行中的每个被选择第一数据行:根据所述奇偶校验结果,确定所述被选择第一数据行中存在错误的e个潜在出错位,其中,所述e个潜在出错位的位置为所述多个差异位中属于所述被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果;根据所述q个第一数据行分别对应的q个第三校验结果得到所述第二校验结果,其中,a为所述错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。
11.例如,在本公开至少一实施例提供一种数据读取方法中,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,包括:确定由所述e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对所述至少一个校正组合进行所述试错组合测试;其中,所述试错组合测试包括依序针对每个被选择校正组合进行试错测试,所述试错测试包括:对所述被选择第一数据行中与所述被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到所述被选择第一数据行对应的中间测试数据行;利用所述错误校验方法,对所述中间测试数据行进行所述第一校验,响应于所述
中间测试数据行中至多有a-1位存在错误,对所述中间测试数据行进行处理,得到所述第三校验结果,并停止所述试错组合测试,响应于所述中间测试数据行中仍有a位存在错误,对下一个校正组合执行所述试错测试。
12.例如,在本公开至少一实施例提供一种数据读取方法中,所述至少一个校正组合按数据位距离从小到大的顺序依次执行所述试错测试,每个校正组合的数据位距离根据所述每个校正组合包括的a个潜在出错位之间的距离确定。
13.例如,在本公开至少一实施例提供一种数据读取方法中,响应于所述中间测试数据行中至多有a-1位存在错误,对所述中间测试数据行进行处理,得到所述第三校验结果,并停止所述试错组合测试,包括:响应于所述中间测试数据行不存在错误,将所述中间测试数据行作为所述第三校验结果,并停止所述试错组合测试;响应于所述中间测试数据行中的b位存在错误,利用所述错误校验方法,对所述b位进行校正,将校正结果作为所述第三校验结果,并停止所述试错组合测试,其中,b为正整数且小于等于a-1。
14.例如,在本公开至少一实施例提供一种数据读取方法中,根据所述q个第一数据行分别对应的q个第三校验结果得到所述第二校验结果,包括:确定所述m个第一数据行中除所述q个第一数据行外的m-q个第一数据行分别对应的m-q个第四校验结果;将所述q个第三校验结果和所述m-q个第四校验结果按所述m个列组的位置关系进行排列,得到所述第二校验结果。
15.例如,本公开至少一实施例提供一种数据读取方法还包括:响应于所述第一校验结果指示能完全校正所述目标行出现的错误,将所述第一校验结果作为所述读取结果;其中,利用所述错误校验方法,对所述m个第一数据行分别进行所述第一校验,得到所述第一校验结果,包括:利用所述错误校验方法分别对所述m个第一数据行进行所述第一校验,得到m个校正结果,将所述m个校正结果按所述m个列组的位置关系进行排列,得到所述第一校验结果。
16.例如,在本公开至少一实施例提供一种数据读取方法中,所述错误校验方法为单错校正双错检测方法。
17.本公开至少一实施例提供一种数据写入方法,用于向数据存储器写入数据,所述存储器被配置为能够存储n个数据,且所述n个数据中每个的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,所述n*m位的数据阵列在所述数据存储器中对应地存储为n*m位的存储阵列,所述存储阵列的n行被划分为n个行组,每个行组包括r行,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据写入方法包括:将待写入到所述存储阵列的n行中的目标行的目标数据按所述m个列组的位置关系划分为m个第二数据行,其中,每个第二数据行包括c位数据;基于错误校验方法,生成所述m个第二数据行分别对应的m个错误校验数据,其中,每个错误校验数据用于对对应的第二数据行利用所述错误校验方法进行校验;基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。
18.例如,在本公开至少一实施例提供一种数据写入方法中,所述数据存储器为所述存储阵列中的m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述数据存储器为所述n个行组和所述m个第
一校验阵列提供有n个奇偶校验存储行,所述数据写入方法还包括:将所述目标数据写入所述存储阵列中的目标行;将所述m个错误校验数据分别写入对应的第一校验阵列中所述目标行对应的错误校验存储行;将所述目标参考奇偶校验向量写入所述目标行组对应的奇偶校验存储行。
19.例如,在本公开至少一实施例提供一种数据写入方法中,基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,包括;读取所述目标行组对应的奇偶校验存储行中存储的当前参考校验向量,将所述当前参考校验向量与所述目标数据和所述m个错误校验数据进行按位异或运算,以得到所述目标参考奇偶校验向量。
20.本公开至少一实施例提供一种软错误处理系统,包括数据存储器和控制电路,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述控制电路包括控制器和错误校验器,所述错误校验器被配置为,利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;所述控制器被配置为:响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;将所述第二校验结果作为读取结果并输出;其中,n、m、n均为正整数。
21.例如,在本公开至少一实施例提供一种软错误处理系统中,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据存储器为所述m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述n个错误校验存储行中的每个包括p个错误校验位,所述n个错误校验存储行中第i行的p个错误校验位用于存储所述对应的列组中的第i行包括的c位数据对应的错误校验数据;所述数据存储器为所述n个行组和所述m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与所述存储阵列的m列一一对应的m位以及与所述m个第一校验阵列的m*p列一一对应的m*p位,所述奇偶校验存储行用于存储与所述奇偶校验存储行对应的行组相对应的参考奇偶校验向量,所述参考奇偶校验向量的m位对应于所述行组的m列,所述参考奇偶校验向量的m*p位对应于所述m个第一校验阵列中与所述行组属于同一行的m*p列,其中,m、c均为正整数。
22.例如,在本公开至少一实施例提供一种软错误处理系统中,响应于m大于1,所述m个列组分别包括的c列彼此交叉排列,以使得所述存储阵列中位于同一行的相邻数据位属于不同列组。
23.例如,在本公开至少一实施例提供一种软错误处理系统中,所述错误校验器的数量为m,所述m个错误校验器被配置为:按照所述m个列组的位置关系,分别接收从所述存储阵列中读取的所述目标行中各个列组存储的c位数据和所述各个列组分别对应的p位错误校验数据,以得到分别对应于所述m个列组的m个第一数据行;利用所述错误校验方法,分别对接收到的第一数据行进行所述第一校验,以得到所述第一校验结果。
24.例如,在本公开至少一实施例提供一种软错误处理系统中,每个错误校验器执行利用所述错误校验方法,对接收到的第一数据行进行所述第一校验,以得到所述第一校验结果时,包括执行以下操作:利用所述错误校验方法,判断是否所述接收到的第一数据行的c+p位中有a位存在错误,其中,a为所述错误校验方法能够检测的最大错误检测位数;响应于所述接收到的第一数据行中的a位存在错误,输出错误校验信号至所述控制器,其中,所述第一校验结果至少包括所述错误校验信号,响应于所述接收到的第一数据行中至多a-1位存在错误,对所述接收到的第一数据行进行校正处理,将校正结果输出至所述控制器,其中,所述第一校验结果至少包括所述校正结果。
25.例如,在本公开至少一实施例提供一种软错误处理系统中,所述控制器执行利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果时,包括执行以下操作:针对所述目标行组包括的r行数据,利用奇偶校验方法,对所述r行数据的m列以及所述r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;从所述目标行组对应的奇偶校验存储行读取所述目标行组对应的目标参考奇偶校验向量;将所述检测奇偶校验向量与所述目标参考奇偶校验向量按位进行比较,确定所述检测奇偶校验向量与所述目标参考奇偶校验向量之间的多个差异位;根据所述多个差异位得到所述奇偶校验结果。
26.例如,在本公开至少一实施例提供一种软错误处理系统中,响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,所述第一校验结果包括所述m个第一数据行,所述控制器执行结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果时,包括执行以下操作:确定所述m个第一数据行中出现a位错误的q个第一数据行;针对所述q个第一数据行中的每个被选择第一数据行:根据所述奇偶校验结果,确定所述被选择第一数据行中存在错误的e个潜在出错位,其中,所述e个潜在出错位的位置为所述多个差异位中属于所述被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果;根据所述q个第一数据行分别对应的q个第三校验结果,得到所述第二校验结果,其中,a为所述错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。
27.例如,在本公开至少一实施例提供一种软错误处理系统中,所述控制器执行结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果时,包括执行以下步骤:确定由所述e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对所述至少一个校正组合进行所述试错组合测试;其中,所述试错组合测试包括依序针对每个被选择校正组合进行试错测试,所述试错测试包括:对所述被选择第一数据行中与所述被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到所述被选择第一数据行对应的中间测试数据行;将所述中间测试数据行发送至对应的错误校验器;响应于接收到所述对应的错误校验器发送的第一标志信号,停止所述试错组合测试,输出所述对应的错误校验器发送的第三校验结果,响应于接收到所述对应的错误校验器发送的第二标志信号,对下一个校正组合执行所述试错测试。
28.例如,在本公开至少一实施例提供一种软错误处理系统中,所述对应的错误校验
器还被配置为:利用所述错误校验方法,对从所述控制器接收到的所述中间测试数据行进行所述第一校验,响应于所述中间测试数据行不存在错误,将所述中间测试数据行作为所述第三校验结果,并将所述第三校验结果和所述第一标志信号发送至所述控制器,响应于所述中间测试数据行中的b位存在错误,利用所述错误校验方法,对所述b位进行校正,将校正结果作为所述第三校验结果,并将所述第三校验结果和所述第一标志信号发送至所述控制器,其中,b为正整数且小于等于a-1,响应于所述中间测试数据行中仍有a位存在错误,输出所述第二标志信号至所述控制器。
29.例如,在本公开至少一实施例提供一种软错误处理系统中,所述控制电路还包括m个错误校验码生成器,所述m个错误校验码生成器被配置为,利用错误校验方法,分别对m个第二数据行进行处理,生成所述m个第二数据行分别对应的m个错误校验数据,其中,所述m个第二数据行是对目标数据按所述m个列组的位置关系划分得到,所述目标数据为待写入到所述存储阵列的n行中的目标行的数据;所述控制器还被配置为,基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。
30.例如,在本公开至少一实施例提供一种软错误处理系统中,所述控制电路还包括使能选择器、地址选择器、读数据选择器和写数据选择器,所述使能选择器被配置为,在所述控制器的控制下,将基于数据写入请求或读取请求确定的使能信号,或者将控制器生成的使能信号输入至所述数据存储器的使能端口;所述地址选择器被配置为,在所述控制器的控制下,将基于数据写入请求或读取请求确定的地址,或者将所述控制器生成的地址,输入至所述数据存储器的地址端口;所述读数据选择器被配置为,在所述控制器的控制下,将从所述数据存储器的读数据端口接收到的数据,或者将所述控制器生成的中间测试数据行,输入至对应的错误校验器;所述写数据选择器被配置为,在所述控制器的控制下,将目标数据和所述目标数据对应的m个错误校验数据,或者将所述控制器生成的目标参考奇偶校验向量,输入至所述数据存储器的写数据端口。
31.本公开至少一实施例提供一种数据读取装置,应用于数据存储器,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述数据读取装置包括:第一校验单元,配置为利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;确定单元,配置为响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;第二校验单元,配置为利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;校正单元,配置为结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;输出单元,配置为将所述第二校验结果作为读取结果输出。
32.本公开至少一实施例提供一种数据写入装置,用于向数据存储器写入数据,所述存储器被配置为能够存储n个数据,且所述n个数据中每个的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,所述n*m位的数据阵列在所述数据存储器中对应地存储为n*m位的存储阵列,所述存储阵列的n行被划分为n个行组,每个行组包括r行,所述存储阵列
的m列被划分为m个列组,每个列组包括c列,所述数据写入装置包括:第一校验数据生成单元,配置为将待写入到所述存储阵列的n行中的目标行的目标数据按所述m个列组的位置关系划分为m个第二数据行,并且基于错误校验方法,生成所述m个第二数据行分别对应的m个错误校验数据,其中,每个错误校验数据用于对对应的第二数据行利用所述错误校验方法进行校验,每个第二数据行包括c位数据;第二校验数据生成单元,配置为基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。
附图说明
33.为了更清楚地说明本公开实施例的技术方案,下面将对实施例的附图作简单地介绍,显而易见地,下面描述中的附图仅仅涉及本公开的一些实施例,而非对本公开的限制。
34.图1为多核芯片系统的示意性结构图;
35.图2a为静态随机存储器的电路逻辑示意图;
36.图2b为静态随机存储器的等效存储阵列示意图;
37.图3示出了静态随机存储器中检测到软错误后的处理流程;
38.图4a-图4d为静态随机存储器的存储结构示意图;
39.图5为本公开至少一实施例提供的一种数据读取方法的示意性流程图;
40.图6a为本公开至少一实施例提供的数据存储器的示意性结构图;
41.图6b为图6a所示的数据存储器的等效存储结构图;
42.图7为本公开至少一实施例提供的潜在出错位的示意图;
43.图8为本公开至少一实施例提供的数据读写方法的流程图;
44.图9为本公开至少一实施例提供的数据写入方法的示意性流程图;
45.图10为本公开至少一实施例提供的数据写入方法的流程图;
46.图11为本公开至少一实施例提供的软错误处理系统的示意性结构图;
47.图12为本公开至少一实施例提供的软错误系统的结构图;
48.图13a和图13b为本公开至少一实施例提供的数据存储器的结构图;
49.图14a-图14g为本公开至少一实施例提供的软错误示意图;
50.图15为本公开至少一实施例提供的一种数据读取装置的示意性框图;
51.图16为本公开至少一实施例提供的一种数据写入装置的示意性框图。
具体实施方式
52.为了使得本公开实施例的目的、技术方案和优点更加清楚,下面将结合本公开实施例的附图,对本公开实施例的技术方案进行清楚、完整地描述。显然,所描述的实施例是本公开的一部分实施例,而不是全部的实施例。基于所描述的本公开的实施例,本领域普通技术人员在无需创造性劳动的前提下所获得的所有其他实施例,都属于本公开保护的范围。
53.除非另外定义,本公开使用的技术术语或者科学术语应当为本公开所属领域内具有一般技能的人士所理解的通常意义。本公开中使用的“第一”、“第二”以及类似的词语并
不表示任何顺序、数量或者重要性,而只是用来区分不同的组成部分。“包括”或者“包含”等类似的词语意指出现该词前面的元件或者物件涵盖出现在该词后面列举的元件或者物件及其等同,而不排除其他元件或者物件。“连接”或者“相连”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电性的连接,不管是直接的还是间接的。“上”、“下”、“左”、“右”等仅用于表示相对位置关系,当被描述对象的绝对位置改变后,则该相对位置关系也可能相应地改变。
54.为了保持本公开实施例的以下说明清楚且简明,本公开省略了部分已知功能和已知部件的详细说明。
55.图1为多核芯片系统的示意性结构图。如图1所示,该系统是典型的4核片上系统,包含4个核(core)、4个核分别对应的三级高速缓存(l1高速缓存、l2高速缓存和l3高速缓存)、片上互联网络、动态随机存储器以及其他知识产权核(intellectual property core)。i-l1$为每个核的私有指令l1高速缓存,d-l1$为每个核的私有数据l1高速缓存,每两个核共享一个l2高速缓存,四个核共享l3高速缓存。l3高速缓存和其他知识产权核(例如,直接存储器访问/视频/显示等)通过片上互联网络访问动态随机存储器。
56.在这个典型的多核片上系统上,l1高速缓存、l2高速缓存和l3高速缓存包含大量的静态随机存储器,另外在核内部、其他知识产权核内部以及片上互联网络内部,也存在大量由静态随机存储器构成数据缓存。
57.图2a为静态随机存储器的电路逻辑示意图,图2b为与图2a等效的静态随机存储器的存储阵列示意图。
58.如图2a所示,静态随机存储器电路主要包括行地址译码、列地址译码、位线选择、列多路复用器以及存储阵列。该静态随机存储器的读写数据宽度为m位(比特),读写地址宽度为s位,其中列地址宽度为k位,行地址宽度为s-k位。对行地址进行译码后通过字线选中存储阵列中的某一行,存储阵列中的一行包含2k组m位数据。对列地址译码后得到列选通地址,通过列多路复用器选择字线选中的一行2k组m位数据中的一组m位数据进行读取或者写入操作。
59.如图2b所示,该静态随机存储器可以等效为n行、每行m位的二维阵列,例如n=2s。图2b中每个方框即为静态随机存储器中的一个存储单元,即一个比特。
60.由于各种原因,静态随机存储器可能出现数据的错误,即同一地址读出的数据与之前写入的数据不相等。静态随机存储器的错误主要分为两类:
61.第一类是硬错误,即静态随机存储器内部部分存储阵列的电路受到永久性的损坏,导致该部分数据出现不可逆的错误。这类错误主要由芯片制造工艺中的缺陷以及电路老化引起,可以使用mbist(存储器内建自测试,memory build-in-self test)电路检测出现错误的存储区域,在芯片使用过程中需要避免使用出现错误的存储区域。
62.第二类是软错误,这类错误不是永久性的,对同一地址写入新的数据后原来的错误就会消失。
63.引起软错误的主要原因包括两种:一是放射性粒子的穿透引起静态随机存储器的存储单元的反转,二是读写数据时动态电压噪声引起存储单元的反转。随着晶体管尺寸的缩小,静态随机存储器的工作电压越来越低,静态随机存储器中相邻的存储单元的距离也越来越近,这导致静态随机存储器的软错误变得越来越普遍。由于软错误是动态错误,即可
能发生在芯片正常工作时的任意时刻、任意位置的数据读写中,且无法像硬错误一样提前检测避免,因此必须对软错误进行动态的处理。
64.导致静态随机存储器出现软错误的两个原因都具有局部性的特点,即出现的错误通常集中在局部的存储区域,原因如下:
65.(a)放射性粒子穿透引起的软错误,主要来自于放射性粒子穿透半导体材料并扰乱存储单元锁存器的电压。根据放射性粒子穿透的角度和强度,可以引起一个或多个存储单元的翻转。一般来说这种穿透是一条直线,引起的错误可能发生在三个方向(水平方向,垂直方向和对角线方向)的局部区域。放射性事件出现的概率较低,一般只会引起局部的1到2个比特发生错误。
66.(b)动态电压噪声引起的软错误,主要来自读写静态随机存储器时电源噪声引起的局部存储单元的翻转。例如,当芯片内的主时钟开启(存在时钟信号输入)至关闭(不存在时钟信号输入)的过程中,许多其他的晶体管会发生跳变,从而引起电源线上的动态噪声。如果此时读取或写入存储单元,则某些较弱的存储单元可能受到干扰。另外,噪声也可能来自芯片外部事件,比如板级电压的动态波动和噪声。动态电源噪声只会影响较弱的存储单元,而较弱的存储单元是由于制造工艺过程中的变化(variant)引起,具有局部性的特点,因此软错误一般出现在局部的1到2个比特上。与放射性粒子穿透一样,随着工艺的进步和芯片工作电压的降低,动态电压噪声的影响也会越来越大。
67.综上所述,静态随机存储器的软错误一般只会发生在局部区域,而且出现的概率较低,一般只有1~2个比特。但是因为一旦出现软错误,如果无法恢复,可能导致系统出现严重问题,所以在芯片设计的时候必须考虑对软错误的恢复。
68.软错误的检测通常发生在数据读取时。对静态随机存储器中软错误的处理,目前的处理流程可以如图3所示。
69.具体来说,当检测到静态随机存储器中的软错误时,首先判断是否可以直接校正数据,如果错误可以校正,直接返回校正后的数据。例如出现1比特错误时,可以使用secded(single-error correction and double-error detection,单错校正双错检测)电路进行校正。
70.如果错误无法校正,例如只使用了奇偶校验电路,没有使用校正电路,则先判断是否有备份数据:
71.如果有备份数据,读取备份数据并返回,例如,若l1高速缓存出现错误时,可以读取l2高速缓存中的备份数据,若l2高速缓存出现错误时,可以读取l3高速缓存中的备份数据,若l3高速缓存出现错误时,可以通过读取动态随机存储器得到正确的数据,如果备份数据也检测到软错误,上述步骤可能重复执行,也即不断读取下一级的备份数据,直到得到正确的数据或者没有备份数据为止;
72.如果没有备份数据,则产生中断并上报cpu,让软件进行应用层面的数据恢复,软件一般根据错误的严重等级会采取不同的操作,例如对于一般数据的错误,只需要进行软件层面的重传即可,如果出现严重的系统错误,可能需要复位整个芯片系统,甚至引起系统宕机。
73.目前芯片设计中对静态随机存储器的软错误处理主要分为两大类,第一类是只检测错误不进行校正,第二类是使用ecc算法进行错误检测和校正,下面具体说明两种方案的
实现方式和存在的问题。
74.对于第一类,典型的应用是在静态随机存储器中加入奇偶校验位,这种方案的静态随机存储器存储结构示意图如图4a所示。该方案的优点是硬件开销最小,但是缺点是仅能实现对软错误的检测但无法进行数据校正。当静态随机存储器中读出的数据检测出软错误后,若要获得正确的数据就需要读取下一级备份数据或者上报中断给cpu让软件进行数据恢复。
75.对于读取下一级备份数据的情形,这种方式延时较大,比如l1高速缓存出现错误需要读取l2高速缓存的数据,这个过程需要花费10个周期左右的时间;l2高速缓存出现错误需要读取l3高速缓存的数据,这个过程需要花费30~50个周期的时间;而l3高速缓存出现错误需要读取动态随机存储器的数据,这个过程需要花费200个周期左右的时间。因此,这种解决方法带来的数据延时较大,会影响芯片的性能。另外,访问下一级备份数据一般会带来额外的数据传输,比如访问l3高速缓存或者动态随机存储器的数据需要发起片上互联网络上的传输,这将大大增加芯片的功耗。
76.如果没有备份数据,那只能产生中断上报cpu,让软件进行应用层面的数据恢复。在这种情形下,软件一般根据错误的严重等级会采取不同的操作,比如一般数据的错误,只需要进行软件层面的重传即可,如果出现严重的系统错误,可能需要复位整个芯片系统,甚至引起系统宕机。这种方案带来的延时相比读取备份数据带来的延时会更大(达到毫秒级,上百万个周期),严重影响芯片的稳定性和使用。
77.对于第二类,根据前述的产生软错误的原因可知,一般静态随机存储器出现中软错误的概率比较小,通常只有1到2比特,因此比较典型的解决方案是在静态随机存储器中加入secded校验位,如图4b所示。该方案的优点是可以在读取静态随机存储器的数据后直接进行错误数据校正,没有额外的延时带来的性能影响。但是该方案的缺点是只能校正1个错误位。一些芯片也采用dected(double-error correction and triple-error-detection,双错校正三错检测)方法进行软错误校正,如图4c所示。该方法虽然能够校正2位软错误,但是所需的存储开销更大,并且硬件实现更加复杂,也引入了额外的延时和功耗消耗。
78.表1对比了利用secded电路和dected电路进行校正所带来的额外硬件存储单元开销。数据位表示待检测数据的总位数m,校验位表示用于检测待检测数据的校验位的总位数,校验位的总位数由错误检测算法确定。由表1可以看到,dected电路的额外开销几乎是secded电路的两倍。当软错误大于2个比特时,需要读取下一级备份数据或者上报中断给cpu让软件进行数据恢复。虽然可以使用更好的算法来校正更多的错误位,但是随着校正位数的增加,额外的硬件开销越来越大,这样会大大增加芯片面积和功耗。
79.表1
[0080][0081]
如图4d所示,为了减少静态随机存储器的额外存储开销,节约芯片面积,可以将错误校验位(不限于secded或dected算法中的错误校验位)存入动态随机存储器的一块区域,而静态随机存储器仍使用图4a所示的方案,即增加一个奇偶校验位。该方案可以利用芯片上已有的动态随机存储器的空间,不需要为静态随机存储器增加存储单元,因此没有任何额外芯片面积的增加。但是该方案在每次读写数据都要经过片上互联网络发起对动态随机存储器的读写,延时非常大,一般需要200个时钟周期左右,这大大影响了芯片的性能。并且,大量的对动态随机存储器访问,也会大大增加芯片的功耗。
[0082]
一些高性能芯片对ras(可靠性(reliability)、可用性(availability)和可服务性(serviceability))要求较高,需要对静态随机存储器中出现的软错误进行及时校正,以保证芯片的稳定性以及性能。在前述的解决方案中,主要针对1位软错误进行检测和校正,当出现2位及以上的软错误时,采用读取数据备份或者软件中断恢复的方式来得到正确的数据,这样可以在很大程度上保证系统稳定运行。少数对芯片面积不敏感的芯片,可以采用更高级的错误检测及校正(error checking and correction,简称ecc)方法,比如dected方法,但是也只能校正2个错误位。然而随着半导体工艺的进步,晶体管尺寸的缩小和电压的降低,只校正1位或者2位软错误已经不能满足需求。当软错误无法在静态随机存储器的数据读出时及时校正,会引入很大的延时代价进行得到正确数据或者恢复,这严重影响了芯片的性能和系统的稳定性,而参考如前所述的2位软错误校正方案,要么会引入很大的延时,要么引入很大的存储开销,均无法满足使用需求。
[0083]
本公开至少一实施例提供一种数据读取方法、数据读取装置、数据写入方法、数据写入装置、软错误处理系统。该数据读取方法包括:利用错误校验方法,对从存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;响应于第一校验结果指示不能完全校正目标行出现的错误,确定目标行所属的目标行组;利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果,其中,第二校验结果的校正位数量大于错误校验方法能够校正的最大错误校正位数;将第二校验结果作为读取结果。
[0084]
该数据读取方法将存储阵列划分成多个行组,对目标行所述的目标行组中每一列数据进行第二校验得到奇偶校验结果,根据奇偶校验结果和第一校验结果进行综合分析,能够以较小的硬件开销和延时开销,及时校正数据存储器中出现的多位软错误,该数据读取方法所能校正的校正位的数量大于错误校验方法能够校正的最大错误校正位数。
[0085]
下面结合附图对本公开的实施例进行详细说明,但是本公开并不限于这些具体的实施例。
[0086]
图5为本公开至少一实施例提供的一种数据读取方法的示意性流程图。例如,如图
5所示,本公开实施例提供的数据读取方法包括步骤s10至s50。
[0087]
在步骤s10,利用错误校验方法,对从存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果。
[0088]
在步骤s20,响应于第一校验结果指示不能完全校正目标行出现的错误,确定目标行所属的目标行组。
[0089]
在步骤s30,利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果。
[0090]
在步骤s40,结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果。
[0091]
例如,第二校验结果的校正位数量大于错误校验方法能够校正的最大错误校正位数。
[0092]
在步骤s50,将第二校验结果作为读取结果。
[0093]
例如,错误校验方法可以包括错误检测及校正(error checking and correction,简称ecc)算法,ecc算法可以包括单错校正双错检测方法(下文简称secded方法)、双错校正三错检测方法(下文简称dected方法)等,当然,错误校验方法也可以采用其他可行的内存纠错、检测算法,本公开对此不做限制。
[0094]
一般来说,错误校验方法能检测的最大错误检测位数为a位时,则该错误校验方法能够校正的最大错误校正位数为a-1位,也即错误校验方法最多能检测出目标行中的a位出现软错误,且最多能对a-1位进行校正,无法对a位软错误都进行校正。需要说明的是,在本公开中,均以a表示错误校验方法能检测的最大错误检测位数,例如对于secded方法,a=2,对于dected方法,a=3。
[0095]
例如,该数据读取方法应用于数据存储器,例如,数据存储器中存储有n个数据且每个数据的数据宽度为m位,n个数据依次排列构成n*m位的数据阵列,且数据阵列在数据存储器中对应地存储为存储阵列。例如,数据存储器为静态随机存储器,数据存储器中的存储阵列可以参考图2b所示的存储阵列等效示意图。
[0096]
例如,存储阵列的n行被划分为n个行组,存储阵列的m列被划分为m个列组,每个列组包括c列。
[0097]
例如,数据存储器为m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,n个错误校验存储行中的每个包括p个错误校验位,n个错误校验存储行中第i行的p个错误校验位用于存储对应的列组中的第i行包括的c位数据对应的错误校验数据。
[0098]
例如,数据存储器为n个行组和m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与存储阵列的m列一一对应的m位以及与m个第一校验阵列的m*p列一一对应的m*p位,奇偶校验存储行用于存储与奇偶校验存储行对应的行组相对应的参考奇偶校验向量,也就是说,各个参考奇偶校验向量与各个行组具有一一对应关系,参考奇偶校验向量的m位对应于对应的行组的m列,参考奇偶校验向量的m*p位对应于m个第一校验阵列中与对应的行组属于同一行的m*p列,这里,m、c、p、i均为正整数。
[0099]
图6a为本公开至少一实施例提供的数据存储器的示意性结构图。如图6a所示,数据存储器提供有由n个m位数据依次排列构成的存储阵列(如图6a虚线框所示),例如,该存
储阵列可以为图2b所示的等效存储阵列,其实际的电路逻辑可以参考图2a的形式,这里不再赘述。
[0100]
例如,存储阵列的n行被划分成了n个行组,每个行组包括n/n=r行,r为正整数。如图6a所示的行组1至行组n所示,不同行组具有不同的纹理,例如行组1中的纹理从右上至左下的直线纹理,行组2中的纹理为竖直线纹理。
[0101]
例如,选取整数n,将n行划分成n个行组(row group),每个行组包含r行数据和错误校验数据。例如,数据存储器的地址位宽为s,也即n=2s,n=2f,r=2
s-f
,这里,f为正整数,例如,可以先确定f,之后根据f确定行组个数n。如图6a所示,不同纹理区分了不同的行组。n的选择取决于对存储开销和数据校正延时的平衡,不同的应用可以选择不同的n值以折中存储开销和数据校正延时。例如,n越小,奇偶校验存储行的存储开销越大,但是数据校正的延时越小,n越大,奇偶校验存储行的存储开销越小,但是数据校正的延时越大。
[0102]
例如,存储阵列的m列被划分成m个列组,每个列组包括m/m=c列。如图6a所示,不同列组由不同灰度表示。例如,存储阵列的m个列组包括的c列也可以根据需要设置任意的位置关系,满足平均分配即可。
[0103]
例如,m个列组分别包括的c列彼此交叉排列,以使得存储阵列中位于同一行的相邻数据位属于不同列组。例如,如图6a所示,根据需要校正的软错误位数k,选择整数m(m=k/a),将存储阵列的m列等分为m个列区域,依次交替从每个列区域中选择一列组合为一个列组(column group),即总共有m个列组,每个列组包含c列,列组之间交叉排列。由于相邻比特出现软错误的概率大,如果采用交叉排列,那么相邻的比特位分属不同列组可以直接利用错误校正方法进行校正,而不需要执行a位错误校正的流程,进一步降低延时开销,快速实现m*a位的软错误校正。
[0104]
例如,第二校验结果的校正位数量等于错误校验方法能够检测的最大错误检测位数的m倍。也就是说,m的选择决定了最大可以校正的软错误位数,从而本公开提供的数据读取方法的最大可校正软错误位数等于m*a。例如m=64,最大希望校正4个软错误位,错误校验方法选择secded方法,也即a=2,则选择m=4/2=2,将64列数据划分成两个列组,列组1包含列0,2,4,

等偶数列,列组2包含列1,3,5,

等奇数列。又例如m=128,选择m=3,最大可以校正6个软错误位,即128列数据被分为三个列组,列组1包含列0,3,6,

,125,列组2包含列1,4,7,

,126,列组3包含列2,5,8,

,127。
[0105]
例如,数据存储器为m个列组分别提供有m个第一校验阵列,m个列组与m个第一校验阵列一一对应。每个第一校验阵列包括n个错误校验存储行,每个错误校验存储行用于存储错误校验数据。对每行的每个列组包括的c位数据,使用一个错误校验数据来保护,错误校验数据包括p个错误校验位,则每行的m位数据需要m组错误校验位(m个错误校验数据),m组错误校验位依次存放在每一行数据的后面。例如,如图6a所示,不同列组对应的第一校验阵列具有不同的灰度,相同灰度的多列错误校验位组成一个第一校验阵列。
[0106]
例如,c和p的关系满足以下公式:
[0107]
p=q+1,c≤2
q-q-1
ꢀꢀꢀꢀꢀꢀ
(公式1)
[0108]
公式1由标准的secded方法得到的,比如m=64,m=2,c=32,则p=7,比如m=128,m=2,c=64,则p=8等等。当然,采用其他错误校验方法时,c和p和关系可以随之调整,本公开对此不作限制。
[0109]
例如,数据存储器还提供有n个奇偶校验存储行,n个奇偶校验存储行与n个行组一一对应。每个奇偶校验存储行包括m+m*p个列奇偶校验位,用于存储对应的行组的参考奇偶校验向量。每个列奇偶校验位是对应行组中一列数据的奇偶检验位,用来辅助定位软错误出现的位置。例如,奇偶校验存储行中的第i个列奇偶校验位用于存储对应的行组中第i列的r个数据位或错误校验位对应的奇偶校验数据,这里,i大于等于0且小于等于m+m*p-1。
[0110]
例如,每个奇偶校验存储行同样按照上述列组的划分成m组,每组包含c位数据和p个错误校验位,如图6a所示,一个奇偶校验存储行中不同灰度表示对应不同的列组。
[0111]
需要说明的是,图6a所示的n个奇偶校验存储行位于存储阵列的下方,但本公开实施例不限于此,奇偶校验存储行也可以位于存储阵列中间或存储阵列上方。例如,如果存储阵列第一行对应的地址编号为0,存储阵列的第二行对应的地址编号为1,则奇偶校验存储行对应的地址编号可以为n~n+n-1,这种设置方式不用修改地址编号的排布顺序,数据存储器的外围读写地址逻辑不用调整,兼容性更强。
[0112]
图6b为图6a所示的数据存储器的等效存储结构图。
[0113]
如图6b所示,以图6a中的行组1为例,行组1包括的r行数据可以按列组为单位,划分成图6b所示的m个等效阵列。
[0114]
例如,每个等效阵列包括r行数据,每行数据包括c位数据和p个错误校验位。例如,等效阵列1中的r行p个错误校验位是列组1对应的第一校验阵列中与行组1对应的r行。例如,每个等效阵列还包括一个列奇偶校验行,例如,等效阵列1中的列奇偶校验行是与行组1对应的奇偶校验存储行中与列组1对应的c+p位,也即图6a中与行组1对应的奇偶校验存储行中,颜色为白色且纹理为右上至左下直线的列奇偶校验位。该列奇偶校验行包括与等效阵列1的c列一一对应的c位以及与等效阵列1中p个错误校验位一一对应的p位,c位和p位分别用于存储等效阵列的c列数据以及p列错误校验数据对应的具有c+p位的奇偶校验数据。
[0115]
例如,m个第一校验阵列的存储空间大小为n*m*p位,n个奇偶校验存储行的存储空间大小为n*(m+m*p)位,数据存储器提供的存储空间大小为:(n+n)(m+m*p)。
[0116]
因此,本公开至少一实施例提供的数据读取方法中的数据存储器相对于原始数据区域(也即存储阵列)增加的额外存储单元(m个第一校验阵列和n个奇偶校验存储行)的百分比计算公式为:
[0117][0118]
例如,当数据存储器的地址位宽s=8,n=2s=256,数据位数m=32时,选取m=3,n=5,即每个行组包括32行(r=32),根据公式1计算得到p=7,存储阵列的存储空间大小为256*32=8192位,m个第一校验阵列的存储空间大小为:256*7=1792位,n个奇偶校验存储行的存储空间大小为:(32+7)*23=312位,除存储阵列外,数据存储器总共增加的额外开销为(1792+312)/8192=25.68%。
[0119]
例如,相对于图4b所示的方案,本公开中的数据存储器的额外开销只有n个列奇偶校验存储行,因此增加的开销为312/(8192+1792)=3.125%。
[0120]
下面表2对比了不同存储阵列大小(例如,不同n和m)下,本公开提供的方案与secded方法(下表中secded)、dected方法(下表中dected)在额外存储单元开销上的对比。
[0121]
表2
[0122][0123]
由表2可以看出,本公开提供的方案在相同软错误校正的情况下,面积开销相比当前方案的具有优势,相对于secded方法(图4b所示)增加的存储单元并不多,而相对dected方法(图4c所示)在存储开销上有较大优势,尤其是在较大的n和较小的m的情况下;n较小,m较大时存储面积会损耗更多,但是可以校正更多位数,容忍更多的错误,并且校正速度更快。
[0124]
例如,本公开提供的方法通过对数据存储器的存储阵列进行列组划分和交织,为每个列组增加多个错误校验位,实现多组中的多位软错误的同时校正,并满足存储开销和芯片稳定性的平衡。例如,对于面积敏感且稳定性要求不高的芯片,可以使用较少的列组(比如m=1)以减少第一校验阵列的存储空间,从而节约芯片面积;对于面积不敏感但稳定性要求高的芯片,可以使用较多的列组(比如m=3或4)以增加最大可校正的软错误位数,增加芯片稳定性;对于需要平衡面积和稳定性的芯片,可以使用适中的列组(比如m=2)。
[0125]
例如,本公开提供的方法通过对数据存储器的存储阵进行行组划分,为每个行组增加一个列奇偶校验行,以较小的存储开销定位a位软错误的位置,并满足存储开销和数据访问延时的平衡。例如,对于面积敏感但延时不敏感的芯片,可以使用更多的行组(比如n=6或7)以减少奇偶校验存储行占用的存储空间,从而节约芯片面积;对于面积不敏感但延时敏感的芯片,可以使用更少的行组(比如n=3或4)以减少多位错误校正的时间,使得芯片性能不受影响;对于需要平衡面积和数据访问延时的芯片,可以使用适中的行组(比如n=5)。
[0126]
例如,本公开至少一实施例提供的数据存储器的结构设计可以平衡数据存储器的硬件开销和数据访问延时的需求,通过控制行组个数n和列组个数m,可以满足不同芯片在
面积和性能上的要求。
[0127]
下面结合附图具体说明在图6a所示的数据存储器结构下,本公开至少一实施例提供的数据读取方法的执行过程。
[0128]
例如,在本公开至少一实施例提供的数据读取方法中,在步骤s10得到第一校验结果后,若第一校验结果指示不能完全校正目标行出现的错误,也即目标行的m个列组中至少1个列组出现a位软错误,则根据步骤s20-s50得到第二校验结果,该校验结果已对所有软错误进行校正,将第二校验结果作为读取结果;若第一校验结果指示能完全校正目标行出现的错误,也即目标行的m个列组中的每个列组均至多a-1位出现软错误,则错误校验方法可以直接对每个列组中的a-1位软错误进行校正,第一校验结果即可作为读取结果。
[0129]
例如,当错误校验方法为secded方法时,该数据读取方法能够以较小的硬件开销和延时开销及时校正数据存储器中出现的2*m位软错误,保证芯片系统的稳定性和性能。
[0130]
例如,步骤s10可以包括:按照m个列组的位置关系,读取目标行中各个列组存储的c位数据和各个列组分别对应的p位错误校验数据,以得到分别对应于m个列组的m个第一数据行;利用错误校验方法,对m个第一数据行分别进行第一校验,得到第一校验结果。
[0131]
例如,根据数据读取请求可以确定s位输入地址,根据s位输入地址确定待读取的目标行,之后从存储阵列和m个第一校验阵列中读取目标行存储的数据的m位以及目标行对应的错误校验数据的m*p位,按照m个列组的位置关系,得到m个第一数据行,每个第一数据行包括c位数据和c位数据对应的p位错误校验数据。
[0132]
之后,利用错误校验方法对每个第一数据行进行第一校验,得到第一校验结果。例如,第一校验可以利用错误校验方法,判断是否第一数据行的c+p位中有a位存在错误,这里,a为错误校验方法能够检测的最大错误检测位数。
[0133]
例如,响应于第一校验结果指示能完全校正目标行出现的错误,将第一校验结果作为读取结果。例如,此时m个第一数据行中均至多a-1位存在错误,利用错误校验方法即可校正m个第一数据行中的错误。例如,利用错误校验方法,对m个第一数据行分别进行第一校验,得到第一校验结果,可以包括:利用错误校验方法分别对m个第一数据行进行第一校验,得到m个校正结果,将m个校正结果按m个列组的位置关系进行排列,得到第一校验结果。当然,第一校验结果还可以包括有效指示信号。
[0134]
例如,响应于第一校验结果指示不能完全校正目标行出现的错误,例如,若m个第一数据行中至少一个第一数据行存在a位软错误,则这些第一数据行无法利用错误校验方法进行校正,此时第一校验结果至少包括这些第一数据行,当然,第一校验结果还可以包括错误指示信号,此时继续执行步骤s20-s50。
[0135]
例如,步骤s20可以包括:针对目标行组包括的r行数据,利用奇偶校验方法,对r行数据的m列以及r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;将检测奇偶校验向量与目标行组对应的目标参考奇偶校验向量按位进行比较,确定检测奇偶校验向量与目标参考奇偶校验向量之间的多个差异位;根据多个差异位得到奇偶校验结果。
[0136]
例如,计算检测奇偶校验向量时,检测奇偶校验向量pd的计算公式如下:pi=p
i-1
^ri,其中p-1
=r
rdaddr
,i=t~t+r-1且i!=rdaddr
ꢀꢀꢀꢀ
(公式3)
[0137]
其中,r
rdaddr
表示目标行中的m位数据和m*p位错误校验数据,rdaddr表示目标行的
地址序号,i依次取t、t+1、t+2..、t+r-1,但i跳过目标行的地址序号,这里,t为目标行所属行组的起始行的地址序号。当i=t+r-1时,所得到的pi即为检测奇偶校验向量pd。例如,图6a所示的由位于同一行的m位数据和m*p个错误校验位组成的m+m*p位数据称为一个数据行,将数据存储器中的目标行组中的r个数据行进行累积按位异或操作,得到检测奇偶校验向量pd。
[0138]
例如,这里m个第一数据行可以采用直接从数据存储器中读取的数据,此时部分数据行可能存在至多a-1位的软错误,或者也可以采用对部分第一数据行校验后的校正结果,此时除出现a位软错误的第一数据行以外的其他数据行不存在软错误,本公开对此不做限制。
[0139]
之后,从目标行组对应的奇偶校验存储行中读取当前存储的目标参考奇偶校验向量pa,将检测奇偶校验向量pd与目标参考奇偶校验向量pa按位进行比较。例如,将检测奇偶校验向量与目标参考奇偶校验向量按位进行比较,可以包括:将检测奇偶校验向量与目标参考奇偶校验向量进行按位异或计算。例如,异或结果中为1的比特表示检测奇偶校验向量中出错的位置,也即多个差异位,这些差异位表明差异位对应的列中一些数据位或错误校验位发生了错误。例如,奇偶校验结果至少包括多个差异位的位置、多个差异位的数量等。
[0140]
例如,目标行组对应的奇偶校验存储行的地址为:n+rdaddr[s-1:f],rdaddr[s-1:f]表示目标行的地址序号中第f位至s-1位的数据,n=2f。
[0141]
例如,响应于所述第一校验结果指示不能完全校正目标行出现的错误,第一校验结果至少包括m个第一数据行中出现a位错误的q个第一数据行。
[0142]
例如,步骤s30可以包括:针对q个第一数据行中的每个被选择第一数据行:根据奇偶校验结果,确定被选择第一数据行中存在错误的e个潜在出错位,其中,e个潜在出错位的位置为多个差异位中属于被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合e个潜在出错位、错误校验方法和被选择第一数据行,执行试错组合测试,以得到被选择第一数据行对应的第三校验结果;根据q个第一数据行分别对应的q个第三校验结果得到第二校验结果,其中,a为错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。
[0143]
例如,对未检测到软错误或只检测到a-1位软错误的m-q个第一数据行不进行任何操作,并且对于该m-q个第一数据行,将第一数据行(未检测到错误)或利用错误校验方法对第一数据行(检测到错误)校正后的正确结果作为作为第四校验结果,从而m-q个第一数据行分别对应的确定m-q个第四校验结果。
[0144]
例如,对出现a位错误的q个第一数据行并行执行a位错误校正流程。
[0145]
例如,对q个出现a位软错误的第一数据行并行执行a位错误校正流程,减少读操作的延时。若q个第一数据行中有任何一个第一数据行校验失败,此时停止所有其他第一数据行的校正流程,表明无法校正该数据,第二校验结果可以包括错误指示信号,之后读取下一级的备份数据或者产生中断上报软件处理,具体过程可以参考图3的相关内容。
[0146]
例如,若q个第一数据行均校验成功,根据q个第一数据行分别对应的q个第三校验结果得到第二校验结果,可以包括:确定m个第一数据行中除q个第一数据外的m-q个第一数据行分别对应的m-q个第四校验结果,例如,m-q个第四校验结果可以为对m-q个第一数据行利用错误校验方法进行校正所得到的m-q个正确结果;将q个第三校验结果和m-q个第四校
验结果按m个列组的位置关系进行排列,得到第二校验结果。
[0147]
下面结合附图具体说明被选择第一数据行的a位错误校正流程。
[0148]
例如,预设校正阈值e表示最大可遍历的奇偶校验位数,预设校正阈值e可以根据性能需求设置,预设校正阈值e越大,遍历校正组合所花费的延时也相应增大,校正所需的时间可能越长。设置最大预设校正阈值e可以控制校正时间,防止由于其他原因的错误导致无用的校正计算,并且,实践中可以根据具体应用需求,选择合适的预设校正阈值,以平衡数据存储器的稳定性和延时性能。
[0149]
图7为本公开至少一实施例提供的潜在出错位的示意图。需要说明的是,图7示出的是q个第一数据行中的一个第一数据行的示意图,例如,图7为对应图6b中的等效阵列1的潜在出错位的示意图,其他第一数据行以此类推,这里不再赘述。
[0150]
如图7所示,被选择第一数据行中有两个软错误位,检测奇偶校验向量与目标参考奇偶校验向量按位异或后得到多个差异位中的3个差异位的位置即为图7中3个潜在出错位的位置。
[0151]
例如,若e大于预设校正阈值e,表明无法校正被选择第一数据行,被选择第一数据行校验失败。此时停止其他第一数据行的校正流程,第二校验结果可以包括错误指示信号,之后读取下一级的备份数据或者产生中断上报软件处理,具体过程可以参考图3的相关内容。
[0152]
若e《a,这种情况下无法定位被选择第一数据行中a位错误,表明无法校正被选择第一数据行,被选择第一数据行校验失败。此时停止其他第一数据行的校正流程,第二校验结果可以包括错误指示信号,之后读取下一级的备份数据或者产生中断上报软件处理,具体过程可以参考图3的相关内容。
[0153]
若a-1《e≤e,则执行试错组合测试。具体来说,从e个潜在出错位中任意选择a个潜在出错位进行组合,得到x个校正组合,依序针对每个被选择校正组合进行试错测试。例如,校正组合数量x根据如下公式得到:
[0154][0155]
这里,c表示组合计算公式,“!”表示阶乘运算。
[0156]
例如,结合e个潜在出错位、错误校验方法和被选择第一数据行,执行试错组合测试,可以包括:确定由e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对至少一个校正组合进行试错组合测试。这里,以遍历方式处理所有可能的软错误组合(校正组合),确保每个列组对应的第一数据行中的a位软错误及时校正,降低系统出错的概率,提高系统稳定性。
[0157]
例如,试错组合测试包括依序针对每个被选择校正组合进行试错测试,试错测试包括:对被选择第一数据行中与被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到被选择第一数据行对应的中间测试数据行;利用错误校验方法,对中间测试数据行进行第一校验,响应于中间测试数据行至多有a-1位存在错误,对中间测试数据行进行处理,得到第三校验结果,并停止试错组合测试,响应于中间测试数据行中仍有a位存在错误,对下一个校正组合执行试错测试。
[0158]
例如,响应于中间测试数据行至多有a-1位存在错误,对中间测试数据行进行处
理,得到第三校验结果,并停止试错组合测试,可以包括:响应于中间测试数据行不存在错误,将中间测试数据行作为第三校验结果,并停止试错组合测试;响应于中间测试数据行中的b位存在错误,利用错误校验方法,对b位进行校正,将校正结果作为第三校验结果,并停止试错组合测试,其中,b为正整数且小于等于a-1。
[0159]
例如,如图7所示,针对由位索引为5的潜在出错位和位索引为6的潜在出错位构成的校正组合,将被选择第一数据行中位索引为5的数据位和位索引为6的数据位进行翻转处理,例如,在翻转处理中,若数据位的数值为第一值(例如0),则将数据位的数值翻转为第二值(1),若数据位的数值为第二值,则将数据位的数值翻转为第一值,从而得到中间测试数据行;之后,利用错误校验方法,例如利用secded方法,对中间测试数据行进行第一校验,由于原本被选择第一数据行中位索引为5的数据位和位索引为6的数据位出现软错误,则经过翻转处理后的中间测试数据行为正确结果,将中间测试数据行作为第三校验结果,停止针对该被选择数据行的试错组合测试。
[0160]
如前所述,静态随机存储器的软错误具有局部性特点,邻近存储单元出现软错误的可能性更大,因此可以采用距离优先的遍历方式,最快速度从多种校正组合中定位真实的软错误位。例如,x个校正组合按数据位距离从小到大的顺序依次执行试错测试,每个校正组合的数据位距离根据每个校正组合包括的a个潜在出错位之间的距离确定。以图7为例,当潜在出错位的位置为5、6、8列,错误校验方法为secded方法时,校正组合可以包括三种:位索引为5和6的潜在出错位构成的校正组合1、位索引为6和8的潜在出错位构成的校正组合2,以及位索引为5和8的潜在出错位构成的校正组合3,例如,可以优先选择数据位距离最小的校正组合进行试错测试,例如,校正组合1的数据为距离为1,校正组合2的数据为距离为2,校正组合3的数据为距离为3,首先对校正组合1进行试错测试,若校验失败则对校正组合2进行试错测试,若校验失败再对校正组合3进行试错测试。如前所述,由于静态随机存储器的软错误具有局部性特点,可能在校正组合1就已经得到正确的校正结果,校正过程最短只需要1个时钟周期,因此距离优先的遍历方式可以缩短校正周期,加快校正进程。
[0161]
例如,若最后所有校正组合均执行上述试错测试后仍校验失败,表示该被选择第一数据行校验失败,此时停止所有其他第一数据行的校正流程,表明无法校正该数据,第二校验结果可以包括错误指示信号,之后读取下一级的备份数据或者产生中断上报软件处理,具体过程可以参考图3的相关内容。
[0162]
最后,在步骤s50,将第二校验结果作为读取结果。例如,若q个第一数据行均校验成功,将第二校验结果作为读取结果,此外,第二校验结果还可以包括有效标志信号;若任一个第一数据行校验失败,例如,针对该第一数据行的所有校正组合均校验失败,或者潜在出错位个数e大于e或小于a,则第二校验结果可以至少包括错误指示信号,之后芯片系统检测到错误指示信号后读取下一级的备份数据或者产生中断上报软件处理,具体过程可以参考图3的相关内容。
[0163]
本公开至少一实施例提供的数据读取方法通过将存储阵列进行分组,能够直接校正数据存储器中的m*(a-1)位的软错误,也即m个列组中分别出现的a-1位软错误。此外,本公开通过为n个行组增加奇偶校验存储行,能够以较小的硬件开销和延时开销,支持多位软错误在读数据时及时校正,及时定位、校正静态随机存储器中出现的多位软错误,最大可校正软错位数等于m*a。m越大,能同时校正的软错误位数越多,但面积开销也越大。本公开提
供的解决方案支持不同的芯片系统根据系统稳定和面积的需求选择不同的m值,并且能兼容现有的系统设计,降低芯片系统出错的概率,保证芯片系统的稳定性和性能。
[0164]
图8为本公开至少一实施例提供的数据读取方法的流程图。例如,该数据读取方法中的错误校验方法采用secded方法,也即a=2,下面结合图8,详细说明数据读取方法的执行流程。
[0165]
首先,如图8所示,接收读取请求,确定目标行的地址,读取目标行的数据,并对目标行读取的数据的m位进行第一校验,具体过程可以参考步骤s10的相关内容,这里不再赘述。
[0166]
之后,若第一校验结果指示能完全校正目标行出现的错误,例如,目标行的m个第一数据行(或m位数据)中的每个第一数据行均至多有1位错误,则将m个第一数据行或校正结果按m个列组的位置关系进行排列,得到第一校验结果,并将第一校验结果作为读取结果返回,完成一次读取流程。
[0167]
若第一校验结果指示不能完全校正目标行出现的错误,例如任一个第一数据行中有2位错误,确定目标行所属的目标行组,利用奇偶校验方法,对从存储阵列中目标行组读取的m列中每一列的数据进行第二校验,得到奇偶校验结果,具体过程可以参考步骤s20的相关内容,这里不再赘述。
[0168]
之后,针对出现2位错误的q个第一数据行,根据奇偶校验结果确定每个被选择第一数据行中存在错误的e个潜在出错位,且对被选择第一数据行并行执行图8中阴影部分所示的校正流程。
[0169]
如图8所示,先根据奇偶校验结果确定被选择第一数据行中存在错误的e个潜在出错位,若e大于1且小于等于预设校正阈值e,确定x个校正组合,依序针对每个被选择校正组合进行试错测试。
[0170]
例如,针对第i个校正组合,若试错测试通过,也即第i个校正组合对应的中间测试数据行中至多有1位存在错误,输出第三校验结果;若试错测试失败,也即第i个校正组合对应的中间测试数据行中仍有2位存在错误,对第i+1个校正组合执行试错测试,直到所有校正组合均完成试错测试。
[0171]
若q个第一数据行均成功得到第三校验结果,根据出现2位错误的q个第一数据行分别对应的q个第三校验结果得到第二校验结果,完成一次读取流程。
[0172]
若所有校正组合均遍历后仍未得到正确数据,则返回校验失败,同时停止其他第一数据行的校正流程,返回错误数据并输出错误指示信号,之后读取下一级备份数据或产生中断上报软件处理,完成一次读取流程,这里,i为正整数且小于等于校正组合的总数。例如,所有校正组合可以按照距离优先原则依次进行试错测试,关于试错测试具体执行过程可以参考步骤s30的相关内容,这里不再赘述。
[0173]
若e小于等于1或大于预设校正阈值e,则返回校验失败,同时停止其他第一数据行的校正流程,返回错误数据并输出错误指示信号,之后读取下一级备份数据或产生中断上报软件处理,完成一次读取流程。
[0174]
参考如前所述的内容,本公开至少一实施例提供的数据读取方法所消耗的最大延时rl
max
如下式所示:
[0175][0176]
此时,至少一个第一数据行中出现a位软错误,需要执行步骤s20-s50,其中步骤s20中读取r-1个数据行消耗r-1个时钟周期,计算奇偶校验结果消耗1个时钟周期,试错组合测试消耗x个时钟周期。
[0177]
本公开至少一实施例提供的数据读取方法所消耗的最小延时rl
min
如下式所示:
[0178][0179]
这里,se(soft error)表示第一数据行中的软错误位数,当m个第一数据行的软错误位数se均小于等于a-1时,读取操作所带来的额外延时为0,当任一个第一数据行的软错误位数se等于a且潜在出错位的个数e大于a-1且小于等于预设校正阈值e,并且所有检测到a位软错误的第一数据行均在第一个时钟周期就完成了a位错误校正时,读取操作所带来的额外延时为r+1,其中,计算检测奇偶校验向量过程需要消耗r-1个时钟周期,将检测奇偶校验向量与目标参考奇偶校验向量按位进行比较需要消耗1个时钟周期,执行步骤s40需要消耗1个时钟周期。
[0180]
表3中列举了几种常见的地址位宽s和潜在出错位个数e取值下的读取操作的额外延时。例如,在该表3中,错误校验方法采用secded方法,也即能检测的最大错误检测位数a=2。
[0181]
由表3可以看出,由于多个出现2位软错误的第一数据行是并行校正的,因此最大延时与读取操作延时主要取决于各个列组中的潜在出错位的最大值e
max
,读操作延时与行组分组的大小n和e
max
都有关,n越小,e
max
越小,额外的读延时开销也越小。
[0182]
表3
[0183][0184]
因此,本公开至少一实施例提供的数据读取方法可以适用于任意静态随机存储器的大小,当静态随机存储器的深度越小,校正a位错误所需额外延时越小,但是面积开销比例相对高;静态随机存储器的深度越大,面积开销比例越小,但是校正a位错误的延时也越大。在芯片设计中,通常很多存储空间较大的静态随机存储器都被划分成多块的小静态随机存储器,以满足方便布局布线和时序收敛,比如将一个1024x256的静态随机存储器划分成四个128x256的块(bank),每块的面积更小,性能更高,而且对于布局布线更友好。因此,在芯片设计中可以将大块静态随机存储器划分成小的静态随机存储器,以平衡面积和延时开销。
[0185]
综上所述,本公开至少一实施例提供的数据读取方法在面积开销、性能及功耗上
具有优势,能够实时校正最多m*a位软错误。当所有列组都只有至多a-1位软错误时,本公开提供的数据读取方法不会带来额外的延时。当任意列组出现a位软错误时,若n《=7则最大额外延时控制在150个周期内,相比错误无法校正时读取下一级备份数据(10~200个周期)或者上报中断软件处理(上百万个周期),在性能上具有明显优势。即使为了节约面积采用较大的行组n值,读取操作带来的额外延时依然比上报中断软件处理(上百万个周期)还是具有优势,在读取数据过程中即可实现多位软错误的实时校正,降低因静态随机存储器出错且无法校正时所带来的数据恢复的延时和功耗开销,提高了系统性能。
[0186]
具体而言,在面积开销上,本公开至少一实施例提供的数据读取方法优于图4a-图4d所提供的软错误校正解决方案,并且当静态随机存储器越大,面积开销的比例越低。在性能上,本公开至少一实施例提供的数据读取方法更优,例如,当至多有a-1位错误时不产生额外的读取延时,当出现a位错误时,对于深度不大的静态随机存储器(比如n《=7),读取操作延时可以控制在150个周期内,并且静态随机存储器深度越小,延时越小,相比读取下一级备份数据(10~200个周期)或者上报中断软件处理(上百万个周期),在性能上具有明显优势;对于深度较大的静态随机存储器,读取延时虽然相对较大,但是相对于上报中断软件处理(上百万个周期),性能还是具有明显优势。在功耗上,因为a位错误校正发生在读数据的时候,不需要发起其他的系统传输,因此功耗消耗也有一定优势。
[0187]
本公开至少一实施例还提供一种数据写入方法。图9为本公开至少一实施例提供的数据写入方法的示意性流程图。如图9所示,本公开实施例提供的数据写入方法包括步骤s60至s80。
[0188]
例如,该数据写入方法用于向数据存储器写入数据。例如,数据存储器被配置为能够存储n个数据,且n个数据中每个的数据宽度为m位,n个数据依次排列构成n*m位的数据阵列,n*m位的数据阵列在数据存储器中对应地存储为n*m位的存储阵列。
[0189]
例如,存储阵列的n行被划分为n个行组,每个行组包括r行,存储阵列的m列被划分为m个列组,每个列组包括c列。
[0190]
例如,数据存储器为存储阵列中的m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,数据存储器为n个行组和m个第一校验阵列提供有n个奇偶校验存储行。关于数据存储器中的存储阵列、第一校验阵列、奇偶校验存储行可以参考图6a-图6b的相关内容,这里不再赘述。
[0191]
在步骤s60,将待写入到存储阵列的n行中的目标行的目标数据按m个列组的位置关系划分为m个第二数据行。
[0192]
例如,每个第二数据行包括c位数据。例如,存储阵列可以预先在电路设计阶段根据列组关系对每个数据位的走线进行布局,从而写入时可以直接得到m个第二数据行。
[0193]
在步骤s70,基于错误校验方法,生成m个第二数据行分别对应的m个错误校验数据。
[0194]
例如,每个错误校验数据用于对对应的第二数据行利用错误校验方法进行校验。
[0195]
在步骤s80,基于目标数据,利用奇偶校验方法得到目标行所属的目标行组对应的目标参考奇偶校验向量。
[0196]
例如,目标参考奇偶校验向量用于对目标行组包括的r行数据的m列中每列进行奇偶校验。
[0197]
例如,在步骤s60中,当接收到数据写入请求时,解析数据写入请求,确定数据写入请求包括的目标数据和待写入的目标行的地址,例如,目标数据的数据宽度为m位,进而得到m个第二数据行。
[0198]
例如,在步骤s70中,利用错误校验方法,例如secded方法、dected方法等,生成m个第二数据行分别对应的m个错误校验数据,例如,错误校验数据包括p个错误校验位,c和p的关系如公式1所示,这里不再赘述。
[0199]
例如,步骤s80可以包括:读取目标行组对应的奇偶校验存储行中存储的当前参考校验向量,将当前参考校验向量与目标数据和m个错误校验数据进行按位异或运算,以得到目标参考奇偶校验向量。
[0200]
例如,如图6a所示,若目标行属于行组1,行组1对应的奇偶校验存储行的地址为n,将m位目标数据和m个错误校验数据按图6a所示的位置关系拼接成一个数据行,将该数据行与从地址n中读取的当前参考校验向量进行按位异或运算,得到参考奇偶校验向量的更新值,也即目标参考奇偶校验向量。
[0201]
例如,数据写入方法还可以包括:将目标数据写入存储阵列中的目标行;将m个错误校验数据分别写入对应的第一校验阵列中目标行对应的错误校验存储行;将目标行组对应的目标参考奇偶校验向量写入目标行组对应的奇偶校验存储行。
[0202]
图10为本公开至少一实施例提供的数据写入方法的流程图。
[0203]
如图10所示,首先在接收数据写入请求时,生成m个错误校验数据,具体过程如步骤s60所述,这里不再赘述。
[0204]
之后,并行完成:读取目标行组对应的奇偶校验存储行;将目标数据写入存储阵列中的目标行,将步骤s60生成的m个错误校验数据写入m个第一校验阵列中目标行对应的错误校验存储行。
[0205]
之后,计算目标参考奇偶校验向量并写入目标行组对应的奇偶校验存储行,计算目标参考奇偶校验向量的具体过程如步骤s80所述,这里不再赘述,这个过程需要额外花费1个时钟周期。
[0206]
因此,在本公开至少一实施例提供的数据写入方法中,写入操作所带来的额外延时为1个时钟周期,也即计算目标参考奇偶校验向量并写入目标行组对应的奇偶校验存储行这个过程所花费的时间。
[0207]
表4对本公开的技术方案与图4a-图4d中的技术方案在存储开销、访问延时以及功耗消耗上进行了对比。例如,本公开所采用的方案中,考虑芯片面积和延时平衡,将m列分成m组,将n列分成5组(也即n=5),地址宽度s=7,数据位数m=128,错误校验方法采用secded方法,也即a=2。由表4可以看出,本公开的方案能够以较小的存储开销和功耗消耗,以及适中的延时实现静态随机存储器多位软错误的及时校正。
[0208]
表4
[0209]
[0210][0211]
这里对表4的参数进行解释:在表4中,以图4a的解决方案为例,当出现1位错误时,若有数据备份(如下一级高速缓存或者dram中有备份数据),访问延时在10~200个时钟周期,若无数据备份,需要上报中断由软件处理,时间在毫秒级以上(上百万个时钟周期);由于需要发起系统总线传输读取或者恢复数据,从而会造成较大的功耗消耗;对于图4d所示的解决放方案,若有数据备份(如下一级高速缓存或者dram中有备份数据),延时在210~400个时钟周期,若无数据备份,需要上报中断由软件处理,时间在毫秒级以上,由于需要发起系统总线传输读取动态随机存储器中的数据,从而会造成较大的功耗消耗;对于本公开提供的解决方案,若软错误发生在两个不同的列组,额外延时为0;若2位软错误发生在同一个列组,额外延时为33~47个时钟周期。
[0212]
对应于如上所述的数据读取方法和数据写入方法,本公开至少一实施例还提供一种软错误处理系统。
[0213]
图11为本公开至少一实施例提供的软错误处理系统的示意性结构图。
[0214]
如图11所示,软错误读取系统100包括数据存储器101和控制电路102。
[0215]
例如,数据存储器101可以为静态随机存储器。
[0216]
例如,数据存储器101中存储有n个数据且每个数据的数据宽度为m位,n个数据依次排列构成n*m位的数据阵列,且数据阵列在数据存储器中对应地存储为存储阵列。
[0217]
例如,存储阵列的n行被划分为n个行组,存储阵列的m列被划分为m个列组,每个列组包括c列。例如,数据存储器101为m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,n个错误校验存储行中的每个包括p个错误校验位,n个错误校验存储行中第i行的p个错误校验位用于存储对应的列组中的第i行包括的c位数据对应的错误校验数据。例如,数据存储器101为n个行组和m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与存储阵列的m列一一对应的m位以及与m个第一校验阵列的m*p列一一对应的m*p位,奇偶校验存储行用于存储与奇偶校验存储行对应的行组相对应的参考奇偶校验向量,参考奇偶校验向量的m位对应于对应的行组的m列,参考奇偶校验向量的m*p位对应于m个第一校验阵列中与对应的行组属于同一行的m*p列,这里,m、c、p、i均为正整数。
[0218]
例如,响应于m大于1,m个列组分别包括的c列彼此交叉排列,以使得存储阵列中位于同一行的相邻数据位属于不同列组,从而进一步降低延时开销,快速实现m*a位的软错误校正。
[0219]
关于数据存储器101的具体结构可以参考图6a及图6b的相关内容,这里不再赘述。
[0220]
例如,如图11所示,控制电路102包括控制器103和错误校验器104,错误校验器104的数量为m个,分别表示为错误校验器104_1、

、错误校验器104_m。
[0221]
例如,m个错误校验器104被配置为,利用错误校验方法,对从存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果。
[0222]
具体而言,m个错误校验器104被配置为:按照m个列组的位置关系,分别接收从存储阵列中读取的目标行中各个列组存储的c位数据和各个列组分别对应的p位错误校验数据,以得到分别对应于m个列组的m个第一数据行,也即m个错误校验器104分别接收m个第一数据行;利用错误校验方法,每个错误校验器104对接收到的第一数据行进行第一校验,以得到第一校验结果。
[0223]
例如,每个错误校验器104执行利用错误校验方法,对接收到的第一数据行进行第一校验,以得到第一校验结果时,包括执行以下操作:利用错误校验方法,判断是否接收到的第一数据行的c+p位中有a位存在错误,其中,a为错误校验方法能够检测的最大错误检测位数;响应于接收到的第一数据行中的a位存在错误,输出错误校验信号至控制器103,其中,第一校验结果包括接收到的第一数据行,响应于接收到的第一数据行中至多a-1位存在错误,对接收到的第一数据行进行校正处理,将校正结果输出至控制器103,其中,第一校验结果包括校正结果。
[0224]
例如,m个错误校验器104并行执行上述操作,若任一个错误校验器104检测到接收到的第一数据行存在a位错误,则该错误校验器104输出错误校验信号至控制器103,以通知控制器103执行后续a位错误校正流程。
[0225]
例如,控制器103被配置为:响应于第一校验结果指示不能完全校正目标行出现的错误,确定目标行所属的目标行组;利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果,其中,第二校验结果的校正位数量大于错误校验方法能够校正的最大错误校正位数;将第二校验结果作为读取结果并输出;其中,n、m、n均为正整数。
[0226]
例如,控制器103执行利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果时,包括执行以下操作:针对目标行组包括的r行数据,利用奇偶校验方法,对r行数据的m列以及r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;从目标行组对应的奇偶校验存储行读取目标行组对应的目标参考奇偶校验向量;将检测奇偶校验向量与目标参考奇偶校验向量按位进行比较,确定检测奇偶校验向量与目标参考奇偶校验向量之间的多个差异位;根据多个差异位得到奇偶校验结果。
[0227]
例如,响应于第一校验结果指示不能完全校正目标行出现的错误,第一校验结果包括m个第一数据行。例如,m个第一数据行可以由各个错误校验器104发送至控制器103,或者,可以由数据存储器101的读取端口直接发送至控制器103。
[0228]
例如,控制器103执行结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果时,包括执行以下操作:确定m个第一数据行中出现a位错误的q个第一数据行;针对q个第一数据行中的每个被选择第一数据行:根据奇偶校验结果,确定被选择第一数据行中存在错误的e个潜在出错位,其中,e个潜在出错位的位置为多个差异位中属于被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合e个潜在出错位、错误校验方法和被选择第一数据行,执行试错组合测试,以得到被选择第一数据行对应的第三校验结果;根据q个第一数据行分别对应的q个第三校验结果,得到第二校验结果,其中,a为错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。
[0229]
例如,控制器103执行结合e个潜在出错位、错误校验方法和被选择第一数据行,执行试错组合测试,以得到被选择第一数据行对应的第三校验结果时,包括执行以下步骤:确定由e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对至少一个校正组合进行试错组合测试;其中,试错组合测试包括依序针对每个被选择校正组合进行试错测试,试错测试包括:对被选择第一数据行中与被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到被选择第一数据行对应的中间测试数据行;将中间测试数据行发送至对应的错误校验器;响应于接收到对应的错误校验器104发送的第一标志信号,停止试错组合测试,输出对应的错误校验器发送的第三校验结果,例如,第一标志信号可以为表示校验成功的有效指示信号;响应于接收到对应的错误校验器104发送的第二标志信号,对下一个校正组合执行试错测试,例如,第二标志信号可以为表示校验失败的错误指示信号。
[0230]
例如,对应的错误校验器可以是对被选择第一数据行进行第一校验的错误校验器,也可以是其他处于空闲状态的错误校验器,本公开对此不做限制。例如,控制器103并行对q个第一数据行进行上述试错组合测试,若任一个第一数据行校验失败,例如,该第一数据行的潜在出错位个数e小于a-1或大于预设校正阈值,或者该第一数据行的所有校正组合均校验失败,则停止所有第一数据行的试错组合测试,输出错误指示信号,表示目标行出现多位软错误且无法对目标行的数据进行校正,结束本轮读取操作。
[0231]
例如,对应的错误校验器104还配置为:利用错误校验方法,对从控制器103接收到的中间测试数据行进行第一校验,响应于中间测试数据行不存在错误,将中间测试数据行作为第三校验结果,并将第三校验结果和第一标志信号发送至控制器103,响应于中间测试数据行中的b位存在错误,利用错误校验方法,对b位进行校正,将校正结果作为第三校验结果,并将第三校验结果和第一标志信号发送至控制器103,其中,b为正整数且小于等于a-1,响应于中间测试数据行中仍有a位存在错误,输出第二标志信号至控制器103。
[0232]
例如,如图11所示,控制电路102还包括m个错误校验码生成器105,分别表示为错误校验码生成器105_1、

、错误校验码生成器105_m。例如,m个错误校验码生成器105被配置为,利用错误校验方法,分别对m个第二数据行进行处理,生成m个第二数据行分别对应的m个错误校验数据,这里,m个第二数据行是对目标数据按照m个列组的位置关系划分得到,目标数据为待写入到存储阵列的n行中的目标行的数据。例如,控制器103还被配置为,基于目标数据,利用奇偶校验方法得到目标行所属的目标行组对应的目标参考奇偶校验向量,其中,目标参考奇偶校验向量用于对目标行组包括的r行数据的m列中每列进行奇偶校验。
[0233]
例如,控制电路103还包括使能选择器mux1、地址选择器mux2、读数据选择器mux3和写数据选择器mux4,
[0234]
使能选择器mux1被配置为,在控制器103的控制下,将基于数据写入请求或读取请求确定的使能信号,或者将控制器103生成的使能信号输入至数据存储器101的使能端口。
[0235]
地址选择器mux2被配置为,在控制器103的控制下,将基于数据写入请求或读取请求确定的地址,或者将控制器103生成的地址,输入至数据存储器101的地址端口。
[0236]
读数据选择器mux3被配置为,在控制器103的控制下,将从数据存储器101的读数据端口接收到的数据,或者将控制器103生成的中间测试数据行,输入至对应的错误校验器104。
[0237]
写数据选择器mux4被配置为,在控制器103的控制下,将目标数据和目标数据对应的m个错误校验数据,或者将控制器103生成的目标参考奇偶校验向量,输入至数据存储器101的写数据端口。
[0238]
本公开至少一实施例提供的软错误处理系统,通过对存储阵列进行列组划分和交织,为每个列组增加错误校验位,实现多位软错误的同时校正,并满足存储开销和芯片稳定性的平衡;通过设计数据存储器的外围硬件电路,也即控制电路,以遍历方式处理可能的潜在出错位,最多可同时对m*a位软错误进行校正,降低系统出错的概率,降低因软错误无法校正带来的数据恢复的延时和功耗开销,提高系统稳定性;该方案可以平衡数据存储器的硬件开销和数据访问延时的设计,即通过控制行组个数值n和列组个数m,可以满足不同芯片在面积和性能上的要求;并且,该软错误处理系统完全兼容现有方案,比如静态随机存储器的接口、错误上报等机制等,软错误处理系统的接口定义也无需更改,硬件、软件改动量小,软错误系统模块化,可重构。
[0239]
图12为本公开至少一实施例提供的软错误系统的结构图。
[0240]
如图12所示,软错误系统包括数据存储器101和外围硬件电路,也即控制电路102。通过控制电路102控制软错误的校正流程,配合改进的数据存储器101实现以较少的硬件开销和延时开销,最多校正m*a位软错误。
[0241]
控制电路102的接口与标准的静态随机存储器的读写控制电路完全相同,可以原位替换现有设备中的静态随机存储器而无需修改其他电路逻辑。
[0242]
控制电路102包括控制器103,控制器103是软错误处理系统的核心,负责生成第一读地址、第一写地址、第一读使能信号、第一写使能信号等,控制使能选择器mux1、地址选择器mux2、读数据选择器mux3和写数据选择器mux4的选择,以及控制数据校正处理流程。
[0243]
控制电路102还包括m个错误校验器104,分别为错误校验器104_1、

错误校验器104_m。例如,错误校验器104为secded校验器,用于对读取的数据行或中间测试数据行进行单错校正双错检测,输出校验结果和指示信号,例如指示信号包括第一标志信号和第二标志信号。
[0244]
例如,控制电路102还包括m个错误校验码生成器105,分别为错误校验码生成器105_1、

错误校验码生成器105_m,分别用于生成待写入的m个第二数据行的错误校验数据,该过程与采用的错误校验方法的常规生成校验码流程相同。
[0245]
例如,第一读地址、第一写地址、第一读使能信号、第一写使能信号是由控制器103生成的,第二读地址、第二写地址、第二读使能信号、第二写使能信号是由外部输入的读取
请求或写入请求确定。
[0246]
例如当接收到数据读取请求时,控制器103控制地址选择器mux2和使能选择器mux1分别选择第二读地址和第二读使能,第二读地址和第二读使能基于数据读取请求确定。例如当接收到数据写入请求时,控制器103控制地址选择器mux2和使能选择器mux1分别选择第二写地址和第二写使能,第二写地址和第二写使能基于数据写入请求确定。例如当执行数据校正相关流程时,控制器103控制地址选择器mux2和使能选择器mux1分别选择第一读地址和第一读使能。
[0247]
例如,在读取目标行组对应的奇偶校验存储行时,由控制器103生成第一读地址(例如数据存储器结构如图6a所示时,第一读地址为n+rdaddr[s-1:f])和第一读使能信号,从数据存储器中读取目标参考奇偶校验向量;例如,在计算检测奇偶校验向量时,由控制器103生成第一读地址和第一读使能信号,依次读取数据存储器中除目标行以外的n-1个数据行和对应的错误校验数据;例如,在更新奇偶校验存储行时,由控制器103生成第一写地址(例如n+wraddr[s-1:f],wraddr[s-1:f]表示目标行的地址序号中第f位至s-1位的数据)和第一写使能信号,向数据存储器写入目标参考奇偶校验向量;例如写入目标数据时,由控制器103生成第二写地址(例如目标行的地址)和第二写使能信号,向数据存储器写入待写入数据行,这里,待写入数据行包括目标数据和m个错误校验数据,例如,目标数据和m个错误校验数据按照数据存储器的存储结构排列得到待写入数据行,例如,以图6a所示的存储结构排列。
[0248]
例如,当接收到数据读取请求时,读数据选择器mux3选择读取的数据行分别送入m个错误校验器104进行错误校验,当执行试错组合测试时,读数据选择器mux3选择中间测试数据行送入对应的错误校验器104进行错误校验。
[0249]
例如,当接收到数据写入请求时,写数据选择器mux4选择待写入数据行写入数据存储器。例如,当更新奇偶校验存储行时,写数据选择器mux4选择目标参考奇偶校验向量行写入数据存储器。
[0250]
下面结合图12和图6a,具体说明本公开至少一实施例提供的软错误系统的处理过程。
[0251]
例如,当接收到数据读取请求时,控制器103控制地址选择器mux2和使能选择器mux1分别选择第二读地址(例如为目标行的地址)和第二读使能,读取数据存储器中的目标行中的m位数据和m*p位错误校验数据,m位数据和m*p位错误校验数据按图6a所示的m个列组的位置关系组成m个第一数据行,分别为第一数据行1、...第一数据行m,控制器103控制读数据选择器mux3将读数据端口输出的m个第一数据行分别送入m个错误校验器104,进行第一校验。
[0252]
例如,对于错误校验器104_1,若错误校验器104_1在错误校验过程中判断第一数据行1中至多a-1位存在错误,例如第一数据行1不存在错误,错误校验器104_1输出第一标志信号(例如0)作为指示信号1至控制器103,表示没有任何数据位错误,错误校验器104_1将第一数据行1作为校验结果1发送给控制器103,控制器103暂存该第一数据行1;例如,第一数据行1存在1位至a-1位错误,错误校验器104_1输出第一标志信号(例如1)作为指示信号1至控制器103,表示存在错误但已校正,错误校验器104_1对第一数据行1进行校正处理,将校正结果作为校验结果1输出至控制器103,控制器103暂存该校正结果。例如,若m个错误
校验器104均输出第一标志信号,表明m个列组均没有任何数据位错误或者列组中仅有至多a-1位数据错位但已经校正,控制器103随即转发输出读取数据,例如,将m个校验结果按存储结构排列得到读取数据,并将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0253]
若任一个错误校验器104在错误校验过程中判断接收到的第一数据行中有a位存在错误,错误校验方法无法校正得到正确的数据,该错误校验器将接收到的第一数据行作为校验结果发送至控制器103,并输出第二标志信号(例如2)作为指示信号至控制器103,表示有a位数据错误且无法校正,需要开启a位错误校正流程。a位错误校正流程具体如下。
[0254]
首先,控制器103依次读取数据存储器的目标行组中除目标行以外的r-1个数据行(此时目标行的数据经由读数据端口的分支已输入且保存在控制器103中,所以不再需要读取),每个数据行包括m位数据和该m位数据对应的m*p位错误校验数据,控制器103根据公式3计算检测奇偶校验向量,这里不再赘述。
[0255]
之后,控制器103读取目标行组对应的奇偶校验存储行中存储的目标参考奇偶校验向量,例如此时第一读地址为n+rdaddr[s-1:f],将检测奇偶校验向量与目标参考奇偶校验向量按位进行比较,得到奇偶校验结果,具体过程如前所述,这里不再赘述。
[0256]
之后,控制器103根据奇偶校验结果,例如,将按位异或计算得到的运算结果按m个列组的位置关系进行划分,得到m个校验结果向量,每个校验结果向量包括c+p位,分别对应c位数据和p位错误校验数据。
[0257]
之后,控制器103确定m个第一数据行中出现a位错误的q个第一数据行,对于其他的m-q个第一数据行不执行操作,参考如前所述的过程得到m-q个第一数据行分别对应的m-q个第四校验结果,对q个第一数据行执行以下a校正过程。
[0258]
例如,针对q个第一数据行中的一个被选择第一数据行,确定被选择第一数据行中存在错误的e个潜在出错位,例如根据被选择第一数据行对应的校验结果向量中的1的位置确定潜在出错位。若e小于等于a-1或大于预设校正阈值e,表明无法校正该数据,控制器103停止所有校正流程,直接返回错误数据,并将错误指示信号设置为1,有效指示信号设置为0。这种情况下需要读取下一级的备份数据或者产生中断上报软件处理,这里不再赘述。
[0259]
若e大于a-1且小于等于预设校正阈值,执行试错组合测试,例如在试错组合测试过程中可以采用距离优先的遍历方式,优先选择数据位距离较小的校正组合进行遍历,试错测试具体过程参考如前所述的内容,这里不再赘述。
[0260]
若任意一个校正组合对应的中间测试数据行输入错误校验器104进行校验后,错误校验器104输出的指示信号为第一标志信号(例如0或1),表示得到了正确数据,控制器103将来自错误校验器104输出的校验结果记录下来,等待其他出现a位错误的第一数据行的校正流程完成。若q个第一数据行均得到了正确数据,此时完成目标数据的a位错误校正,控制器103将m个列组对应的正确的校验结果,也即q个第三校验结果和m-q个第四校验结果,按数据存储器的存储结构,例如图6a所示的存储结构组合成结果数据行,控制器103将结果数据行作为读取数据输出,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0261]
若某个第一数据行的x个校正组合遍历完成后仍没有得到正确数据,则表示该第一数据行校验失败,控制器103停止所有校正流程,直接返回错误数据,并将错误指示信号
设置为1,有效指示信号设置为0。这种情况下需要读取下一级的备份数据或者产生中断上报软件处理,这里不再赘述。
[0262]
例如,当接收到数据写入请求时,首先,解析数据写入请求得到目标数据和目标行地址,目标数据按m个列组的位置关系划分成m个第二数据行,分别输入m个错误校验码生成器105(也即错误校验码生成器105_1、....、错误校验码生成器105_m)生成m个第一校验数据,将m个第一校验数据和目标数据按图6a所示的存储结构拼接后形成待写入数据行。
[0263]
之后,控制器103控制写数据选择器mux4将待写入数据行写入数据存储器中的目标行,m个错误校验码生成器105还把待写入数据行发送给控制器103;同时,控制器103确定目标行对应的目标行组,读取目标行组对应的奇偶校验存储行中存储的当前奇偶校验向量。
[0264]
之后,控制器103将待写入数据行和当前奇偶校验向量进行异或运算,得到目标参考奇偶校验向量,并控制写数据选择器mux4将目标参考奇偶校验向量写入数据存储器中目标行组对应的奇偶校验存储行。
[0265]
本公开至少一实施例提供的软错误处理系统可以校正数据存储器中可能出现的多位软错误,降低芯片出错的概率,增加系统稳定性;在数据存储器读取数据时即可实现校正多位软错误,降低因数据存储器出错无法校正带来的数据恢复的延时和功耗开销,提高了系统性能;校正多位软错误的数据存储器开销小于其他解决方案,节约了芯片面积和成本;此外,本公开提供的技术方案适应不同芯片在面积和性能上的要求,根据不同芯片要求选择相应的列组个数m和行组个数n即可实现。
[0266]
图13a和图13b为本公开至少一实施例提供的数据存储器的结构图。
[0267]
如图13a所示,数据存储器中的存储阵列包括64个128位数据,也即存储阵列包括64行128列数据,数据存储器的地址宽度s=6,数据宽度m=128。
[0268]
例如,128列被划分成2个列组,也即m=2,因此每行的每个列组包含64比特数据。例如,在该实施例中错误校验方法采用secded方法,也即a=2,当然,本公开不限于此。
[0269]
例如,为每个列组增加8个错误校验位,总共2*8=16个错误校验位,即图13a中的列128~143。因此每行总共有128+16=144位数据。例如,列组1包含偶数列,比如第0、2、4、

、142列,列组2包含奇数列,比如第1、3、5、

、143列。
[0270]
例如,64行被划分成2个行组,即n=2,因此每个行组包含32行(f=5)。为每个行组增加一个奇偶校验存储行,因此总共增加两个奇偶校验存储行,即图13a-13b中的行64和行65。例如,行组1对应行64的奇偶校验存储行,行组2对应行65的奇偶校验存储行。
[0271]
如图13b所示,以图13a中的行组2为例,行组2包括的32行数据可以按列组为单位,划分成图13b所示的2个等效阵列。
[0272]
例如,每个等效阵列包括32行数据,分别为数据存储器中的第32、33、...、63行,每行数据包括64位数据和8个错误校验位。每个等效阵列还包括一个列奇偶校验行,等效阵列(1)中的列奇偶校验行是数据存储器的第65行中与列组1对应的64+8位,等效阵列(2)中的列奇偶校验行是数据存储器的第65行中与列组2对应的64+8位。两个等效阵列中的列奇偶校验行用于存储与等效阵列的64列数据以及8列错误校验数据对应的具有72位的奇偶校验数据。
[0273]
在图13a所示的存储结构中,存储开销根据公式2计算为16.02%。由于m=2,可以
实现同一行上最多4个软错误的及时校正。但本公开不限于此,可以根据对芯片面积和延时的需求,改变行组和列组的大小(n和m的设置),实现芯片面积、稳定性和性能的平衡。
[0274]
图14a-图14g为本公开至少一实施例提供的软错误示意图。在这些实施例中,数据存储器的结构如图13a-13b所示。下面以图14a-图14g所示的软错误为例,结合图12所示的软错误处理系统,具体说明在各种软错误情况下的处理过程。
[0275]
例如,图14a为垂直方向放射性粒子引起的软错误。如图14a所示,假设局部垂直方向上出现3个比特的软错误,3个比特分布在存储阵列的33~35行中的同一列(列序号为5)上。
[0276]
如图14a所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,根据图13a和图13b的列组关系,144位数据分成两个第一数据行(64位数据+8位错误校验数据),分别为对应列组1的第一数据行1和对应列组2的第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。第一数据行1中没有错误,将第一数据行1作为校验结果1发送给控制器103,指示信号1为0表示没有错误;第一数据行2中仅有一位出现错误,此时错误校验器可以直接进行校正,并将校正结果作为校验结果2发送给控制器103,指示信号2为1表示得到了正确数据。控制器103监测到接收的两个指示信号均不为2,表明没有任何列组出现2位软错误,控制器103立即将两个错误校验器104输出的两个校验结果按存储结构拼接为结果数据行并作为读取数据输出,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0277]
该读取过程没有额外的延时消耗,对芯片系统的性能和功耗没有额外影响。
[0278]
需要说明的是,在该实施例中是以垂直方向上连续的三个存储单元出现软错误为例进行描述,当然,也可以扩展到垂直方向上任意位置存储单元的软错误,处理方式完全一致,这里不再赘述。
[0279]
例如,图14b为对角线方向放射性粒子引起的软错误。如图14b所示,假设局部对角线方向上出现3个比特的软错误,3个比特分布在存储阵列的33~35行的不同列(4,5,6列)上。
[0280]
如图14b所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,根据图13a和图13b的列组关系,144位数据分成两个第一数据行(64位数据+8位错误校验数据),分别为对应列组1的第一数据行1和对应列组2的第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。此时,第一数据行1中仅有一位出现错误,可以直接进行校正,第一数据行2中没有错误,参考图14a所述的过程进行校正、拼接,输出读取数据,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0281]
虽然该实施例中有3个潜在出错位(4,5,6列),但是因为读取的数据行中只有1位软错误,因此不会启动2位错误的校正过程。该读取过程没有额外的延时消耗,对芯片系统的性能和功耗没有额外影响。
[0282]
需要说明的是,在该实施例中是以对角线方向上连续的三个存储单元出现软错误为例进行描述,当然,也可以扩展到对角线方向上任意位置存储单元的软错误,处理方式完全一致,这里不再赘述。
[0283]
例如,图14c为水平方向放射性粒子引起的软错误。如图14c所示,假设局部水平方
向上出现2个比特的软错误,2个比特分布在同一行的不同列(4,5)上。
[0284]
如图14c所示,目标行的地址为34,参考如前所述的内容,首先从数据存储器101中读取地址34中的存储的数据,得到第一数据行1和第一数据行2,两个第一数据行分别被送入两个错误校验器104进行第一校验。由于第一数据行1中有1位出现错误,第一数据行2中有1位出现错误,此时错误校验器104可以直接进行校正,两个错误校验器104将校正结果作为校验结果发送给控制器103,控制器103监测到接收的两个指示信号均不为2,表明没有任何列组出现2位软错误,控制器103立即将两个错误校验器104输出的两个校验结果按存储结构拼接为结果数据行并作为读取数据输出,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0285]
该读取过程没有额外的延时消耗,对芯片系统的性能和功耗没有额外影响。
[0286]
需要说明的是,在该实施例中是以水平方向上连续的两个存储单元出现软错误为例进行描述,当然,也可以扩展到水平方向上任意位置存储单元的软错误,只要2个软错位分别属于2个不同的列组,处理方式完全一致,这里不再赘述。
[0287]
例如,图14d为水平方向放射性粒子引起的软错误。如图14d所示,假设局部水平方向上出现3个比特的软错误,3个比特分布在同一行的不同列(4,5,6)上。
[0288]
如图14d所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,参考如前所述的过程得到第一数据行1和第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。
[0289]
第一数据行1中仅有一位出现错误,此时错误校验器可以直接进行校正,并将校正结果作为校验结果1发送给控制器103,指示信号1为1表示得到了正确数据。
[0290]
第一数据行2中有2位软错误,错误校验器无法对该错误立即进行校正,此时指示信号2为2,表示第一数据行2中出现2位软错误,校验结果2为第一数据行2的原始数据。
[0291]
控制器103监测到指示信号1为1,指示信号2为2,暂存校验结果1,对第一数据行2开启2位软错误校正流程。
[0292]
首先,由于目标行的地址为34,确定目标行所属行组为行组2,控制器103按顺序依次读取数据存储器101的行组2中除地址34以外的32、33、35~63行(目标行的数据已经读取并保存在控制器中,因此不需要再次读取),并将读取的31个数据行进行累积异或运算得到检测奇偶校验向量。
[0293]
之后,控制器103读取行组2对应的奇偶校验存储行(行65)中存储的参考奇偶校验向量,并将参考奇偶校验向量与检测奇偶校验向量进行异或运算,得到奇偶校验结果为144’b00011100...00,也即比特3,4和5出现了错误。
[0294]
之后,根据图13a所示的列组位置关系,确定比特4属于列组1,比特3和5属于列组2,由于已知列组2对应的第一数据行2中存在2位软错误,因此控制器103只需检查列组2对应的校验结果向量,也即由参考奇偶校验向量中的奇数列组成的向量。
[0295]
例如,控制器103发现校验结果向量中有两个比特为1,也即第一数据行2中存在2个潜在出错位,即比特3和5,表明这两列中出现了错误,于是将第一数据行2中的比特3和5进行翻转,例如第一数据行2中比特3和5分别为1和0,翻转后比特3和5分别变成0和1,从而得到中间测试数据行。
[0296]
之后,控制器103将翻转后的中间测试数据行送入对应的错误校验器104中进行校
验,此时校验通过,错误校验器104输出的指示信号2为0。
[0297]
之后,控制器103检测到指示信号2为0,表明已经得到正确的数据,由于之前已得到第一数据行1的正确数据,控制器103立即返回正确数据,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0298]
该读取过程可校正3位软错误,整个过程引入31+1+1=33个时钟周期的延时消耗。
[0299]
需要说明的是,在该实施例中是以水平方向上3个连续比特的软错误为例进行描述,当然,也可以扩展到水平方向上任意位置的3个比特的软错误,只要3个软错位分别属于2个不同的列组,处理方式完全一致,这里不再赘述。
[0300]
例如,图14e为水平方向放射性粒子引起的软错误。如图14e所示,假设局部区域出现4个比特的软错误,4个比特分布在同一行的不同列(3,4,5,6)上。
[0301]
如图14e所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,参考如前所述的过程得到第一数据行1和第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。
[0302]
第一数据行1中有2位软错误(比特4和比特6),错误校验器无法对该错误立即进行校正,此时指示信号1为2,表示第一数据行1中出现2位软错误,校验结果1为第一数据行1的原始数据。
[0303]
第一数据行2中有2位软错误(比特3和比特5),错误校验器无法对该错误立即进行校正,此时指示信号2为2,表示第一数据行2中出现2位软错误,校验结果2为第一数据行2的原始数据。
[0304]
控制器103监测到两个指示信号为2,表示读取的两个第一数据行中均出现2位软错误,此时控制启动2位错误校正流程。
[0305]
首先,参考图14d所述的相关内容,得到奇偶校验结果。例如,奇偶校验结果为144’b00011110...00,也即比特3,4,5和6出现了错误。
[0306]
之后,根据图13a所示的列组位置关系,确定比特4和比特6属于列组1,比特3和5属于列组2,根据指示信号,已知第一数据行1和第一数据行2中均存在2位软错误,因此控制器103并行执行以下过程(1)和(2):
[0307]
(1)根据校验结果向量1(参考奇偶校验向量中的偶数列组成的向量),发现比特4和6为1,表明这两列中出现了错误,于是将第一数据行1中的比特4和6进行翻转,例如第一数据行1中比特4和6分别为1和0,翻转后比特4和6分别变成0和1,从而得到中间测试数据行;控制器103将翻转后的中间测试数据行送入对应的错误校验器104(例如错误校验器104_1)中进行校验,此时校验通过,错误校验器104输出的指示信号1为0,表示得到了正确的数据。
[0308]
(2)根据校验结果向量2(参考奇偶校验向量中的奇数数列组成的向量),发现比特3和5为1,表明这两列中出现了错误,于是将第一数据行2中的比特3和5进行翻转,例如第一数据行2中比特3和5分别为0和1,翻转后比特3和5分别变成1和0,从而得到中间测试数据行;控制器103将翻转后的中间测试数据行送入对应的错误校验器104(例如错误校验器104_2)中进行校验,此时校验通过,错误校验器104输出的指示信号2为0,表示得到了正确的数据。
[0309]
之后,控制器103检测到指示信号1和指示信号2均为0,表明已经得到正确的数据,
控制器103立即返回正确数据,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0310]
该读取过程可校正4位软错误,整个过程引入31+1+1=33个时钟周期的延时消耗。
[0311]
需要说明的是,在该实施例中是以水平方向上4个连续比特的软错误为例进行描述,当然,也可以扩展到水平方向上任意位置的4个比特的软错误,只4个软错位中两两分别属于2个不同的列组,处理方式完全一致,这里不再赘述。
[0312]
例如,图14f为多方向上的放射性粒子引起的软错误。如图14f所示,假设两个局部位置各自出现了3个软错误,总共6个位的软错误分布在数据存储器的行32~34以及列2~7上。此时,在目标行(行34)中,列组1出现了1位软错误,而列组2出现了2位软错误,其他行(例如行33)出现的软错误导致列组2对应的校验结果向量出现了3位错误(比特3,5和7)。
[0313]
如图14f所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,参考如前所述的过程得到第一数据行1和第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。
[0314]
第一数据行1中仅有一位出现错误(比特4),此时错误校验器可以直接进行校正,并将校正结果作为校验结果1发送给控制器103,指示信号1为1表示得到了正确数据。
[0315]
第一数据行2中有2位软错误(比特3和5),错误校验器无法对该错误立即进行校正,此时指示信号2为2,表示第一数据行2中出现2位软错误,校验结果2为第一数据行2的原始数据。
[0316]
控制器103监测到指示信号1为1,指示信号2为2,暂存校验结果1,对第一数据行2开启2位软错误校正流程。
[0317]
首先,参考图14d所述的相关内容,得到奇偶校验结果。例如,奇偶校验结果为144’b00111111...00,也即比特2,3,4,5,6和7出现了错误。
[0318]
之后,根据图13a所示的列组位置关系,确定比特2、4和6属于列组1,比特3、5和7属于列组2,由于已知列组2对应的第一数据行2中存在2位软错误,因此控制器103只需检查列组2对应的校验结果向量,也即由参考奇偶校验向量中的奇数列组成的向量。
[0319]
之后,控制器103发现校验结果向量中有三个比特为1,也即第一数据行中存在3个潜在出错位,即比特3、5和7,表明这几列中出现了错误。但是根据第一校验结果(指示信号1和2),第一数据行2中只有2位出错,所以需要遍历由比特3、5和7中的任意两位构成的3种校正组合,执行试错组合测试。依据距离优先遍历原则,六个校正组合的遍历顺序为:(3,5),(5,7),(3,7),最多需要消耗3个时钟周期。下面详细说明试错组合测试:
[0320]
针对比特3和5构成的校正组合:将第一数据行2中比特3和5进行翻转,比如第一数据行2中比特3和5分别为1和0,翻转后比特3和5分别变成0和1,由此得到中间测试数据行;因为实际的出错比特是5和7,翻转比特3和5后,比特5变成正确的数据,但是比特3现在变成了错误的数据,加上原本出错的比特7,此时中间测试数据行中仍有2个错误比特。因此,控制器103将中间测试数据行送入错误校验器104中进行校验,此时输出的校验结果信号仍为2(表示有两个比特错误不可校正)。控制器103监测到来自错误校验器104的指示信号为2,表明校验结果并不是正确数据,于是继续尝试下一种校正组合。
[0321]
针对比特5和7构成的校正组合:与上述过程相似,因为第一数据行2中出现软错误的比特正是比特5和7,此时得到的中间测试数据行是正确数据,错误校验器104的指示信号
2为0。控制器103监测到来自错误校验器104的指示信号2为0,表明错误校验器104输出的校验结果2是正确数据,于是停止校正流程,不再尝试其他未遍历过的组合。
[0322]
之后,控制器103检测到指示信号1和指示信号2均为0,表明已经得到正确的数据,控制器103立即返回正确数据,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0323]
该读取过程可校正4位软错误,整个过程引入31+1+2=34个时钟周期的延时消耗。
[0324]
需要说明的是,需要说明的是,在该实施例中是由于非目标行中的软错误导致出现多个潜在出错位,当然,非目标行中的软错误也可以出现的更多,只要不大于预设校正阈值e即可。
[0325]
例如,图14g为多方向上的放射性粒子引起的软错误。如图14g所示,假设水平方向和对角线方向的两束放射性粒子的影响,导致两个局部位置各自出现了水平方向3个和对角线方向4个软错误,总共7个软错误分布在数据存储器的行32~35以及列2~4、7~10上。此时,与图14g所示的实施例类似,列组1和列组2都出现了2位软错误,其他行(例如行32,33和35)出现的软错误导致两个列组的校验结果向量中出现了多位错误(比特7,8和10)。
[0326]
如图14g所示,目标行的地址为34,首先从数据存储器101中读取地址34中的128位数据和2个8位错误校验数据,参考如前所述的过程得到第一数据行1和第一数据行2。两个第一数据行分别被送入两个错误校验器104进行第一校验。
[0327]
第一数据行1中有2位软错误(比特2和比特4),错误校验器无法对该错误立即进行校正,此时指示信号1为2,表示第一数据行1中出现2位软错误,校验结果1为第一数据行1的原始数据。
[0328]
第一数据行2中有2位软错误(比特3和比特9),错误校验器无法对该错误立即进行校正,此时指示信号2为2,表示第一数据行2中出现2位软错误,校验结果2为第一数据行2的原始数据。
[0329]
控制器103监测到两个指示信号为2,表示读取的两个第一数据行中均出现2位软错误,此时控制启动2位错误校正流程。
[0330]
首先,参考图14d所述的相关内容,得到奇偶校验结果。例如,奇偶校验结果为144’b00111001111...00,也即比特2~4、7~10出现了错误。
[0331]
之后,根据图13a所示的列组位置关系,确定比特2、4、8和10属于列组1,比特3、7、9属于列组2,根据指示信号,已知第一数据行1和第一数据行2中均存在2位软错误,因此控制器103并行执行以下过程(1)和(2):
[0332]
(1)根据校验结果向量1(参考奇偶校验向量中的偶数列组成的向量),发现比特2、4、8和10为1,表明这四列中出现了错误。但是根据第一校验结果(指示信号1),第一数据行1中只有2位出错,所以需要遍历由比特2、4、8和10中的任意两位构成的6种校正组合,执行试错组合测试。依据距离优先遍历原则,六个校正组合的遍历顺序为(2,4),(4,8),(8,10),(2,8),(4,10)和(2,10)。
[0333]
针对比特2和4构成的校正组合:参考如前所述的过程进行翻转处理和校验,因为第一数据行1中出现软错误的是比特2和4,此时得到的中间测试数据行是正确数据,错误校验器104的指示信号1为0。控制器103监测到对应的错误校验器104的指示信号1为0,表明错误校验器104输出的校验结果1是正确数据,于是停止针对第一数据行1的校正流程,不再尝
试其他未遍历过的组合。
[0334]
(2)根据校验结果向量2(参考奇偶校验向量中的奇数列组成的向量),发现比特3、7、9为1,表明这三列中出现了错误。但是根据第一校验结果(指示信号2),第一数据行2中只有2位出错,所以需要遍历由比特3、7、9中的任意两位构成的3种校正组合,执行试错组合测试。依据距离优先遍历原则,六个校正组合的遍历顺序为(7,9),(3,7)和(3,9)。
[0335]
针对比特7和9构成的校正组合:与上述过程相似,因为第一数据行2中出现软错误的比特是比特3和9,翻转后比特9变成正确值,而原来正确的比特7变成了错误值,加上本来错误的比特3,因此翻转后中间测试数据行中仍然有两个软错误位,因此对应的错误校验器输出的指示信号2为2。控制器103监测到对应的错误校验器104的指示信号为2,表明校验结果并不是正确数据,于是继续尝试下一种校正组合。
[0336]
针对比特3和7构成的校正组合:与上述过程相似,因为第一数据行2中出现软错误的比特是比特3和9,翻转后比特3变成正确值,而原来正确的比特7变成了错误值,加上本来错误的比特9,因此翻转后中间测试数据行中仍然有两个软错误位,因此对应的错误校验器输出的指示信号2为2。控制器103监测到对应的错误校验器104的指示信号为2,表明校验结果并不是正确数据,于是继续尝试下一种校正组合。
[0337]
针对比特3和9构成的校正组合:与上述过程相似,因为第一数据行2中出现软错误的比特正是比特3和9,此时得到的中间测试数据行是正确数据,错误校验器104的指示信号2为0。控制器103监测到来自错误校验器104的指示信号2为0,表明错误校验器104输出的校验结果2是正确数据,于是停止校正流程,不再尝试其他未遍历过的组合。
[0338]
之后,控制器103检测到指示信号1和指示信号2均为0,表明已经得到正确的数据,控制器103立即返回正确数据,将错误指示信号设置为0,有效标志信号设置为1,结束本轮读取操作。
[0339]
该读取过程可校正4位软错误,整个过程引入31+1+3=35个时钟周期的延时消耗。
[0340]
在图14f和图14g所示的实施例中,采用距离优先的遍历方法可以减少校正流程,减少延时消耗。
[0341]
与上述的数据读取方法相对应,本公开至少一实施例还提供一种数据读取装置,图15为本公开至少一实施例提供的一种数据读取装置的示意性框图。
[0342]
例如,数据读取装置应用于数据存储器,关于数据存储器的相关内容可以参考前述数据读取方法中数据存储器的相关介绍,重复之处不再赘述。
[0343]
如图15所示,数据读取装置200包括:第一校验单元201、确定单元202、第二校验单元203、校正单元204和输出单元205。
[0344]
第一校验单元201,配置为利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果。
[0345]
确定单元202,配置为响应于第一校验结果指示不能完全校正目标行出现的错误,确定目标行所属的目标行组。
[0346]
第二校验单元203,配置为利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果。
[0347]
校正单元204,配置为结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果,其中,第二校验结果的校正位数量大于错误校验方法能够校正的最大错误校正
位数。
[0348]
输出单元205,配置为将第二校验结果作为读取结果并输出。
[0349]
例如,第一校验单元201、确定单元202、第二校验单元203、校正单元204和输出单元205可以是专用硬件器件,用来实现如上所述的第一校验单元201、确定单元202、第二校验单元203、校正单元204和输出单元205的一些或全部功能。例如,第一校验单元201、确定单元202、第二校验单元203、校正单元204和输出单元205可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本技术实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。
[0350]
需要说明的是,第一校验单元201用于实现图5所示的步骤s10,确定单元202用于实现图5所示的步骤s20,第二校验单元203用于实现图5所示的步骤s30,校正单元204用于实现图5所示的步骤s40,输出单元205用于实现图5所示的步骤s50。从而关于第一校验单元201的具体说明可以参考上述数据读取方法的实施例中图5所示的步骤s10的相关描述,关于确定单元202的具体说明可以参考上述数据读取方法的实施例中图5所示的步骤s20的相关描述,关于第二校验单元203的具体说明可以参考上述数据读取方法的实施例中图5所示的步骤s30的相关描述,关于校正单元204的具体说明可以参考上述数据读取方法的实施例中图5所示的步骤s40的相关描述,关于输出单元205的具体说明可以参考上述数据读取方法的实施例中图5所示的步骤s50的相关描述。此外,数据读取装置200可以实现与前述数据读取方法相似的技术效果,在此不再赘述。
[0351]
与上述的数据写入方法相对应,本公开至少一实施例还提供一种数据写入装置,图16为本公开至少一实施例提供的一种数据写入装置的示意性框图。
[0352]
例如,数据写入装置用于向数据存储器写入数据,关于数据存储器的相关内容可以参考前述数据读取方法中数据存储器的相关介绍,重复之处不再赘述。
[0353]
例如,如图16所示,数据写入装置300包括:第一校验数据生成单元301、第二校验数据生成单元302。
[0354]
第一校验数据生成单元301,配置为将待写入到存储阵列的n行中的目标行的目标数据按m个列组的位置关系划分为m个第二数据行,并且基于错误校验方法,生成m个第二数据行分别对应的m个错误校验数据,其中,每个错误校验数据用于对对应的第二数据行利用错误校验方法进行校验,每个第二数据行包括c位数据。
[0355]
第二校验数据生成单元302,配置为基于目标数据,利用奇偶校验方法得到目标行所属的目标行组对应的目标参考奇偶校验向量,其中,目标参考奇偶校验向量用于对目标行组包括的r行数据的m列中每列进行奇偶校验。
[0356]
例如,第一校验数据生成单元301、第二校验数据生成单元302可以是专用硬件器件,用来实现如上所述的第一校验数据生成单元301、第二校验数据生成单元302的一些或全部功能。例如,第一校验数据生成单元301、第二校验数据生成单元302可以是一个电路板或多个电路板的组合,用于实现如上所述的功能。在本技术实施例中,该一个电路板或多个电路板的组合可以包括:(1)一个或多个处理器;(2)与处理器相连接的一个或多个非暂时的存储器;以及(3)处理器可执行的存储在存储器中的固件。
[0357]
需要说明的是,第一校验数据生成单元301用于实现图9所示的步骤s60和s70,第
二校验数据生成单元302用于实现图9所示的步骤s80。从而关于第一校验数据生成单元301的具体说明可以参考上述数据写入方法的实施例中图9所示的步骤s60和s70的相关描述,关于第二校验数据生成单元302的具体说明可以参考上述数据写入方法的实施例中图9所示的步骤s80的相关描述。此外,数据写入装置300可以实现与前述数据写入方法相似的技术效果,在此不再赘述。
[0358]
对于本公开,还有以下几点需要说明:
[0359]
(1)本公开实施例附图只涉及到与本公开实施例涉及到的结构,其他结构可参考通常设计。
[0360]
(2)为了清晰起见,在用于描述本发明的实施例的附图中,层或结构的厚度和尺寸被放大。可以理解,当诸如层、膜、区域或基板之类的元件被称作位于另一元件“上”或“下”时,该元件可以“直接”位于另一元件“上”或“下”,或者可以存在中间元件。
[0361]
(3)在不冲突的情况下,本公开的实施例及实施例中的特征可以相互组合以得到新的实施例。
[0362]
以上所述仅为本公开的具体实施方式,但本公开的保护范围并不局限于此,本公开的保护范围应以所述权利要求的保护范围为准。

技术特征:
1.一种数据读取方法,应用于数据存储器,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述数据读取方法包括:利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;将所述第二校验结果作为读取结果;其中,n、m、n均为正整数。2.根据权利要求1所述的数据读取方法,其中,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据存储器为所述m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述n个错误校验存储行中的每个包括p个错误校验位,所述n个错误校验存储行中第i行的p个错误校验位用于存储所述对应的列组中的第i行包括的c位数据对应的错误校验数据;所述数据存储器为所述n个行组和所述m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与所述存储阵列的m列一一对应的m位以及与所述m个第一校验阵列的m*p列一一对应的m*p位,所述奇偶校验存储行用于存储与所述奇偶校验存储行对应的行组相对应的参考奇偶校验向量,所述参考奇偶校验向量的m位对应于所述对应的行组的m列,所述参考奇偶校验向量的m*p位对应于所述m个第一校验阵列中与所述对应的行组属于同一行的m*p列,其中,m、c、p、i均为正整数。3.根据权利要求2所述的数据读取方法,其中,响应于m大于1,所述m个列组分别包括的c列彼此交叉排列,以使得所述存储阵列中位于同一行的相邻数据位属于不同列组。4.根据权利要求2所述的数据读取方法,其中,所述第二校验结果的校正位数量等于所述错误校验方法能够检测的最大错误检测位数的m倍。5.根据权利要求2所述的数据读取方法,其中,利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果,包括:按照所述m个列组的位置关系,读取所述目标行中各个列组存储的c位数据和所述各个列组分别对应的p位错误校验数据,以得到分别对应于所述m个列组的m个第一数据行;利用所述错误校验方法,对所述m个第一数据行分别进行所述第一校验,得到所述第一校验结果。6.根据权利要求5所述的数据读取方法,其中,利用奇偶校验方法,对从所述存储阵列
的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果,包括:针对所述目标行组包括的r行数据,利用奇偶校验方法,对所述r行数据的m列以及所述r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;将所述检测奇偶校验向量与所述目标行组对应的目标参考奇偶校验向量按位进行比较,确定所述检测奇偶校验向量与所述目标参考奇偶校验向量之间的多个差异位;根据所述多个差异位得到所述奇偶校验结果。7.根据权利要求6所述的数据读取方法,其中,将所述检测奇偶校验向量与所述目标参考奇偶校验向量按位进行比较,包括:将所述检测奇偶校验向量与所述目标参考奇偶校验向量进行按位异或计算。8.根据权利要求6所述的数据读取方法,其中,响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,所述第一校验结果至少包括所述m个第一数据行中出现a位错误的q个第一数据行,结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,包括:针对所述q个第一数据行中的每个被选择第一数据行:根据所述奇偶校验结果,确定所述被选择第一数据行中存在错误的e个潜在出错位,其中,所述e个潜在出错位的位置为所述多个差异位中属于所述被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果;根据所述q个第一数据行分别对应的q个第三校验结果得到所述第二校验结果,其中,a为所述错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。9.根据权利要求8所述的数据读取方法,其中,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,包括:确定由所述e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对所述至少一个校正组合进行所述试错组合测试;其中,所述试错组合测试包括依序针对每个被选择校正组合进行试错测试,所述试错测试包括:对所述被选择第一数据行中与所述被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到所述被选择第一数据行对应的中间测试数据行;利用所述错误校验方法,对所述中间测试数据行进行所述第一校验,响应于所述中间测试数据行中至多有a-1位存在错误,对所述中间测试数据行进行处理,得到所述第三校验结果,并停止所述试错组合测试,响应于所述中间测试数据行中仍有a位存在错误,对下一个校正组合执行所述试错测试。10.根据权利要求9所述的数据读取方法,其中,所述至少一个校正组合按数据位距离从小到大的顺序依次执行所述试错测试,
每个校正组合的数据位距离根据所述每个校正组合包括的a个潜在出错位之间的距离确定。11.根据权利要求9所述的数据读取方法,其中,响应于所述中间测试数据行中至多有a-1位存在错误,对所述中间测试数据行进行处理,得到所述第三校验结果,并停止所述试错组合测试,包括:响应于所述中间测试数据行不存在错误,将所述中间测试数据行作为所述第三校验结果,并停止所述试错组合测试;响应于所述中间测试数据行中的b位存在错误,利用所述错误校验方法,对所述b位进行校正,将校正结果作为所述第三校验结果,并停止所述试错组合测试,其中,b为正整数且小于等于a-1。12.根据权利要求8所述的数据读取方法,其中,根据所述q个第一数据行分别对应的q个第三校验结果得到所述第二校验结果,包括:确定所述m个第一数据行中除所述q个第一数据行外的m-q个第一数据行分别对应的m-q个第四校验结果;将所述q个第三校验结果和所述m-q个第四校验结果按所述m个列组的位置关系进行排列,得到所述第二校验结果。13.根据权利要求5所述的数据读取方法,还包括:响应于所述第一校验结果指示能完全校正所述目标行出现的错误,将所述第一校验结果作为所述读取结果;其中,利用所述错误校验方法,对所述m个第一数据行分别进行所述第一校验,得到所述第一校验结果,包括:利用所述错误校验方法分别对所述m个第一数据行进行所述第一校验,得到m个校正结果,将所述m个校正结果按所述m个列组的位置关系进行排列,得到所述第一校验结果。14.根据权利要求1-13任一项所述的数据读取方法,其中,所述错误校验方法为单错校正双错检测方法。15.一种数据写入方法,用于向数据存储器写入数据,所述存储器被配置为能够存储n个数据,且所述n个数据中每个的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,所述n*m位的数据阵列在所述数据存储器中对应地存储为n*m位的存储阵列,所述存储阵列的n行被划分为n个行组,每个行组包括r行,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据写入方法包括:将待写入到所述存储阵列的n行中的目标行的目标数据按所述m个列组的位置关系划分为m个第二数据行,其中,每个第二数据行包括c位数据;基于错误校验方法,生成所述m个第二数据行分别对应的m个错误校验数据,其中,每个错误校验数据用于对对应的第二数据行利用所述错误校验方法进行校验;基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。
16.根据权利要求15所述的数据写入方法,其中,所述数据存储器为所述存储阵列中的m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述数据存储器为所述n个行组和所述m个第一校验阵列提供有n个奇偶校验存储行,所述数据写入方法还包括:将所述目标数据写入所述存储阵列中的目标行;将所述m个错误校验数据分别写入对应的第一校验阵列中所述目标行对应的错误校验存储行;将所述目标参考奇偶校验向量写入所述目标行组对应的奇偶校验存储行。17.根据权利要求15所述的数据写入方法,其中,基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,包括;读取所述目标行组对应的奇偶校验存储行中存储的当前参考校验向量,将所述当前参考校验向量与所述目标数据和所述m个错误校验数据进行按位异或运算,以得到所述目标参考奇偶校验向量。18.一种软错误处理系统,包括数据存储器和控制电路,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述控制电路包括控制器和错误校验器,所述错误校验器被配置为,利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;所述控制器被配置为:响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;将所述第二校验结果作为读取结果并输出;其中,n、m、n均为正整数。19.根据权利要求18所述的软错误处理系统,其中,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据存储器为所述m个列组分别提供有m个第一校验阵列,每个第一校验阵列包括与对应的列组中的n行数据一一对应的n个错误校验存储行,所述n个错误校验存储行中的每个包括p个错误校验位,所述n个错误校验存储行中第i行的p个错误校验位用于存储所述对应的列组中的第i行包括的c位数据对应的错误校验数据;所述数据存储器为所述n个行组和所述m个第一校验阵列提供有n个奇偶校验存储行,其中,每个奇偶校验存储行包括与所述存储阵列的m列一一对应的m位以及与所述m个第一
校验阵列的m*p列一一对应的m*p位,所述奇偶校验存储行用于存储与所述奇偶校验存储行对应的行组相对应的参考奇偶校验向量,所述参考奇偶校验向量的m位对应于所述行组的m列,所述参考奇偶校验向量的m*p位对应于所述m个第一校验阵列中与所述行组属于同一行的m*p列,其中,m、c均为正整数。20.根据权利要求19所述的软错误处理系统,其中,响应于m大于1,所述m个列组分别包括的c列彼此交叉排列,以使得所述存储阵列中位于同一行的相邻数据位属于不同列组。21.根据权利要求19所述的软错误处理系统,其中,所述错误校验器的数量为m,所述m个错误校验器被配置为:按照所述m个列组的位置关系,分别接收从所述存储阵列中读取的所述目标行中各个列组存储的c位数据和所述各个列组分别对应的p位错误校验数据,以得到分别对应于所述m个列组的m个第一数据行;利用所述错误校验方法,分别对接收到的第一数据行进行所述第一校验,以得到所述第一校验结果。22.根据权利要求21所述的软错误处理系统,其中,每个错误校验器执行利用所述错误校验方法,对接收到的第一数据行进行所述第一校验,以得到所述第一校验结果时,包括执行以下操作:利用所述错误校验方法,判断是否所述接收到的第一数据行的c+p位中有a位存在错误,其中,a为所述错误校验方法能够检测的最大错误检测位数;响应于所述接收到的第一数据行中的a位存在错误,输出错误校验信号至所述控制器,其中,所述第一校验结果至少包括所述错误校验信号,响应于所述接收到的第一数据行中至多a-1位存在错误,对所述接收到的第一数据行进行校正处理,将校正结果输出至所述控制器,其中,所述第一校验结果至少包括所述校正结果。23.根据权利要求21所述的软错误处理系统,其中,所述控制器执行利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果时,包括执行以下操作:针对所述目标行组包括的r行数据,利用奇偶校验方法,对所述r行数据的m列以及所述r行数据对应的r行m*p列错误校验数据中的每一列的数据位进行奇偶校验运算,得到具有m+m*p位的检测奇偶校验向量;从所述目标行组对应的奇偶校验存储行读取所述目标行组对应的目标参考奇偶校验向量;将所述检测奇偶校验向量与所述目标参考奇偶校验向量按位进行比较,确定所述检测奇偶校验向量与所述目标参考奇偶校验向量之间的多个差异位;根据所述多个差异位得到所述奇偶校验结果。24.根据权利要求23所述的软错误处理系统,其中,响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,所述第一校验结果包括所述m个第一数据行,所述控制器执行结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果时,包括执行以下操作:
确定所述m个第一数据行中出现a位错误的q个第一数据行;针对所述q个第一数据行中的每个被选择第一数据行:根据所述奇偶校验结果,确定所述被选择第一数据行中存在错误的e个潜在出错位,其中,所述e个潜在出错位的位置为所述多个差异位中属于所述被选择第一数据行对应的列组的差异位的位置,e为整数;响应于e大于a-1且小于等于预设校正阈值,结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果;根据所述q个第一数据行分别对应的q个第三校验结果,得到所述第二校验结果,其中,a为所述错误校验方法能够检测的最大错误检测位数,q为正整数且小于等于m。25.根据权利要求24所述的软错误处理系统,其中,所述控制器执行结合所述e个潜在出错位、所述错误校验方法和所述被选择第一数据行,执行试错组合测试,以得到所述被选择第一数据行对应的第三校验结果时,包括执行以下步骤:确定由所述e个潜在出错位中每a个潜在出错位组成的至少一个校正组合,对所述至少一个校正组合进行所述试错组合测试;其中,所述试错组合测试包括依序针对每个被选择校正组合进行试错测试,所述试错测试包括:对所述被选择第一数据行中与所述被选择校正组合包括的a个潜在出错位相对应的a个数据位进行翻转处理,以得到所述被选择第一数据行对应的中间测试数据行;将所述中间测试数据行发送至对应的错误校验器;响应于接收到所述对应的错误校验器发送的第一标志信号,停止所述试错组合测试,输出所述对应的错误校验器发送的第三校验结果,响应于接收到所述对应的错误校验器发送的第二标志信号,对下一个校正组合执行所述试错测试。26.根据权利要求25所述的软错误处理系统,其中,所述对应的错误校验器还被配置为:利用所述错误校验方法,对从所述控制器接收到的所述中间测试数据行进行所述第一校验,响应于所述中间测试数据行不存在错误,将所述中间测试数据行作为所述第三校验结果,并将所述第三校验结果和所述第一标志信号发送至所述控制器,响应于所述中间测试数据行中的b位存在错误,利用所述错误校验方法,对所述b位进行校正,将校正结果作为所述第三校验结果,并将所述第三校验结果和所述第一标志信号发送至所述控制器,其中,b为正整数且小于等于a-1,响应于所述中间测试数据行中仍有a位存在错误,输出所述第二标志信号至所述控制器。27.根据权利要求19所述的软错误处理系统,其中,所述控制电路还包括m个错误校验码生成器,所述m个错误校验码生成器被配置为,利用错误校验方法,分别对m个第二数据行进行处理,生成所述m个第二数据行分别对应的m个错误校验数据,其中,所述m个第二数据行是
对目标数据按所述m个列组的位置关系划分得到,所述目标数据为待写入到所述存储阵列的n行中的目标行的数据;所述控制器还被配置为,基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。28.根据权利要求18-27任一项所述的软错误处理系统,其中,所述控制电路还包括使能选择器、地址选择器、读数据选择器和写数据选择器,所述使能选择器被配置为,在所述控制器的控制下,将基于数据写入请求或读取请求确定的使能信号,或者将控制器生成的使能信号输入至所述数据存储器的使能端口;所述地址选择器被配置为,在所述控制器的控制下,将基于数据写入请求或读取请求确定的地址,或者将所述控制器生成的地址,输入至所述数据存储器的地址端口;所述读数据选择器被配置为,在所述控制器的控制下,将从所述数据存储器的读数据端口接收到的数据,或者将所述控制器生成的中间测试数据行,输入至对应的错误校验器;所述写数据选择器被配置为,在所述控制器的控制下,将目标数据和所述目标数据对应的m个错误校验数据,或者将所述控制器生成的目标参考奇偶校验向量,输入至所述数据存储器的写数据端口。29.一种数据读取装置,应用于数据存储器,其中,所述数据存储器中存储有n个数据且每个数据的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,且所述数据阵列在所述数据存储器中对应地存储为存储阵列,所述存储阵列的n行被划分为n个行组,所述数据读取装置包括:第一校验单元,配置为利用错误校验方法,对从所述存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;确定单元,配置为响应于所述第一校验结果指示不能完全校正所述目标行出现的错误,确定所述目标行所属的目标行组;第二校验单元,配置为利用奇偶校验方法,对从所述存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;校正单元,配置为结合所述第一校验结果和所述奇偶校验结果,得到所述目标行对应的第二校验结果,其中,所述第二校验结果的校正位数量大于所述错误校验方法能够校正的最大错误校正位数;输出单元,配置为将所述第二校验结果作为读取结果输出。30.一种数据写入装置,用于向数据存储器写入数据,所述存储器被配置为能够存储n个数据,且所述n个数据中每个的数据宽度为m位,所述n个数据依次排列构成n*m位的数据阵列,所述n*m位的数据阵列在所述数据存储器中对应地存储为n*m位的存储阵列,所述存储阵列的n行被划分为n个行组,每个行组包括r行,所述存储阵列的m列被划分为m个列组,每个列组包括c列,所述数据写入装置包括:第一校验数据生成单元,配置为将待写入到所述存储阵列的n行中的目标行的目标数
据按所述m个列组的位置关系划分为m个第二数据行,并且基于错误校验方法,生成所述m个第二数据行分别对应的m个错误校验数据,其中,每个错误校验数据用于对对应的第二数据行利用所述错误校验方法进行校验,每个第二数据行包括c位数据;第二校验数据生成单元,配置为基于所述目标数据,利用奇偶校验方法得到所述目标行所属的目标行组对应的目标参考奇偶校验向量,其中,所述目标参考奇偶校验向量用于对所述目标行组包括的r行数据的m列中每列进行奇偶校验。

技术总结
一种数据读取方法及装置、数据写入方法及装置、软错误处理系统。该数据读取方法包括:利用错误校验方法,对从存储阵列的n行中的目标行读取的数据的m位进行第一校验,得到第一校验结果;响应于第一校验结果指示不能完全校正目标行出现的错误,确定目标行所属的目标行组;利用奇偶校验方法,对从存储阵列的目标行组中读取的m列中每一列的数据进行第二校验,得到奇偶校验结果;结合第一校验结果和奇偶校验结果,得到目标行对应的第二校验结果;将第二校验结果作为读取结果。该数据读取方法能够以较小的硬件开销和延时开销,及时校正数据存储器中出现的多位软错误。储器中出现的多位软错误。储器中出现的多位软错误。


技术研发人员:陶昱良 潘于
受保护的技术使用者:海光信息技术股份有限公司
技术研发日:2021.12.03
技术公布日:2022/3/8

最新回复(0)