半导体装置以及半导体储存装置
关联申请
本申请享受以日本专利申请2020-46798号(申请日:2020年3月17日)为基础申请的优先权。本申请通过参照该基础申请而包含基础申请的全部的内容。
技术领域
本发明的实施方式涉及半导体装置以及半导体储存装置。
背景技术
半导体储存装置等中有搭载纠错电路的情况。还利用了使用乘积码帧(productcode frame)来提高纠错能力的纠错电路,但正在追求更高的纠错能力。
发明内容
实施方式提供一种提高了纠错能力的半导体装置以及半导体储存装置。
实施方式的半导体装置具有对于乘积码帧的第1方向的第1帧数据进行第1解码的第1解码电路、对于上述乘积码帧的第2方向的第2帧数据进行第2解码的第2解码电路、保存对于上述第1解码电路中解码出的上述第1帧数据生成的校正子的第1储存区域、保存对于上述第1解码电路中上述第1解码成功了的上述第1帧数据生成的上述校正子的第2储存区域、将上述第1解码中上述第1解码失败了的上述第1帧数据作为解码纠正不能帧数据保存的第3储存区域,上述半导体装置执行对上述解码纠正不能帧数据进行收集的帧收集处理、和对上述帧收集处理中所收集到的上述解码纠正不能帧数据进行上述第2解码的反复纠正处理,上述帧收集处理中,对于上述第1帧数据进行上述第1解码,并在上述第1解码成功了时,对于上述第1解码中成功了的上述第1帧数据生成上述校正子并保存于上述第2储存区域,并且无论上述第1解码成功了或失败了,都将对于上述第1帧数据生成的上述校正子保存于上述第1储存区域,上述反复纠正处理中,对于上述解码纠正不能帧数据使用上述第1储存区域的上述校正子来进行基于上述第2解码的数据纠正,对于通过上述数据纠正而得到纠正后的上述解码纠正不能帧数据进行上述第1解码,在对于上述解码纠正不能帧数据的上述第1解码成功了时,将上述第3储存区域的上述解码纠正不能帧数据更新,并且进行对于上述解码纠正不能帧数据的上述校正子生成,将上述第1储存区域以及上述第2储存区域更新,在上述反复纠正处理后进行上述帧收集处理时,将上述第2储存区域的数据复制到上述第1储存区域。
附图说明
图1是表示第一实施方式相关的存储器系统的构成例的框图。
图2是表示第一实施方式相关的非易失性存储器的构成例的框图。
图3是表示第一实施方式相关的、三维构造的NAND存储单元阵列的区块的构成例的图。
图4是第一实施方式相关的乘积码帧的构成图。
图5是表示比较例相关的、非易失性存储器所储存的用户数据的乘积码帧的解码处理的整体的流程的流程图。
图6是表示比较例相关的帧收集处理的流程的例子的流程图。
图7是表示比较例相关的反复纠正处理的流程的例子的流程图。
图8是表示比较例相关的反复纠正处理的流程的例子的流程图。
图9是表示比较例相关的、帧收集处理中的电路(处理)间的数据流的电路图。
图10是比较例相关的、反复纠正处理中的电路(处理)间的数据流的电路图。
图11是第一实施方式相关的存储控制器的纠错电路的构成图。
图12是表示第一实施方式相关的、非易失性存储器所储存的用户数据的乘积码帧的解码处理的整体的流程的流程图。
图13是表示第一实施方式相关的、帧收集处理的流程的例子的流程图。
图14是表示第一实施方式相关的、反复纠正处理的流程的例子的流程图。
图15是表示第一实施方式相关的、反复纠正处理的流程的例子的流程图。
图16是表示第一实施方式相关的、帧收集处理中的多个处理(处理)间的数据流的电路图。
图17是表示第一实施方式相关的、反复纠正处理中的电路(处理)间的数据流的电路图。
图18是第二实施方式相关的存储控制器的纠错电路的构成图。
图19是第二实施方式相关的帧收集处理的流程的例子的流程图。
图20是表示第二实施方式相关的、反复纠正处理的流程的例子的流程图。
图21是表示第二实施方式相关的、反复纠正处理的流程的例子的流程图。
图22是表示第二实施方式相关的、帧收集处理中的电路(处理)间的数据流的电路图。
图23是表示第二实施方式相关的、反复纠正处理中的电路(处理)间的数据流的电路图。
具体实施方式
以下,参照附图来说明实施方式。
(第一实施方式)
(构成)
(存储器系统的构成)
图1是表示实施方式相关的存储器系统的构成例的框图。本实施方式的存储器系统具备存储控制器1和非易失性存储器2。存储器系统能够与主机(host)连接。主机例如是个人计算机、便携终端、智能手机等电子设备。
非易失性存储器2是非易失地储存数据的半导体存储器,例如具备NAND闪存。本实施方式中,非易失性存储器2作为具有每个存储单元能够储存4比特那样的存储单元的NAND存储器、即4比特/单元(QLC:Quad Level Cell)的NAND存储器来说明。非易失性存储器2被三维化。
存储控制器1是按照来自主机的写入请求而控制向非易失性存储器2的数据的写入的半导体装置。包含存储控制器1和非易失性存储器2在内的半导体封装构成半导体储存装置。并且,存储控制器1按照来自主机的读取请求来控制来自非易失性存储器2的数据的读取。存储控制器1具备RAM(Random Access Memory)11、处理器12、主机接口13、ECC(ErrorCheck and Correct)电路14以及存储器接口15。RAM11、处理器12、主机接口13、ECC电路14以及存储器接口15彼此通过内部总线16连接。
主机接口13将从主机接收到的请求、作为用户数据的写入数据等向内部总线16输出。并且,主机接口13将从非易失性存储器2读取的用户数据、来自处理器12的响应等向主机发送。
ECC电路14包括:在向非易失性存储器2写入用户数据时生成纠错码的错误码生成电路14a、和对从非易失性存储器2读取的用户数据的错误进行检测并纠正的错误检测/纠正电路14b。错误码生成电路14a根据来自处理器12的指示而生成针对用户数据的纠错码。处理器12在将来自主机的用户数据向非易失性存储器2写入时,通过错误码生成电路14a生成针对用户数据的纠错码,并将附加了纠错码的用户数据向非易失性存储器2写入。处理器12在根据来自主机的请求将用户数据从非易失性存储器2读取时,通过错误检测/纠正电路14b检测来自非易失性存储器2的用户数据的错误,在存在错误时使用该纠错码来进行数据纠正,并将用户数据向主机输出。
存储器接口15是基于处理器12的指示而对将用户数据等向非易失性存储器2写入的处理以及将用户数据等从非易失性存储器2读取的处理进行控制的接口电路。
处理器12统一地控制存储控制器1。处理器12例如是CPU(Central ProcessingUnit)、MPU(Micro Processing Unit)等。处理器12在经由主机接口13从主机接收到请求的情况下,进行根据该请求的控制。例如,处理器12根据来自主机的请求,向存储器接口15指示对于非易失性存储器2的用户数据以及奇偶校验数据的写入。奇偶校验数据的生成通过ECC电路14的错误码生成电路来进行。并且,处理器12根据来自主机的请求,向存储器接口15指示用户数据以及奇偶校验数据的从非易失性存储器2的读取。读取的用户数据中存在错误时的数据纠正,通过ECC电路14的错误检测/纠正电路14b而被进行。
处理器12按照每个用户数据来决定写入目的地的非易失性存储器2的保存区域。非易失性存储器2的保存区域中被分配有物理地址。处理器12使用物理地址来管理用户数据的写入目的地的保存区域。处理器12指定已决定的保存区域的物理地址而指示存储器接口15将用户数据向非易失性存储器2写入。处理器12管理用户数据的逻辑地址(主机管理的逻辑地址)与物理地址之间的对应。处理器12接收到来自主机的包含逻辑地址在内的读取请求的情况下,确定与逻辑地址对应的物理地址,并指定物理地址而将用户数据的读取向存储器接口15指示。
RAM11将从主机接收到的用户数据在向非易失性存储器2储存之前暂时保存,或将从非易失性存储器2读取的数据在向主机发送之前暂时保存。RAM11例如是SRAM(StaticRandom Access Memory)等通用存储器。
图1中示出了存储控制器1分别具备ECC电路14和存储器接口15的构成例。但是,ECC电路14也可以内置于存储器接口15。并且,ECC电路14也可以内置于非易失性存储器2。
从主机接收到写入请求的情况下,存储控制器1像接下来这样动作。处理器12使写入用户数据暂时存储在RAM11。处理器12将RAM11所保存的用户数据读取,并向ECC电路14输入。ECC电路14的错误码生成电路14a生成所输入的数据的纠错码(奇偶校验数据),并将附加了纠错码的用户数据输出到存储器接口15。存储器接口15将附加了纠错码的用户数据写入非易失性存储器2。
从主机接收到读取请求的情况下,存储控制器1像接下来这样动作。存储器接口15将从非易失性存储器2读取的附加了纠错码的用户数据向ECC电路14输出。ECC电路14的错误检测/纠正电路14b对所输入的用户数据进行解码,若在所输入的用户数据中被检测到错误时,使用纠错码将纠正后的数据向RAM11保存。处理器12将保存到RAM11中的用户数据经由主机接口13而主机发送。
图2是表示本实施方式的非易失性存储器的构成例的框图。非易失性存储器2具备NAND I/O接口21、控制部22、NAND存储单元阵列23、读出放大器电路24以及字线驱动器25。非易失性存储器2由例如1芯片的半导体基板(例如硅基板)构成。
NAND I/O接口21接收从存储控制器1输出的写入使能信号Wen、读取使能信号REn、地址锁存使能信号ALE、指令锁存使能信号CLE等控制信号。并且,NAND I/O接口21接收从存储控制器1输出的指令、地址、数据。
控制部22是从NAND I/O接口21接收控制信号、指令、地址、数据并基于这些来控制非易失性存储器2的动作的控制电路。控制部22基于例如控制信号、指令、地址、数据来控制字线驱动器25、读出放大器电路24,并执行写入动作、读取动作、擦除动作等。
控制部22在被输入了写入指令的情况下,控制读出放大器电路24和字线驱动器25,将伴随写入指令而被输入的数据向NAND存储单元阵列23上的被指定的地址写入。并且,控制部22在被输入了读取指令的情况下,控制读出放大器电路24和字线驱动器25,从NAND存储单元阵列23上的被指定的地址将数据读取。
例如,控制部22为了向NAND存储单元阵列23所包含的存储单元(存储单元晶体管)MT写入数据,控制通过字线驱动器25向多个字线WL施加的电压、和通过读出放大器电路24向多个位线BL施加的电压(位线电压)。
读出放大器电路24构成为,能够独立地将电压(或电流)向多个位线BL施加,并且,独立地检测多个位线BL的电压(或电流)。
字线驱动器25构成为,能够独立地将电压向多个字线以及选择栅极线施加。
(NAND存储单元阵列的构成)
图3是表示三维构造的NAND存储单元阵列23的区块的构成例的图。图3示出了构成三维构造的NAND存储单元阵列(以下称为存储单元阵列)23的多个区块中的1个区块BLK。存储单元阵列的其他的区块也具有与图3相同的构成。另外,本实施方式也能够适用于二维构造的存储单元阵列。
如图示那样,区块BLK包含例如4个串单元(SU0~SU3)。并且各个串单元SU包含多个NAND串NS。NAND串NS的每个串NS在此包含8个存储单元MT(MT0~MT7)和选择晶体管ST1、ST2。另外,NAND串NS所包含的存储单元MT的个数,这里是8个,但不限于8个,例如也可以是32个、48个、64个、96个。选择晶体管ST1、ST2在电路上表示为1个晶体管,但构造上也可以与存储单元晶体管相同。并且,例如为了提高截止特性,也可以分别使用多个选择晶体管作为选择晶体管ST1、ST2。进而,也可以在存储单元MT与选择晶体管ST1、ST2之间设置虚拟单元晶体管。
存储单元MT以在选择晶体管ST1、ST2间被串联连接的方式配置。一端侧的存储单元MT7连接于选择晶体管ST1,另一端侧的存储单元MT0连接于选择晶体管ST2。
串单元SU0~SU3各自的选择晶体管ST1的栅极分别连接于选择栅极线SGD0~SGD3。另一方面,选择晶体管ST2的栅极在处于同一区块BLK内的多个串单元SU之间共同连接于同一选择栅极线SGS。并且,处于同一区块BLK内的存储单元MT0~MT7的栅极分别共同连接于字线WL0~WL7。即,字线WL0~WL7以及选择栅极线SGS被共同连接在同一区块BLK内的多个串单元SU0~SU3之间,与此相对,选择栅极线SGD即使在同一区块BLK内也按照每个串单元SU0~SU3而独立。
构成NAND串NS的存储单元MT0~MT7的栅极分别连接有字线WL0~WL7。在区块BLK内处于同一行的存储单元MTi的栅极连接于同一字线WLi。另外,在以下的说明中,有将NAND串NS仅称为“串”的情况。
各NAND串NS连接于对应的位线。从而,各存储单元MT经由NAND串NS所含的选择晶体管ST、其他的存储单元MT而连接于位线。如上述那样,处于同一区块BLK内的存储单元MT的数据被一并擦除。另一方面,数据的读取以及写入以存储单元组MG为单位(或页为单位)被执行。本说明书中,将连接于1个字线WLi且属于1个串单元SU的多个存储单元MT定义为存储单元组MG。本实施方式中,非易失性存储器2是能够保持4位(16值)的数据的QLC(QuadLevel Cell)的NAND存储器。
(乘积码的构成)
NAND存储器的存储控制器1的ECC电路14中,使用乘积码帧来谋求纠正能力的提高。乘积码帧具有位(列(column))方向的ECC奇偶校验数据(纠错码)和纵方向的里德-所罗门(Reed-Solomon,以下省略为RS)奇偶校验数据(纠错码)。ECC奇偶校验数据以及RS奇偶校验数据通过ECC电路14的错误码生成电路14a生成,被附加于用户数据。
图4是乘积码帧的构成图。用户数据由多个行(这里是N行。N是正的整数)且多个列(这里是M列。M是正的整数)的数据构成。关于用户数据的各行,在横方向(位(列(column))方向)被附加ECC奇偶校验数据,在纵方向被附加RS奇偶校验数据。ECC奇偶校验数据是在错误码生成电路14a中以横方法进行ECC编码而被生成的。RS奇偶校验数据是在错误码生成电路14a中以纵方法进行RS编码而被生成的。
ECC奇偶校验数据是基于BCH(Bose-Chaudhuri-Hocquenghem)码方式、LDPC(LowDensity Parity Check:低密度奇偶校验)方式等而被生成的。
另外,这里对于横方向数据使用了ECC编码方式,但也可以使用其他的编码方式来生成行方向的奇偶校验数据。同样,这里对于纵方向数据使用了RS编码方式,但也可以使用其他的编码方式来生成纵方向的奇偶校验数据。
在图4的横方向上,将由1行的用户数据和该行所附加的ECC奇偶校验数据构成的数据称为ECC帧。若将用户数据的各行按照规定的每个数据单位例如按照每1字节来划分,则多个行的用户数据被分割为多个列。在图4的纵方向上,将由规定的数据宽度的1列的用户数据和该列所附加的2个RS奇偶校验数据构成的数据称为RS帧。即,将横方向的帧称为ECC帧,将纵方向的帧称为RS帧。图4中,将由N个ECC帧以及L个RS帧构成的帧称为乘积码帧。
后述的RS校正子(syndrome)在RS解码时,在图4中如用双点划线所示那样,相对于ECC帧被生成,并被保存于存储器M0。各RS校正子的位数与按照每个RS帧被分割的RS奇偶校验的位数相同。
另外,这里对于1行的用户数据附加了1个ECC奇偶校验数据,但也可以设为将1行的用户数据分割为多个(例如4个)并按照分割后的每个部分用户数据附加一个奇偶校验数据。例如,若将1行的用户数据分割为4个,则生成4个奇偶校验数据。
进而,另外这里如图4所示仅对用户数据附加了RS奇偶校验数据,但也可以如双点划线所示那样也对ECC奇偶校验数据附加。
在以下的说明中,省略对用户数据的写入方法的说明,而对用户数据的解码方法、即读取以及其纠正的方法进行说明。这里,说明用户数据的乘积码帧的解码处理。
(比较例)
首先,在说明本实施方式的解码方法之前,对作为与本实施方式比较的比较例的解码方法进行说明。
图5是表示该比较例相关的、非易失性存储器2所储存的用户数据的乘积码帧的解码处理的整体的流程的流程图。解码处理中,处理器12若收到来自主机的读取请求,则控制存储器接口15,从非易失性存储器2中从与该请求相关的物理地址将用户数据读取。图4所示那样的乘积码帧的用户数据被从非易失性存储器2读取并被保存在RAM11的规定的保存区域。
解码处理中,若在从非易失性存储器2读取的用户数据中没有错误,则处理器12将该用户数据向主机返回。在从非易失性存储器2读取的用户数据中存在错误时,处理器12将用户数据纠正后向主机返回。处理器12一边控制ECC电路14一边进行从非易失性存储器2读取的用户数据的解码处理。
解码处理首先进行帧收集处理(步骤(以下简略为S)1),之后执行反复纠正处理(S2)。在帧收集处理中,收集通过以位为单位进行纠错的ECC解码处理而在解码中失败了的(即无法实现ECC纠正的)ECC帧。换言之,在帧收集处理中,收集需要进行基于RS解码的数据纠正的ECC帧。RS解码以符号(symbol)为单位进行纠错。反复纠正处理中,对于在S1中收集到ECC帧,执行RS解码处理。
图6是表示帧收集处理的流程的例子的流程图。图7以及图8是表示反复纠正处理的流程的例子的流程图。
存储控制器1的处理器12将作为ECC对象的对象ECC帧的帧编号设定为“0”后(S11),将帧编号递增“1”(S12)。
处理器12将所设定的帧编号的对象ECC帧读取(S13)。S13之后,处理器12通过对错误检测/纠正电路14b赋予使ECC解码处理执行的信号,从而执行ECC解码处理(S14)。S14中,错误检测/纠正电路14b检测所读取的对象ECC帧中是否存在错误,并且在存在错误的情况下,执行基于ECC的纠错。
处理器12判断对象ECC帧是否被正确地读取,或者判断在对象ECC帧存在错误时是否成功进行了基于错误检测/纠正电路14b的ECC纠正(S15)。
错误检测/纠正电路14b对该帧进行解码,将是否正确地完成了解码的标记作为内部数据生成。具体来说,错误检测/纠正电路14b在该帧不能正确地解码时,执行ECC纠正处理,并将表示ECC纠正是否已正确完成的标记作为内部数据生成。因此,处理器12通过读取错误检测/纠正电路14b所生成的标记,从而能够判断ECC纠正是否已成功。
在ECC纠正没有成功时(S15:否),处理器12判断规定次数的读取重试(retry)是否已结束(S16)。在规定次数的读取重试没有结束时(S16;否),处理返回到S13,再次执行S13到S15的处理。另外,重试时可以设为,改变基于移位读取等的读取条件来进行ECC帧的读取。
若规定次数的读取重试结束(S16;是),则处理器12将无法实现ECC纠正的ECC帧向存储器D写入(S17)。存储器D是例如RAM11中的规定的储存区域。
另外,处理器12将S15的判断结果向RAM11中的规定的储存区域(或规定寄存器)写入。这是因为使处理器12能够判断哪一ECC帧在解码中成功了或是失败了。例如,将被正确读取或者完成ECC纠正的帧设为“0”、无法实现ECC纠正的帧设为“1”那样的判断结果数据向RAM11中的规定的储存区域(或规定寄存器)写入。
在S15中ECC纠正成功了时,将S17中无法实现ECC纠正的ECC帧向存储器D写入后,将RS校正子从存储器M读取(S18)。存储器M是RAM11中的规定的储存区域。另外,在RS校正子首次被从存储器M读取时,读取的RS校正子为“0”。
处理器12在S18之后,根据S14中解码出的对象ECC帧和存储器M的RS校正子,生成RS校正子(S19)。处理器12将在S19中生成的校正子向存储器M写入(即更新)(S20)。处理器12通过将生成的RS校正子与在S18中读取的RS校正子相加,从而更新RS校正子(S20)。
处理器12判断对象ECC帧编号是否成为(N-1)(S21)。即,对于N行全部的ECC帧,判断是否进行了上述的S13到S20的处理。
若没有对于N行全部的ECC帧执行S13到S20的处理,则返回S12,将ECC帧编号递增而执行S13之后的处理。
若对于N行全部的ECC帧执行了S13到S20的处理,则处理器12执行图7的反复纠正处理。
如以上所示那样,结束图6的处理。其结果,无法实现ECC纠正的ECC帧信息被写入存储器D。
处理器12将对象ECC帧的帧编号设定为“0”(S31),并对帧编号递增“1”(S32)。
处理器12基于S15的判断结果数据来判断对象ECC帧是否是在ECC解码中成功了的帧(S33)。即,处理器12通过参照上述的RAM11中的规定的储存区域(或规定寄存器),从而判断对象ECC帧是否被正确地读取、或者ECC纠正处理是否正确完成。
在对象ECC帧是ECC解码完成即在ECC解码中成功了的帧时,向S43前进,在对象ECC帧是ECC解码无法实现的帧时,执行S34到S42的处理。
在对象ECC帧是ECC解码无法实现即在ECC解码中没有成功的帧时(S33:否),处理器12将该对象ECC帧的ECC帧从存储器D读取(S34),将RS校正子从存储器M读取(S35)。
处理器12对于用户数据,使用在S35中读取的RS校正子,进行针对在S34中读取的对象ECC帧的RS解码处理即数据纠正处理(S36)。由于通过S36,可能进行针对S34中读取的对象ECC帧的数据纠正,因此对于对象ECC帧执行ECC解码处理(S37)。
S37之后,处理器12判断由错误检测/纠正电路14b进行的ECC解码处理的结果是否是对于对象ECC帧的ECC解码已成功(S38)。处理器12基于S38的判断结果,更新RAM11中的规定的储存区域(或规定寄存器)的判断结果数据。
在对于对象ECC帧的ECC解码成功了时(S38:是),处理器12将对象ECC帧向存储器D写入(S39)。处理器12在S38中ECC解码成功了时,将在解码中成功了的对象ECC帧写入存储器D后(即将被解码的对象ECC帧数据从存储器D擦除后),将RS校正子从存储器M读取(S40)。
处理器12在S40之后,根据解码成功了的对象ECC帧和存储器M的RS校正子,生成RS校正子(S41)。
处理器12将在S41中生成的校正子向存储器M写入(即更新)(S42)。
处理器12在S33中为“是”时,或者在S42之后,判断ECC帧编号是否成为(N-1)(S43)。即,判断是否对于N行全部的ECC帧执行了上述的S33到S42的处理。
若没有对于N行全部的ECC帧执行S33到S42的处理,则返回到S32,将对象ECC帧编号递增而执行S33之后的处理。
在S43中为“是”时,即,对于N行全部的ECC帧执行了S33到S42的处理时,处理器12判断是否对于全部ECC帧而言ECC解码都成功了(S44)。S44的判断通过参照上述那样的RAM11中的规定的储存区域(或规定寄存器)而进行。
在对于全部ECC帧而言ECC解码都成功了时(S44:是),解码处理结束。
在没有对于全部ECC帧而言ECC解码成功时(S44:否),处理器12判断在上述的S31到S43的反复纠正处理中是否一个ECC解码都没有成功(S45)。S45的判断基于在S38中是否有成为“是”的情况而进行。
在即使成功了一个ECC解码处理时(S45:否),处理返回到S31,再次执行上述的处理。
即,由于RS解码的结果是ECC解码已实现,因此基于该新解码出的用户数据,再次通过RS解码来尝试ECC解码是否成功。执行S31到S43的处理,直到成为通过反复纠正连一个ECC帧都不能完成ECC解码的状态为止。
在连一个的ECC解码处理都不成功时(S45:是),处理结束。若结束,则将表示解码处理已失败的信息等向处理器12传递。
图9是表示上述的帧收集处理中的电路(处理)间的数据流的电路图。ECC电路14中,对于从非易失性存储器2读取的1个用户数据,在ECC解码处理电路中执行ECC解码处理(P1)。
ECC解码处理(P1)之后,根据ECC解码出的数据和存储器M的RS校正子来进行RS校正子生成(P2),并将所生成的RS校正子保存于存储器M(P3)。ECC解码未成功的ECC帧被保存于存储器D(P5)。
如图9中用实线所示的那样,ECC解码处理后在RS解码处理电路中,根据ECC帧数据和存储器M的RS校正子来执行RS校正子的生成。存储器M的RS校正子被更新。
如图9中用虚线所示的那样,在ECC解码处理电路中ECC纠正没有成功时,ECC纠正失败了的ECC帧的数据被写入存储器D。
图10是表示上述的反复纠正处理中的电路(处理)间的数据流的电路图。如图10中用实线所示的那样,在RS解码处理电路中使用存储器M的RS校正子,来执行对于存储器D的ECC帧的基于RS解码的数据纠正(P14)。
RS解码处理(P14)之后,对于进行了数据纠正的ECC帧执行ECC解码处理(P11)。根据在ECC解码中成功了的ECC帧和存储器M的RS校正子来进行校正子生成(P12),并将所生成的RS校正子保存于存储器M(P13)。并且,在ECC解码中成功了的情况下,进行存储器D的数据更新(P15)。
如在图10中用虚线表示的那样,在ECC解码处理成功了的情况下,在RS解码处理电路中,根据ECC纠正成功了的ECC帧数据和存储器M的RS校正子来进行RS校正子的生成。通过所生成的RS校正子,更新存储器M的RS校正子。并且,如图10中用虚线所示的那样,在ECC解码处理成功了的情况下,执行存储器D的数据的更新(ECC解码中失败了的ECC帧数据的擦除)。
根据以上的比较例的解码处理,在帧收集处理中以位(column)方向执行ECC解码处理。对于ECC解码后的数据进行RS解码处理(校正子生成),处理器12生成RS校正子并保存于存储器M。并且,在ECC解码纠正失败了的情况下,处理器12将该ECC帧的数据保存于存储器D。以上的处理对于N个ECC帧执行。
在反复纠正处理中,处理器12根据在帧收集处理中保存于存储器D的ECC解码纠正不能帧的数据和存储器M的RS校正子来进行RS解码处理(数据纠正)。处理器12对于进行了该RS解码的数据,再次进行ECC解码处理。在ECC解码纠正成功了的情况下,处理器12将ECC解码后的数据保存(覆写)于存储器D,并再次进行RS解码处理(校正子生成),并更新(覆写)存储器M的RS校正子。
在利用该反复纠正进行的RS解码处理(数据纠正)中,需要针对N个ECC帧的RS校正子。因此,保存于存储器M的RS校正子成为由ECC解码纠正成功了的帧和ECC解码纠正失败了的帧所生成的校正子。
因此,在上述的反复纠正后,对于无法实现ECC解码纠正的ECC帧,即使想要进行基于另外的判断标准(level)的ECC解码,也由于为了将对象ECC帧的全部再次读取,需要花费时间,因此不能进行基于另外的判断标准的ECC解码。
例如,即使通过改变纠错的标准的设定而有可能实现ECC解码,也由于保存于存储器M的RS校正子是基于之前的判断标准的数据,因此在基于另外的判断标准的ECC解码中,不能使用存储器M的RS校正子。
如以上那样,为了改变判断标准的设定并进行ECC解码,必须将对象ECC帧的全部再次读取并生成新的RS校正子,是不现实的。
(实施方式)
本实施方式中,对于无法实现ECC解码纠正的ECC帧,为了进行基于另外的判断标准的ECC解码,不是将对象ECC帧的全部再次读取而生成RS校正子,而是设为能够对于无法实现ECC解码纠正的ECC帧,进行基于另外的判断标准的ECC解码。
图11是本实施方式相关的存储控制器1的纠错电路14b的构成图。纠错电路14b具有ECC解码处理电路31以及RS解码处理电路32。ECC解码处理电路31以及RS解码处理电路32的动作通过处理器12控制。
ECC解码处理电路31接受来自存储器接口15的用户数据,并执行ECC解码处理。乘积码帧包含在第1方向(横方向)以及第2方向(纵方向)上附加有纠错码(ECC奇偶校验、RS奇偶校验)的用户数据。ECC解码处理电路31是对乘积码帧的第1方向(横方向)的ECC帧数据作为第1解码而进行ECC解码的解码电路。
RS解码处理电路32是对乘积码帧的第2方向(纵方向)的RS帧数据进行RS解码的解码电路。RS解码处理电路32包括存储器D、存储器M0、存储器M1、RS校正子生成电路33和RS数据纠正电路34。RS校正子生成电路33计算并生成RS校正子。RS数据纠正电路34进行使用了RS校正子的数据纠正。
存储器D保存ECC解码的数据纠正中失败了的ECC帧。即,存储器D是将ECC解码处理电路31中在ECC解码中失败了的ECC帧数据作为解码纠正不能帧数据而保存的储存区域。
存储器M0是对反复纠正用的RS校正子进行保存的储存区域,相当于上述的比较例的存储器M。具体来说,存储器M0是无论ECC解码处理电路31中ECC解码成功了还是失败了都对于被ECC解码后的ECC帧数据保存校正子的储存区域,所述校正子是通过利用RS解码处理电路32进行RS解码而生成的。
存储器M1保存恢复(roll back)用的RS校正子。具体来说,存储器M1是保存如下校正子的储存区域,该校正子是针对ECC解码处理电路31中在ECC解码中成功了的ECC帧数据而生成的。
另外,这里,存储器D、M0、M1分别是由SRAM等构成的专用存储器,但也可以是RAM11的一部分的保存区域。
图12是表示本实施方式相关的、在非易失性存储器2中储存的用户数据的乘积码帧的解码处理的整体的流程的流程图。
解码处理首先进行帧收集处理(S51),之后执行反复纠正处理(S52)。帧收集处理对解码纠正不能帧数据进行收集,反复纠正处理对于在帧收集处理中收集到的解码纠正不能帧数据进行RS解码。在反复纠正处理之后,判断帧收集处理中的ECC解码重试是否已结束(S53),若ECC解码重试没有结束(S53:否),则处理返回到S51。ECC解码重试是否已结束是基于是否满足了规定的条件而判断的。规定的条件例如为是否执行了规定的重试次数、是否执行了规定的判断标准的ECC解码等。若ECC解码重试结束(S53:是),则处理结束。
图13是表示本实施方式相关的、帧收集处理的流程的例子的流程图。图14以及图15是表示本实施方式相关的、反复纠正处理的流程的例子的流程图。在图13到图15的处理中,对于与图6到图8相同的处理,附加相同的步骤编号而使说明简略。
存储控制器1的处理器12在将作为ECC对象的对象ECC帧的帧编号设定为“0”之后(S11),将帧编号递增“1”(S12)。
处理器12基于对象ECC帧的帧编号,判断对象ECC帧是否是ECC解码成功了的帧(S61)。
在对象ECC帧是在ECC解码中成功了的帧时(S61:是),处理向S21转移。
在对象ECC帧不是在ECC解码中成功了的帧时(S61:否),处理器12将所设定的帧编号的对象ECC帧读取(S13)。S13之后,处理器12通过对于错误检测/纠正电路14b赋予使ECC解码处理执行的信号,从而执行ECC解码处理(S14)。
由于在各对象ECC帧的读取最初被执行的初次时,所有的对象ECC帧不是在ECC解码中成功了的帧,因此S61中成为“否”。
S14之后,处理器12将所设定的帧编号的对象ECC帧读取(S13),进行ECC解码处理(S14)。
处理器12判断对象ECC帧是否被正确地读取、或者在对象ECC帧中存在错误时由错误检测/纠正电路14b进行的ECC纠正是否成功了(S15)。
在ECC解码没有成功时(S15:否),处理器12判断规定次数的读取重试是否已结束(S16)。在规定次数的读取重试没有结束时(S16;否),处理返回到S13,再次执行S13到S15的处理。
若规定次数的读取重试结束(S16;是),则处理器12将无法实现ECC纠正的ECC帧向存储器D写入,并执行S18之后的处理。
在S15中ECC纠正成功了时,处理器12将RS校正子从存储器M1读取(S62),并执行RS解码处理的RS校正子生成(S63)。处理器12使用在解码中成功了的对象ECC帧来计算RS校正子,并加上S62中读取的RS校正子,由此生成(即更新)RS校正子(S63)。然后,处理器12将在S63中生成的校正子向存储器M1写入(S64)。
在S17中将无法实现ECC纠正的ECC帧向存储器D写入后以及S64之后,将RS校正子从存储器M0读取(S18)。
处理器12在S18之后执行RS解码处理的RS校正子生成(S19)。处理器12使用ECC解码后的对象ECC帧来计算RS校正子并加上在S18中读取的RS校正子,由此生成(即更新)RS校正子(S19)。
处理器12将在S19中生成的校正子向存储器M0写入(S20)。
如以上那样,帧收集处理中,处理器12对于ECC帧数据进行ECC解码(S14),在ECC解码中成功了时(S15:)对于ECC解码成功了的ECC帧数据生成校正子(S63)并保持于存储器M1(S64),并且无论ECC解码成功了或是失败了将对ECC帧数据而言生成的校正子向存储器M0保存(S20)。
处理器12判断对象ECC帧编号是否成为了(N-1)(S21)。即,对于N行全部的ECC帧,判断是否进行了上述的S61到S20的处理。
若没有对于N行全部的ECC帧进行S61到S20的处理,则返回到S12,将ECC帧编号递增而执行S61之后的处理。
若对于N行全部的ECC帧执行S61到S20的处理,则处理器12执行图14以及图15的反复纠正处理。
如以上那样,若图13的处理结束,则无法实现基于ECC解码的数据纠正的ECC帧信息被写入存储器D。并且,存储器M0中保存有对于全部对象ECC帧的RS校正子。
进而,存储器M1中保持有对于ECC纠正成功了的对象ECC帧的RS校正子。在各对象ECC帧的读取最初被执行的初次时,在该初次时,对于ECC纠正成功了的对象ECC帧的RS校正子被保存于存储器M1。
在图14以及图15的反复纠正处理中,处理器12将对象ECC帧的帧编号设定为“0”(S31),将帧编号递增“1”(S32)。
处理器12基于S15的判断结果数据,判断对象ECC帧是否是在ECC解码中成功了的帧(S33)。
在对象ECC帧是实现了ECC解码即在ECC解码中成功了的帧时,向S43前进,在对象ECC帧是无法实现ECC解码的帧时,执行S34到S42的处理。
在对象ECC帧是无法实现ECC解码即在ECC解码中没有成功的帧时(S33:否),处理器12将该对象ECC帧的ECC帧从存储器D读取(S34),将RS校正子从存储器M0读取(S35)。
处理器12对于用户数据使用在S35中读取到的RS校正子,进行对于在S35中读取到的对象ECC帧的RS解码处理即数据纠正处理(S36)。由于通过S36,有可能进行了对于在S34中读取到的对象ECC帧的纠正,因此对于对象ECC帧执行ECC解码处理(S37)。
S37之后,处理器12判断基于错误检测/纠正电路14b的ECC解码处理的结果是否是对于对象ECC帧的ECC解码成功了(S38)。处理器12将S38的判断结果数据向RAM11中的规定的储存区域(或规定寄存器)写入即更新。
在对于对象ECC帧的ECC解码成功了时(S38:是),处理器12将对象ECC帧向存储器D写入(S39)。在S38中ECC解码成功了时将解码后的对象ECC帧向存储器D写入后(即将被解码的对象ECC帧数据从存储器D擦除后),处理器12从存储器M1将RS校正子读取(S65)。
在S65之后,处理器12根据在解码中成功了的对象ECC帧和存储器M1的RS校正子,进行RS校正子生成。然后,处理器12将在S66中生成的校正子向存储器M1写入(即更新)(S67)。
在S67之后,处理器12将RS校正子从存储器M0读取(S40)。
在S40之后,处理器12根据在解码中成功了的对象ECC帧和存储器M0的RS校正子,生成RS校正子。
处理器12将在S41中生成的校正子向存储器M0写入(即更新)(S42)。
在S33中为“是”时,在S42之后,或在S38中为“否”时,处理器12判断ECC帧编号是否成为(N-1)(S43)。即,对于N行全部的ECC帧,判断是否进行了上述的S33到S42的处理。
若没有对于N行全部的ECC帧而言进行S33到S42的处理,则返回到S32,将对象ECC帧编号递增而执行S33之后的处理。
如以上那样,在反复纠正处理中,处理器12对于解码纠正不能帧数据使用存储器M0的校正子来进行基于RS解码的数据纠正(S36),并对于通过数据纠正而得到纠正后的解码纠正不能帧数据进行ECC解码(S37),在对于解码纠正不能帧数据的ECC解码成功了时(S38:是),将存储器D的解码纠正不能帧数据更新(删除)(S39),并且进行对于解码纠正不能帧数据的校正子生成(S66),并对存储器M0以及存储器M1进行更新(S67)。
在S43中为“是”时,即在对于N行全部的ECC帧进行了S33到S42的处理时,处理器12判断是否对于全部ECC帧而言ECC解码成功了(S44)。S44的判断通过参照上述那样的RAM11中的规定的储存区域(或规定寄存器)而进行判断。
在对于全部ECC帧而言ECC解码成功了时(S44:是),解码处理结束。
在对于全部ECC帧而言ECC解码没有成功时(S44:否),处理器12在上述的S31到S43的反复纠正处理中,判断是否ECC解码一个都没成功(S45)。S45的判断是基于是否有在S38中成为“是”的情况而进行的。
在即使一个的ECC解码处理成功了时(S45:否),处理返回到S31,再次执行上述的处理。即,由于RS解码的结果是无法实现ECC解码,因此基于该新解码出的用户数据,再次通过RS解码来尝试ECC解码是否成功。最终,执行S31到S43的处理,直到成为通过反复纠正连一个ECC帧也无法被ECC解码的状态为止。
在连一个的ECC解码处理都没有成功时(S45:是),处理器12判断帧收集处理中的ECC解码处理的重试是否已结束(S68)。该S68的判断处理对应于图12的S53的处理。
若被判断为ECC解码处理的重试结束(S68:是),则处理结束。若结束,则表示解码处理失败了的信息等被向处理器12传递。
在ECC解码处理的重试没有结束时(S68:否),处理器12将存储器M1的RS校正子向存储器M0复制(S69)。即,处理器12在反复纠正处理后进行帧收集处理时,将存储器M1的数据向存储器M0复制。
S69之后,处理返回到图13的S11。
在反复纠正处理之后,返回到帧收集处理,并再次执行ECC纠正,但在第二次以后的ECC解码处理中,执行与前一次的ECC解码处理不同的处理、例如基于另外的判断标准的ECC解码。
例如,在第一次的帧收集处理中使用LDPC码中的60位纠正的判断标准,在第二次的帧收集处理中为了提高ECC纠正能力而使用LDPC码的120位纠正的判断标准。
图16是表示本实施方式相关的、帧收集处理中的多个处理(处理)间的数据流的电路图。在ECC电路14中,对于从非易失性存储器2读取的1个用户数据,在ECC解码处理电路中执行ECC解码处理(P21)。
在ECC解码处理(P21)之后执行RS校正子的生成处理(P22),所生成的RS校正子被保存于存储器M0(P23)。并且,ECC解码没有成功的ECC帧被保存于存储器D(P25)。
对于ECC解码成功了的ECC帧,执行恢复用的RS校正子的生成(P26),所生成的RS校正子被保存于存储器M1(P27)。
如图16中用实线所示的那样,ECC解码处理后,在RS解码处理电路中根据ECC纠正成功了的数据和存储器M0的RS校正子来执行RS校正子的生成(P22)。所生成的RS校正子被保存于存储器M0(P23)。
如图16中用虚线所示的那样,在ECC解码处理电路中ECC纠正没有成功时,ECC纠正失败了的ECC帧的数据被写入存储器D。
如图16中用点划线所示的那样,在ECC解码成功了时,根据ECC解码后的数据和存储器M1的校正子来进行校正子生成,并保存于存储器M1。
存储器M0所保持的RS校正子是运算用的,存储器M1所保持的RS校正子是恢复用的。恢复用RS校正子是仅针对ECC解码成功了的ECC帧的数据而生成的,被保存于存储器M1。
帧收集处理中,除了存储器M0以外,ECC解码纠正成功了的情况下存储器M1的恢复用RS校正子也被更新。另外,存储器M0的运算用RS校正子与上述的比较例相同,无论ECC解码的成功/失败与否,总是被更新。
图17是表示本实施方式相关的、反复纠正处理中的电路(处理)间的数据流的电路图。如图17中用实线所示的那样,在RS解码处理电路中使用存储器M0的RS校正子来执行对于存储器D的ECC帧的数据纠正(P34)。对于RS解码处理电路中的执行了数据纠正的对象ECC帧,执行ECC解码处理(P31)。
在ECC解码处理(P31)之后,根据ECC解码后的数据和存储器M0的RS校正子,生成运算用的RS校正子(P32),所生成的RS校正子被保存于存储器M0(P33)。并且,ECC解码没有成功的ECC帧被保存于存储器D(P35)。
如图17中用虚线所示的那样,在ECC解码处理成功了的情况下,在RS解码处理电路中根据ECC纠正成功了的数据和存储器M0的RS校正子来执行RS校正子的生成(P32)。所生成的RS校正子被保存于存储器M0。
并且,如图17中用点划线所示的那样,在ECC解码处理成功了的情况下,根据ECC解码成功了的数据和存储器M1的RS校正子来生成RS校正子(P36),所生成的RS校正子被保存于存储器M1。在反复纠正中一个都没有成功时,为了帧收集的重试,存储器M1的RS校正子被复制到存储器M0。
在反复纠正中,使用存储器M0的运算用RS校正子,并执行RS解码处理(RS纠正)以及ECC解码处理。在ECC解码纠正成功了的情况,还执行存储器M1的恢复用RS校正子的更新。
反复纠正结束后,再次进行帧收集时,将存储器M1的恢复用RS校正子复制到存储器M0,从而能够将运算用RS校正子恢复并再次进行帧收集。由此,能够反复进行帧收集以及反复纠正,能够提高乘积码的解码处理中的纠正能力。
从而,根据本实施方式,不再次将对象ECC帧的全部读取而能够进行基于另外的判断标准的ECC解码,作为结果,能够提供具有更高的纠错能力的半导体装置以及半导体储存装置。
(第二实施方式)
第一实施方式中,对进行解码处理时的2个RS校正子进行保持而反复进行ECC解码处理,但是第二实施方式中,求取在ECC解码纠正中失败了的ECC帧的RS校正子,并从运算用的RS校正子中减去,从而不保持恢复用的RS校正子而反复进行ECC解码处理,能够使电路规模缩小而安装。
第二实施方式的半导体储存装置具有与第一实施方式大致相同的构成,因此对于相同的构成要素使用相同的标号而省略说明,仅对于不同的构成要素进行说明。
图18是本实施方式的存储控制器1A的纠错电路14b的构成图。存储控制器1A除了没有图11的存储控制器1的存储器M1以外,具有与图11的存储控制器1相同的构成。
本实施方式中的在非易失性存储器2中存储的用户数据的乘积码帧的解码处理的整体的流程与图12所示的流程相同。
首先,对本实施方式中的帧收集处理进行说明。
图19是表示本实施方式相关的、帧收集处理的流程的例子的流程图。图20以及图21是表示本实施方式相关的、反复纠正处理的流程的例子的流程图。在图19到图21的处理中,对于与图6到图8以及图13到图15相同的处理,附加相同的步骤编号而将说明简略。
图19中没有图13中的S62到S64的处理这一点,与第一实施方式不同。本实施方式的帧收集处理中,处理器12对于ECC帧数据进行ECC解码(S14),无论ECC解码成功了或是失败了都将对于ECC帧数据生成的校正子向存储器M0保存(S20)。
即,帧收集处理中,仅执行对于存储器M0的运算用的RS校正子的保持以及更新,不执行第一实施方式中进行了的、ECC解码纠正成功了的情况下的对于存储器M1的恢复用的RS校正子的保持以及更新。另外,对于存储器M0的运算用的RS校正子,与第一实施方式相同,无论ECC解码的成功/失败与否,总是被更新。
图20中没有图14中的S65到S67的处理这一点与第一实施方式不同,图21中代替图15中的S69而执行S71和S72的处理这一点,与第一实施方式不同。
本实施方式的反复纠正处理中,处理器12对于解码纠正不能帧数据,使用存储器M0的校正子来进行基于RS解码的数据纠正(S36),对于通过数据纠正而得到纠正后的解码纠正不能帧数据进行ECC解码(S37),在对于解码纠正不能帧数据的ECC解码成功了时(S38:是),将存储器D的解码纠正不能帧数据更新(删除)(S39),并且进行对于解码纠正不能帧数据的校正子生成(S41),将存储器M0更新。
具体来说,反复纠正处理中使用存储器M0的运算用的RS校正子来执行RS解码处理的RS纠正以及ECC解码处理。然后,在反复纠正结束后,再次进行帧收集时(S46:否),处理器12根据在ECC解码纠正中失败了的帧来求取RS校正子,并将求出的RS校正子从存储器M0的运算用的RS校正子中减去(S71),从而更新存储器M0的运算用的RS校正子(S72),并将存储器M0的RS校正子的状态恢复到仅有ECC解码纠正成功了的帧的状态。
即,处理器12在反复纠正处理后进行帧收集处理时,将对于ECC解码失败了的解码纠正不能帧数据而言所生成的校正子从保存于存储器M0的校正子中减去并将存储器M0更新。
图22是表示本实施方式相关的、帧收集处理中的电路(处理)间的数据流的电路图。
如图22中用实线所示的那样,ECC解码处理(P21)后,在RS解码处理电路中根据ECC纠正成功了的数据和存储器M0的RS校正子来进行RS校正子的生成(P22)。所生成的RS校正子被保存于存储器M0(P23)。
如图22中用虚线所示的那样,在ECC解码处理电路中ECC纠正没有成功时,ECC纠正失败了的ECC帧的数据被写入存储器D(P25)。
图23是表示本实施方式相关的、反复纠正处理中的电路(处理)间的数据流的电路图。如图23中用实线所示的那样,在RS解码处理电路中使用存储器M0的RS校正子来执行对于存储器D的ECC帧的数据纠正(P34)。对于RS解码处理电路中的被执行了数据纠正的对象ECC帧,执行ECC解码处理(P31)。
ECC解码处理(P31)之后,根据ECC解码后的数据和存储器M0的RS校正子来生成运算用的RS校正子(P32),所生成的RS校正子被保存于存储器M0(P33)。并且,ECC解码没有成功的ECC帧被保存于存储器D(P35)。
如图23中用虚线所示的那样,ECC解码处理成功了的情况下,在RS解码处理电路中根据ECC纠正成功了的数据和存储器M0的RS校正子来进行RS校正子的生成(P32)。所生成的RS校正子被保存于存储器M0。
然后,处理器12将根据在ECC解码中失败了的ECC帧计算出的RS校正子从运算用的RS校正子中减去(P41),对存储器M0的运算用的RS校正子进行更新(P42)。之后,再次执行帧收集处理。
如以上那样,本实施方式中,求取在ECC解码纠正中失败了的帧的RS校正子,并将其从运算用的RS校正子中减去来恢复RS校正子的状态,由此能够在反复纠正后再次进行帧收集。
与第一实施方式相比,根据本实施方式,不需要用于保存与ECC纠正成功了的对象ECC帧有关的RS校正子的存储器M1,因此能够减小半导体装置的电路规模。
从而,根据本实施方式,不需要第一实施方式中的保存恢复用的RS校正子的存储器M1,就能够实现反复执行帧收集以及反复纠正并提高了纠错能力的半导体装置以及半导体储存装置。
根据如以上那样叙述的各实施方式,能够提供提高了纠错能力的半导体装置以及半导体储存装置。
特别是,根据上述的各实施方式,能够在反复纠正后再次进行帧收集处理,因此能够实现进一步纠错的可能性提高。
说明了本发明的一些实施方式,但这些实施方式是作为例子而例示的,不意图限定发明的范围。这些新的实施方式能够通过其他各种各样的方式实施,在不脱离发明的主旨的范围内,能够进行各种省略、替换、变更。这些实施方式及其变形包含在发明的范围及主旨中,并且包含在权利要求书所记载的发明及其等价的范围中。
附图标记说明
1、1A存储控制器,2非易失性存储器,12处理器,13主机接口,14ECC电路,14a错误码生成电路,14b纠正电路,15存储器接口,16内部总线,21I/O接口,22控制部,23存储单元阵列,24读出放大器电路,25字线驱动器,31ECC解码处理电路,32RS解码处理电路,33RS校正子生成电路,34RS数据纠正电路。