CN103942154B - 控制器、信息处理系统、控制器的控制方法以及程序 - Google Patents

控制器、信息处理系统、控制器的控制方法以及程序 Download PDF

Info

Publication number
CN103942154B
CN103942154B CN201410016125.3A CN201410016125A CN103942154B CN 103942154 B CN103942154 B CN 103942154B CN 201410016125 A CN201410016125 A CN 201410016125A CN 103942154 B CN103942154 B CN 103942154B
Authority
CN
China
Prior art keywords
error correction
decision
soft
code word
value
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
Application number
CN201410016125.3A
Other languages
English (en)
Other versions
CN103942154A (zh
Inventor
阪井塁
藤波靖
池谷亮志
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Sony Semiconductor Solutions Corp
Original Assignee
Sony Semiconductor Solutions Corp
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Sony Semiconductor Solutions Corp filed Critical Sony Semiconductor Solutions Corp
Publication of CN103942154A publication Critical patent/CN103942154A/zh
Application granted granted Critical
Publication of CN103942154B publication Critical patent/CN103942154B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Classifications

    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1111Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms
    • H03M13/1117Soft-decision decoding, e.g. by means of message passing or belief propagation algorithms using approximations for check node processing, e.g. an outgoing message is depending on the signs and the minimum over the magnitudes of all incoming messages according to the min-sum rule
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/08Error detection or correction by redundancy in data representation, e.g. by using checking codes
    • G06F11/10Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's
    • G06F11/1008Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices
    • G06F11/1012Adding special bits or symbols to the coded information, e.g. parity check, casting out 9's or 11's in individual solid state devices using codes or arrangements adapted for a specific type of error
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/3707Adaptive decoding and hybrid decoding, e.g. decoding methods or techniques providing more than one decoding algorithm for one code
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/05Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits
    • H03M13/11Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using block codes, i.e. a predetermined number of check bits joined to a predetermined number of information bits using multiple parity bits
    • H03M13/1102Codes on graphs and decoding on graphs, e.g. low-density parity check [LDPC] codes
    • H03M13/1105Decoding
    • H03M13/1108Hard decision decoding, e.g. bit flipping, modified or weighted bit flipping
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/03Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words
    • H03M13/23Error detection or forward error correction by redundancy in data representation, i.e. code words containing more digits than the source words using convolutional codes, e.g. unit memory codes
    • HELECTRICITY
    • H03ELECTRONIC CIRCUITRY
    • H03MCODING; DECODING; CODE CONVERSION IN GENERAL
    • H03M13/00Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes
    • H03M13/29Coding, decoding or code conversion, for error detection or error correction; Coding theory basic assumptions; Coding bounds; Error probability evaluation methods; Channel models; Simulation or testing of codes combining two or more codes or code structures, e.g. product codes, generalised product codes, concatenated codes, inner and outer codes
    • H03M13/2957Turbo codes and decoding

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Detection And Correction Of Errors (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Detection And Prevention Of Errors In Transmission (AREA)
  • Error Detection And Correction (AREA)

Abstract

本发明提供一种其中通过软判决解码算法提高纠错能力的控制器、信息处理系统、控制器的控制方法以及程序,所述控制器包括:低级纠错部,其用于执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误就采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。

Description

控制器、信息处理系统、控制器的控制方法以及程序
技术领域
本发明涉及一种控制器、信息处理系统、控制器的控制方法以及程序。更具体地,本发明涉及一种其中通过软判决解码算法进行纠错的控制器、信息处理系统、控制器的控制方法以及程序。
背景技术
近年来,信息处理系统可采用非易失性存储器(NVM)或HDD(硬盘驱动器)作为储存器。在这些储存器中,储存的数据可能会受到毁坏,因而不能正确读取。因此,一种通常的信息处理系统基于待储存的数据生成错误检测和纠正码(ECC),并将ECC储存在储存器中。当再现数据时,信息处理系统可基于ECC检测并纠正数据中的错误。
当基于ECC纠正错误时,便可采用软判决解码算法。软判决解码算法为基于软判决值纠正错误的算法,该软判决值与数据中的位元为“1”的概率或为“0”的概率相对应。另一方面,基于表明数据中的位元为“1”或“0”的硬判决值来纠正错误的算法称为硬判决算法。
尽管软判决解码算法的纠错能力高于硬判决解码算法的纠错能力,但其处理比较复杂,从而增加了电路尺寸和处理时间。因此,已经提出了一种部分软判决解码算法被简化以便抑制电路尺寸等的增加的设备(例如,参照日本未经审查的专利申请公开No.2010-28408)。更具体地,该设备采用重复模式软判决解码算法,其中,将变量节点和校验节点之中的一个节点处所生成的软判决值发送至另一节点来进行纠错的步骤被重复执行,以简化校验节点中的处理。
然而,在上述技术中很难提高纠错能力。添加至数据的奇偶校验信息的量增加得越多,即码率越小,纠错能力就越高,而储存区域的利用率就越低。为了在不改变码率的情况下提高纠错能力,可以使用采用具有更高纠错能力的算法的方法或者使用增加了重复模式软判决解码算法中的重复次数的方法。然而,在前者方法中,采用具有高纠错能力的算法进行处理会更加复杂从而增加了电路尺寸和处理时间。而且,在后者方法中,即在增加重复次数的方法中,处理时间增加了。因此,在不改变码率的情况下,在抑制电路尺寸和处理时间增加的同时提高纠错能力是很难的。
发明内容
本发明期望在采用软判决算法的信息处理系统中提高纠错能力。
根据本发明的实施例,提供了一种控制器,所述控制器包括:低级纠错部,其用于执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。
根据本发明的实施例,提供了一种控制器的控制方法,所述方法包括:执行低级纠错,在低级纠错中,码字中的错误采用预定解码算法纠正;以及执行高级软判决纠错,在高级软判决纠错中,当所述低级纠错执行的纠错失败时,所述码字中的错误采用高级算法纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力。
根据本发明的实施例,提供了一种嵌入有程序的非暂存性有形记录介质,当所述计算机可读程序由计算机执行时,使得所述计算机实施一种方法,所述方法包括:执行低级纠错,在低级纠错中,码字中的错误采用预定解码算法纠正;以及执行高级软判决纠错,在高级软判决纠错中,当所述低级纠错执行的纠错失败时,所述码字中的错误采用高级算法纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力。
因此,本发明实现了以下效果:当所述低级纠错部执行的纠错失败时,所述码字中的错误采用所述高级算法纠正。
而且,根据本发明的实施例的控制器可进一步包括:读取处理部,其用于从存储器中读取所述码字并将所述码字提供给所述低级纠错部,所述码字包括多个码元;码字获取部,其用于当所述低级纠错部执行的纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及软判决值生成部,其用于基于由所述码字获取部读取的每一个所述码字为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。因此,实现了以下效果:当所述低级纠错部的纠错失败时,多次执行读取码字的码字获取,且基于每一个读取的码字,生成了软判决值。
而且,在根据本发明的实施例的控制器中,所述软判决值生成部可为每一个所述码元求取所述码字获取部读取所述特定值的频率,并可基于所述频率生成所述软判决值。因此,实现了以下效果:基于所述特定值被读取的频率来生成所述软判决值。
而且,根据本发明的实施例的控制器可进一步包括:阈值控制部,其用于每次执行所述码字获取时在预定的范围内改变阈值,所述阈值为确定所述码元的值的阈值;以及软判决值生成部,所述软判决值生产部可基于读取具有所述特定值的码元时所述阈值的最大值或最小值来生成所述软判决值。因此,实现了以下效果:当读取具有所述特定值的所述码元时,基于所述阈值的最大值或最小值来生成所述判决值。
而且,在根据本发明的实施例的控制器中,所述软判决值生成部可在执行了多次所述码字获取之后生成所述软判决值,当生成所述软判决值时所述高级软判决纠错部可执行所述高级软判决纠错。因此,实现了以下效果:执行了多次所述码字获取,然后生成所述软判决值以执行所述高级软判决纠错。
而且,在根据本发明的实施例的控制器中,所述软判决值生成部在每次执行码字获取时可生成所述软判决值,所述高级软判决纠错部在每次生成软判决值时执行所述高级软判决纠错。因此,实现了以下效果:每次执行所述码字获取时便生成所述软判决值,以执行所述高级软判决纠错。
在根据本发明的实施例的控制器中,所述码字包括多个码元,所述低级纠错部可为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。因此,实现了以下效果:由上述低级纠错部生成的所述软判决值被提供给了上述高级软判决纠错部。
根据本发明的实施例,提供了一种信息处理系统,所述信息处理系统包括:主机,其用于发出用于指令从存储部中读取码字的读取命令;读取处理部,其用于响应于所述读取命令而从所述存储部读取所述码字;低级纠错部,其用于执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。因此,实现了以下效果:当所述低级纠错部执行的纠错失败时,所述码字中的错误采用所述高级算法进行纠正。
在根据本发明的实施例的信息处理系统中,所述主机可基于所述高级软判决纠错的处理时间确定包括纠正开始命令的一个以上命令的执行顺序,并可将所述一个以上命令按照所述执行顺序提供给所述高级软判决纠错部,所述纠正开始命令用于当所述低级纠错部执行的纠错失败时指令所述高级软判决纠错的开始,当所述低级纠错部执行的纠错失败且所述纠正开始命令已提供给所述高级软判决纠错部时,所述高级软判决纠正部开始所述高级软判决纠错。因此,实现了以下效果:当所述低级纠错部执行的纠错失败时且所述纠正开始命令已提供时,执行所述高级软判决纠错。
在根据本发明的实施例的信息处理系统中,当所述低级纠错部执行的纠错失败且读取所述码字发生中断时,所述主机发出暂停所述高级软判决纠错的中止命令,当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部响应于所述中止命令暂停正在执行的高级软判决纠错。因此,实现了以下效果:当读取所述码字发生中断时,暂停所述高级软判决纠错。
而且,在根据本发明的实施例的信息处理系统中,所述主机可进一步基于所述码字的类型生成表明是否需要执行所述高级软判决纠错的使能命令,当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部可响应于所述使能命令执行所述高级软判决纠错。因此,实现了以下效果:当所述低级纠错部执行的纠错失败时,响应于所述使能信号执行所述高级软判决纠错。
进一步地,在根据本发明的实施例的信息处理系统中,所述高级算法可包括多种高级算法,所述主机可基于所述码字的类型指定所述多种高级算法中的一种,当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部可采用所述指定的高级算法纠正所述码字中的错误。因此,实现了以下效果:当所述低级纠错部执行的纠错失败时,所述码字中的错误采用所述指定的高级算法进行纠正。
根据本发明的实施例,提供了一种信息处理系统,所述信息处理系统包括:控制器,其用于从存储部读取码字并执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及主机,其用于当所述控制器执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠正中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。
在根据本发明的实施例的信息处理系统中,当所述控制器执行的纠错失败时,所述主机可发出码字输出命令,所述码字输出命令指令所述控制器输出所述码字,所述控制器响应于所述码字输出命令从所述存储部读取所述码字并将所述码字输出至所述主机,而不执行所述低级纠错。因此,实现了以下效果:所述控制器响应于所述码字输出命令从所述存储部读取所述码字并将所述码字输出至所述主机,而不执行所述低级纠错。
上述控制器可在所述低级纠错中生成纠正成功/失败信息,并可将所述纠正成功/失败信息输出至主机,所述纠正成功/失败信息表明对所述码字的纠错是否成功,所述主机可基于所述纠正成功/错误信息判断所述控制器执行的纠错是否失败。因此,实现了以下效果:上述控制器执行的纠错是否失败由所述主机基于所述纠正成功/失败信息来判断。
在本发明的实施例中,实现了以下优越效果,即纠错能力可在采用了软判决算法的信息处理系统中得到提高。
应理解,上述概述和接下来的详细说明都是示例性的,旨在进一步说明所要求保护的本发明。
附图说明
附图用于进一步理解本发明,其包含在本说明书中并构成本说明书的一部分。附图与说明书一起对实施例进行了说明并用于解释本发明的原理。
图1是图示了根据第一实施例的信息处理系统的配置示例的方框图。
图2是图示了根据第一实施例的主机的配置示例的方框图。
图3是图示了根据第一实施例的存储控制器的配置示例的方框图。
图4是图示了根据第一实施例的存储控制器的功能配置示例的方框图。
图5是图示了根据第一实施例的纠错代码的数据结构示例的示意图。
图6A和6B是图示了根据第一实施例的校验矩阵的示意图。
图7A和7B是描述了根据第一实施例的生成纠错代码的方法的示例的示意图。
图8是图示了根据第一实施例的纠错部的配置示例的方框图。
图9是图示了根据第一实施例的低级纠错部的配置示例的方框图。
图10是图示了根据第一实施例的低级纠错电路的配置示例的示意图。
图11A和11B是图示了根据第一实施例的变量节点和校验节点之间的消息交换的示例的示意图。
图12是图示了根据第一实施例的高级软判决纠错部的配置示例的方框图。
图13是图示了根据第一实施例的主机的操作示例的流程图。
图14是图示了根据第一实施例的存储控制器的操作示例的流程图。
图15是图示了根据第一实施例的读取处理的示例的流程图。
图16是图示了根据第一实施例的低级纠错的示例的流程图。
图17是图示了根据第一实施例的高级软判决纠错的示例的流程图。
图18是图示了根据第一实施例的第一变型例的纠错部的配置示例的方框图。
图19是图示了根据第一实施例的第一变型例的低级纠错部的示例的方框图。
图20是图示了根据第一实施例的第一变型例的高级软判决纠错部的方框图。
图21是图示了根据第一实施例的第二变型例的纠错部的配置示例的方框图。
图22是图示了根据第一实施例的第二变型例的主机的操作示例的流程图。
图23是图示了根据第一实施例的第二变型例的读取处理的示例的流程图。
图24是图示了根据第二实施例的纠错部的配置示例的方框图。
图25是图示了根据第二实施例的主机的操作示例的流程图。
图26是图示了根据第二实施例的读取处理的示例的流程图。
图27是图示了根据第二实施例的第一变型例的纠错部的配置示例的方框图。
图28是图示了根据第二实施例的第一变型例的主机的操作示例的流程图。
图29是图示了根据第二实施例的第一变型例的高级软判决纠错的示例的流程图。
图30是图示了根据第二实施例的第二变型例的纠错部的配置示例的方框图。
图31是图示了根据第二实施例的第二变型例的主机的操作示例的流程图。
图32是图示了根据第二实施例的第二变型例的读取处理的示例的流程图。
图33是图示了根据第二实施例的第三变型例的主机的操作示例的流程图。
图34是图示了根据第二实施例的第三变型例的高级软判决纠错的示例的流程图。
图35是图示了根据第三实施例的主机的配置示例的方框图。
图36是图示了根据第三实施例的存储控制器的配置示例的方框图。
图37是图示了根据第三实施例的纠错部的配置示例的方框图。
图38是图示了根据第三实施例的主机的操作示例的流程图。
图39是图示了根据第三实施例的存储控制器的操作示例的流程图。
图40是图示了根据第三实施例的读取处理的示例的流程图。
图41是图示了根据第四实施例的主机的配置示例的方框图。
图42A~42D是图示了根据第四实施例的读取数据和软判决值的示例的示意图。
图43是图示了根据第四实施例的存储控制器的配置示例的方框图。
图44是图示了根据第四实施例的主机的操作示例的流程图。
图45是图示了根据第四实施例的高级软判决纠错的示例的流程图。
图46是图示了根据第四实施例的存储控制器的操作示例的流程图。
图47是图示了根据第四实施例的读取处理的示例的流程图。
图48是图示了根据第四实施例的一个变型例的主机的操作示例的流程图。
图49是图示了根据第五实施例的主机的配置示例的方框图。
图50是图示了根据第五实施例的存储控制器的配置示例的方框图。
图51是图示了根据第五实施例的可变电阻器的电阻分布的示例的示意图。
图52是描述了根据第五实施例的生成软判决值的方法的示意图。
图53是图示了根据第五实施例的主机的操作示例的流程图。
图54是图示了根据第五实施例的读取处理的示例的流程图。
图55是图示了根据第五实施例的一个变型例的主机的操作示例的流程图。
具体实施方式
下面将对本发明的某些实施例进行描述。描述顺序如下:
1.第一实施例(存储控制器通过多种软判决解码算法执行纠错的示例)
2.第二实施例(存储控制器基于主机的控制执行纠错的示例)
3.第三实施例(主机通过软判决解码算法执行纠错的示例)
4.第四实施例(从采用相同阈值读取的数据生成软判决值并采用该软判决值执行纠错的示例)
5.第五实施例(从采用不同阈值读取的数据生成软判决值并采用该软判决值执行纠错的示例)
(1、第一实施例)
(信息处理系统的配置示例)
图1是图示了根据第一实施例的信息处理系统的配置示例的方框图。信息处理系统包括主机100和储存器200。
主机100用于控制整个信息处理系统。更具体地,主机100生成命令和写入数据,并通过信号线109将该命令和写入数据提供给储存器200。而且,主机100接收来自储存器200的读取数据。该命令可用于控制储存器200,该命令的示例可包括用于将写入数据写入的写入命令以及用于对读取数据进行读取的读取命令。
储存器200包括存储控制器300和非易失性存储器400。存储控制器300用于控制非易失性存储器400。当存储控制器300从主机100接收写入命令和写入数据时,存储控制器300从该写入数据生成错误检测和纠正代码(ECC)。更具体地,存储控制器300将写入数据转换(即编码)为包含写入数据和奇偶校验的码字。存储控制器300通过信号线309访问非易失性存储器400以将已编码的数据写入非易失性存储器400。
而且,当存储控制器300接收来自主机100的读取命令时,存储控制器300通过信号线309访问非易失性存储器400以读取已编码的数据。然后,存储控制器300将已编码的数据转换(即解码)为编码前的原始数据。在解码过程中,存储控制器300基于ECC检测并纠正数据中的错误。存储控制器300将纠正后的数据提供给主机100。
要注意的是,存储控制器300与本发明的实施例中的“控制器”的具体示例相对应。
非易失性存储器400基于存储控制器300的控制保持数据。例如,可将ReRAM用作非易失性存储器400。要注意的是,除了ReRAM,快闪存储器、PCRAM和MRAM等都可用作非易失性存储器400。而且,存储控制器300将数据储存在非易失性存储器400中;然而,除了非易失性存储器400,数据也可储存在任何能够保持数据的储存介质或储存装置中。这种储存装置的一个示例可为硬盘驱动器(HDD)。
(主机的配置示例)
图2是图示了根据第一实施例的主机100的配置示例的方框图。主机100包括ROM(只读存储器)102、RAM(随机存取存储器)103和CPU(中央处理单元)104。而且,主机100包括用户接口101、总线105和储存器接口106。
用户接口101是在信息处理系统和信息处理系统的用户之间进行相互交换输入数据和输出数据的接口。ROM102对由CPU104等执行的程序进行保持。RAM103临时保持CPU104执行处理所需的数据。CPU104用于控制整个主机100。总线105是用于在用户接口101、ROM102、RAM103和CPU104与储存器接口106之间相互交换数据的公共路径。储存器接口106是用于在主机100与储存器200之间相互交换数据和命令的接口。
(存储控制器的配置示例)
图3是图示了根据第一实施例的存储控制器300的配置示例的方框图。存储控制器300包括主机接口301、RAM302、CPU303、ECC处理部304、ROM305、总线306和非易失性存储器接口307。
主机接口301使存储控制器300与主机100相互交换数据和命令。RAM302临时保持CPU303执行处理所需的数据。
ECC处理部304用于对写入数据编码和对读取数据解码。在对写入数据编码时,ECC处理部304通过对各个写入数据添加奇偶校验以预定单位对多个写入数据进行编码。采用能够通过软判决解码算法纠正错误的算法进行编码。而且,以预定单位编码后的各个数据称为“码字”。然后,ECC处理部304通过总线306将已编码的写入数据提供给非易失性存储器400。
进一步地,ECC处理部304将已编码的读取数据解码为原始数据。在该解码过程中,ECC处理部304采用软判决解码算法纠正码字中的错误。ECC处理部304通过总线306将表明纠错是否失败的纠正成功/失败信息提供给CPU303。而且,当纠错成功时,ECC处理部304通过总线306将已解码的数据提供给主机100。
CPU303用于控制整个存储控制器300。而且,当CPU303从ECC处理部304接收表明纠错失败的纠正成功/失败信息时,CPU303采用软判决解码算法纠正码字中的错误,该软判决解码算法的纠错能力高于ECC处理部304采用的算法的纠错能力。
ROM305对由CPU303执行的程序等进行保持。例如,ROM305可保持用于通过软判决解码算法执行纠错的步骤的程序。
总线306是用于主机接口301、RAM302、CPU303、ECC处理部304、ROM305与非易失性存储器接口307之间相互交换数据的公共路径。非易失性存储器接口307是用于使存储控制器300和非易失性存储器400之间相互交换数据和命令的接口。
图4是图示了根据第一实施例的存储控制器300的功能配置示例的方框图。存储控制器300包括编码部310、写入处理部320、读取处理部330和纠错部340。图4中的编码部310由图3中的ECC处理部304实现。而且,图4中的写入处理部320和读取处理部330由图3中的主机接口301、RAM302、CPU303、ROM305、总线306和非易失性存储器接口307等实现。图4中的纠错部340由图3中的RAM302、CPU303、ECC处理部304和ROM305等实现。
编码部310用于将写入数据编码为码字。在该编码过程中,将写入数据编码为代码,该代码中的错误将通过软判决解码算法进行纠正。更具体地,写入数据被编码为LDPC(低密度奇偶检验)代码等。编码部310将生成的码字提供给写入处理部320。
要注意的是,编码部310将写入数据编码为LDPC代码;然而,除了LDPC代码,写入数据也可被编码为采用软判决解码算法能够纠正错误的任何代码。例如,编码部310可将写入数据编码为卷积码或turbo码。
写入处理部320响应于写入命令执行将已编码的写入数据写入非易失性存储器400的步骤。当写入处理部320从主机100接收写入命令时,写入处理部320从编码部310获取被编码为码字的写入数据,并访问非易失性存储器400以将码字写入由命令指定的存储地址。
读取处理部330用于响应于读取命令执行从非易失性存储器400读取读取数据的步骤。当读取处理部330从主机100接收读取命令时,读取处理部330访问非易失性存储器400以读取数据,该数据与来自由该命令指定的存储地址的作为读取数据的码字相对应。码字中各个位元的值可为“0”或“1”,即由硬判决值读取的值。读取处理部330将读取数据提供给纠错部340。
纠错部340纠正读取数据(相当于码字的数据)中的错误。纠错部340首先采用多个解码算法中具有低纠错能力(以下称为“低级算法”)的算法纠正读取数据中的错误。在采用低级算法进行的纠错失败的情况下,纠错部340采用比低级算法具有更高纠错能力的软判决解码算法(以下称为“高级算法”)纠正读取数据中的错误。在采用高级算法进行的纠错成功的情况下,纠错部340将原始数据(k位)输出至主机100,该原始数据为纠正后的无奇偶校验的码字。而且,纠错部340生成一种状态,该状态被写入表明纠正是否成功的信息,并且将该状态输出至主机100。
软判决解码算法的纠错能力等级可由诸如BER(比特误码率)等数据错误率或诸如CNR(载波噪声比)等通信质量表示。例如,在采用软判决解码算法的情况下,将错误率(比如BER)抑制至特定值或更低值所需的通信质量(例如CNR)越低,软判决解码算法的纠错能力越高。或者,具有固定通信质量的错误率越低,软判决解码算法的纠错能力越高。
图5是图示了根据第一实施例的码字的数据结构示例的示意图。如图5所示,编码部310将各个k位数据编码为n位码字,其中k为整数,n为比k大的整数。各个码字包括k位数据和n-k位奇偶校验。各个码字为错误检测和纠正代码(ECC)。因此,码字包含待编码的原样的数据,能够轻易将码字分为数据和奇偶校验的代码称为“系统码”。要注意的是,数据可被编码为非系统码。
图6A和6B是图示了根据第一实施例的纠错代码的数据结构示例的示意图。在LDPC编码系统中,校验矩阵H由纠错部340生成。校验矩阵H为其中的各行各列中的“1”(以下称为“权重”)的数量是固定的校验矩阵。各行和各列的权重设定为使整个校验矩阵中“1”的数量是稀疏的。图6A是图示了校验矩阵H的权重的示例的示意图。在该示例中,各列的权重为“3”,各行的权重为“6”。图6B是图示了具有图6A所示权重的校验矩阵H的示例的示意图。
图7A和7B是描述了采用根据第一实施例的生成矩阵的方法的示意图。图7A是图示了根据第一实施例的生成矩阵G的示例的示意图。编码部310采用以下表达式从图6A和6B中示例的校验矩阵H生成图7A所示的生成矩阵G。要注意的是,编码不限于采用必须用到以下表达式的校验矩阵的编码。例如,可采用具有LDGM(低密度生成矩阵)配置的校验矩阵进行编码。
G×HT=0
如图7A所示,在校验矩阵H中列数和行数分别为n和n-k的情况下,由校验矩阵H生成具有n列和k行的生成矩阵G。图7B图示了用于从生成矩阵和数据生成码字的表达式的示例。如图7B所示,码字由生成矩阵G和待编码数据的乘积生成。码字包含k位数据和n-k位奇偶校验。要注意的是,编码部310用于生成生成矩阵G;然而,编码部310的配置并不限于此。编码部310可用于将预先生成的生成矩阵G储存在如ROM等生成矩阵存储部中,然后从生成矩阵存储部读取该生成矩阵。
(纠错部的配置示例)
图8是图示了根据第一实施例的纠错部340的配置示例的方框图。纠错部340包括读取数据缓冲器350、低级纠错部360、纠错程序存储部370和高级软判决纠错部380。
读取数据缓冲器350用于保持由读取处理部330读取的读取数据。
低级纠错部360用于采用比在高级软判决纠错部380中的算法具有更低纠错能力的解码算法(低级算法)纠正读取数据中的错误。例如,可采用作为一种软判决解码算法的Min-Sum算法作为低级算法。要注意的是,低级算法不限于软判决解码算法。例如,还可采用除软判决算法外的任何能够纠正读取数据中的错误的解码算法,比如采用位翻转(Bit-flipping)算法。低级纠错部360从读取数据缓冲器350中读取出读取数据并采用低级算法纠正读取数据中的错误。在纠错成功的情况下,低级纠错部360将原始数据(k位)输出至主机100,该原始数据为纠正后的无奇偶校验的读取数据。而且,低级纠错部360将表明纠正是否成功的纠正成功/失败信息提供给高级软判决纠错部380。
纠错程序存储部370用于保持通过高级算法执行纠错的步骤的纠错程序。
高级软判决纠错部380用于采用比低级纠错部360中的算法具有更高纠错能力的软判决解码算法(高级算法)纠正读取数据中的错误。例如,可采用BP(置信传播)算法作为该高级算法。BP算法也称为“和-积算法”。当高级软判决纠错部380从低级纠错部360接收表明纠正失败的纠正成功/失败信息时,高级软判决纠错部380读取纠错已经失败的读取数据。高级软判决纠错部380通过从纠错程序存储部370读取纠错程序然后执行纠错程序,开始对读取数据进行纠错。在纠错成功的情况下,高级软判决纠错部380将原始数据(k位)输出至主机100,该原始数据为纠正后的无奇偶校验的读取数据。而且,高级软判决纠错部380生成一种状态,该状态被写入表明纠正是否成功的信息,并将该状态输出至主机100。
如上所述,因为读取数据中的各个位元的值都为硬判决值,所以将硬判决值输入低级纠错部360和高级软判决纠错部380。
要注意的是,除了Min-Sum算法,低级纠错部360允许采用任何比高级软判决纠错部380中的算法具有更低纠错能力的软判决解码算法进行纠错。而且,除了BP算法,高级软判决纠错部380允许采用任何比低级纠错部360中的算法具有更高纠错能力的软判决解码算法进行纠错。
(低级纠错部的配置示例)
图9是图示了根据第一实施例的低级纠错部360的配置示例的方框图。低级纠错部360包括低级纠错电路361和纠正成功/失败判定部366。
低级纠错电路361是用于采用软判决解码算法纠正读取数据中的错误的电路。例如,在低级纠错电路361中,可采用Min-Sum算法作为软判决解码算法。在采用Min-Sum算法的情况下,低级纠错电路361包括变量节点处理部362和校验节点处理部364。
变量节点处理部362用于基于校验节点处理部364中的奇偶校验结果对读取数据中的错误进行检测和纠正。而且,校验节点处理部364用于对读取数据进行奇偶校验。
更具体地,变量节点处理部362从读取数据缓冲器350获取读取数据并基于该读取数据生成消息u0_iL。消息u0_iL为实数变量,其表示纠正前的码字中的第i码元(例如,位元)的值为“0”或“1”的似然值。而且,“i”为0至n-1之间的整数,其中,n为码字的码长。码元可为构成码字的最小单位,也称为“符号”。
变量节点处理部362基于消息u0_jL和校验节点处理部364的奇偶校验结果生成消息viL,并将消息viL输出至校验节点处理部364。消息viL为实数变量,其表示纠正后的码字中第iL码元(例如,位元)的似然值。例如,对数似然比Λ(riL)可生成为消息u0_iL。对数似然比Λ(riL)为码字的第iL位元的值为“0”的概率与码字的第iL位元的值为“1”的概率之比值的对数,对数似然比可由以下表达式确定,例如:
[数学式1]
...表达式1
其中,r为接收到的读取数据,P(riL=1|r)为读取数据中的第iL位元riL的值为“1”的概率,P(riL=1|r)为读取数据中的第iL位元riL的值为“0”的概率。
要注意的是,只要消息u0_iL为表示似然的值,消息u0_iL就不限于对数似然比。例如,riL的值为“1”或“0”的概率可用作消息u0_iL。这也可适用于其它消息(比如,viL和ujL)。在低级纠错电路361中,这些消息可例如由带符号的定点数据表示。
校验节点处理部364基于消息viL进行奇偶校验,再基于奇偶校验结果生成消息ujL,然后将消息ujL输出至变量节点处理部362。“jL”可为0至(n-k)-1之间的整数,其中k为待编码数据的大小。
变量节点处理部362和校验节点处理部364之间交换信息直到满足预定终止条件为止。例如,当消息交换进行了固定次数后或当对数似然比的绝对值超过阈值时,可确定满足了终止条件。
当满足终止条件后,变量节点处理部362基于接收的消息ujL生成消息viL',消息viL'为纠正结果,并将该消息viL'输出至纠正成功/失败判定部366。
纠正成功/失败判定部366用于判断纠错是否成功。例如,在校验矩阵各行上的所有奇偶校验都通过的情况下,纠正成功/失败判定部366可判定纠正成功。另一方面,在任一个奇偶校验失败的情况下,纠正成功/失败判定部366可判定纠正失败。要注意的是,纠正成功/失败判定部366可通过判断消息viL'的所有绝对值是否超过预定阈值来判断纠正是否成功。在纠正成功的情况下,纠正成功/失败判定部366基于消息viL'生成错误已被纠正的码字并将原始数据(k位)输出至主机100,该原始数据为无奇偶校验的码字。而且,纠正成功/失败判定部366将表明纠正是否成功的纠正成功/失败信息提供给高级软判决纠错部380。
图10是图示了根据第一实施例的低级纠错电路361的配置示例的方框图。在低级纠错电路361中,变量节点处理部362包括与码字的位元数量(即,校验矩阵H的列数)具有相等数量的变量节点363。而且,校验节点处理部364包括与奇偶校验位元的数量(即,校验矩阵H的行数)具有相等数量的校验节点365。然后,变量节点363和校验节点365基于校验矩阵H的分量值相互连接。更具体地,当第jL行和第iL列中的分量值为“1”时,第jL校验节点365和第iL变量节点363相互连接,当该分量值为“0”时,这些节点便不相互连接。
第iL变量节点363基于校验节点365的奇偶校验结果对读取数据的第iL位元中的错误进行检测和纠正。第jL校验节点365进行对应于校验矩阵H的第jL行的奇偶校验。
更具体地,第iL变量节点363从读取数据缓冲器350获取读取数据的第iL位元并基于该位元的值生成消息u0_iL。在消息u0_iL为对数似然比的情况下,当第iL位元的值为“1”时,预定正值设为u0_iL。另一方面,当第iL位元的值为“0”时,预定负值设为u0_iL
在消息u0_iL生成后,变量节点363为来自于与其连接的各个校验节点365的消息ujL设定初始值(例如,“0”)。然后,变量节点363通过采用以下表达式进行计算来确定消息viL,并将消息viL输出至与变量节点363连接的其中一个校验节点365。
[数学式2]
...表达式2
其中,dv为校验矩阵H的列中“1”的数量(即,权重)。
当校验节点365从与其连接的各个变量节点363接收消息viL时,校验节点365通过采用以下表达式进行计算来确定消息ujL,并将该消息ujL输出至与校验节点365连接的其中一个变量节点363。
[数学式3]
...表达式3
在以上表达式中,min|viL|表示viL的最小值。而且,在x≥0的情况下,sign(x)为将值“1”恢复为输入值x的函数,而在x<0的情况下,sign(x)为将值“-1”恢复为输入值x的函数。而且,dc为校验矩阵H的行中“1”的数量(即权重)。在该表达式中,对数运算不适用。在另一方面,在BP算法中,则必须采用对数运算。因此,与采用BP算法的电路相比,低级纠错部360的电路尺寸可以相对减小。
变量节点363和校验节点365采用表达式2和表达式4生成消息viL和ujL直到满足了预定终止条件为止,并在变量节点363和校验节点365之间交换这些消息。
当满足了终止条件,变量节点363采用以下表达式生成消息viL',并将消息viL'提供给纠正成功/失败判定部366。纠正成功/失败判定部366基于消息viL'确定码字的第iL位元的值。例如,在viL'≥0的情况下,纠正成功/失败判定部366确定第iL位元的值为“1”,而在viL'<0的情况下,则确定第iL位元的值为“0”。因此,读取数据中的错误得以纠正。
[数学式4]
...表达式4
要注意的是,变量节点363可通过将表达式2分为表达式4和表达式5来执行对表达式2的计算。在这种情况下,在不满足终止条件的情况下,变量节点363将由表达式5计算出的消息viL输出至校验节点365。然后,当满足终止条件时,变量节点363将由表达式5计算出的消息viL'提供给纠正成功/失败判定部366。
viL=viL'-udv ...表达式5
其中,udv为来自与变量节点363连接的第dv校验节点365的消息。
图11A和11B是图示了根据第一实施例的变量节点363与校验节点365之间消息交换的示例的示意图。图11A是图示了当变量节点363生成消息viL时消息交换的示例的示意图。例如,假设第一变量节点V1连接至第一、第三和第五校验节点U1、U2和U5。在这种情况下,当变量节点V1基于已读取的读取数据生成消息u0_1,并从校验节点U1和U3接收消息u1和u3时,变量节点V1基于这些消息生成消息v5,并将消息v5输出至校验节点U5。
图11B是图示了当校验节点365生成消息uj时消息交换的示例的示意图。例如,假设第一校验节点U1连接至第一、第三、第五、第六、第七和第九变量节点V1、V3、V5、V6、V7和V9。在这种情况下,当校验节点U1从变量节点V3、V5、V6、V7和V9接收消息v3、v5、v6、v7和v9时,校验节点U1基于这些消息生成消息u1,并将消息u1输出至变量节点V1。
(高级软判决纠错部)
图12是图示了根据第一实施例的高级软判决纠错部380的配置示例的示意图。高级软判决纠错部380包括高级纠错处理部381和纠正成功/失败判定部386。
高级纠错处理部381用于采用软判决解码算法纠正读取数据中的错误。在高级纠错处理部381中,可例如采用BP算法作为软判决解码算法。在采用BP算法的情况下,高级纠错处理部381包括变量节点处理部382和校验节点处理部384。
在高级纠错处理部381从低级纠错部360接收表明纠错失败的纠正成功/失败信息的情况下,高级纠错处理部381从纠错程序存储部370读取纠错程序,并执行该纠错程序。变量节点处理部382和校验节点处理部384中的处理由纠错程序执行。在高级纠错处理部381中,消息可由带符号的浮点数据表示。
除了变量节点383采用以下表达式6而非表达式2之外,变量节点处理部382的配置与低级纠错部360中的变量节点处理部362的配置相似。要注意的是,图12未图示变量节点383。
[数学式5]
...表达式6
其中,iH和jH分别取代表达式2中的iL和jL。
校验节点处理部384用于通过与低级纠错部360中变量节点处理部382的处理不同的处理进行奇偶校验。更具体地,校验节点处理部384中的校验节点385通过以下表达式7而非表达式3来确定消息ujH。要注意的是,图12中未图示校验节点385。
[数学式6]
...表达式7
其中,tanh()为双曲正切函数,Πx为x的无穷乘积。
表达式7可利用表达式8变换为以下表达式9。
a×b=exp(ln|a|+ln|b|)×sign(a)×sign(b) ...表达式8
[数学式7]
...表达式9
其中,ln(x)表示x的自然对数,sign()为与表达式3中sign()相似的函数。
由表达式7变换成的表达式9可进一步利用以下表达式10中定义的函数变换为表达式11。校验节点385可通过采用表达式11而非表达式7进行计算来确定消息ujH
...表达式10
[数学式8]
...表达式11
其中,ln(x)表示x的自然对数,sign()为与表达式3中sign()相似的函数。
要注意的是,消息ujH不仅可采用表达式7或表达式11来确定,也可通过比表达式7和表达式11更简单的计算来确定。例如,以下表达式12定义的函数R(v1、v2)的计算结果可预先计算出消息v1和v2的每一个可能值。然后,可预先形成与计算结果相关联的表格以及消息v1和v2的组合,如表达式13所示,从该表格读取的计算结果可递归地使用,从而轻易确定出消息ujH
R(v1,v2)=2tanh-1{tan(v1/2)tan(v2/2)} ...表达式12
ujH=R(v1,R(v2,R(v3…R(vdc-2,vdc-1)))) ...表达式13
纠正成功/失败判定部386用于确定纠错是否成功。在纠正成功/失败判定部386从变量节点处理部382接收消息viH',且消息viH'中的任何绝对值都等于或低于预定阈值的情况下,纠正成功/失败判定部386确定纠正失败。另一方面,在消息viH'中的所有绝对值都超过阈值的情况下,纠正成功/失败判定部366确定纠正成功。在纠正成功的情况下,纠正成功/失败判定部386基于消息viH'生成错误已被纠正的码字,并将原始数据(k位)输出至主机100,该原始数据为无奇偶校验的码字。而且,纠正成功/失败判定部386生成一种状态,该状态被写入表示纠正是否成功的信息,并且将该状态输出至主机100。
(主机的配置示例)
图13是图示了根据第一实施例的主机的操作示例的流程图。例如,当执行预定应用时可开始操作。主机100在必要时发出写入命令或读取命令(步骤S901)。主机100将发出的命令输出至存储控制器300。在发出的命令为写入命令的情况下,主机100将写入数据与写入命令一起输出至存储控制器300(步骤S902)。
主机100判断状态是否已被接收(步骤S903)。在主机100未接收到状态的情况下(步骤S903:否),主机100返回至步骤S903。在主机100接收了状态的情况下(步骤S903:是),主机100返回至步骤S901。
(存储控制器的操作示例)
图14是图示了根据第一实施例的存储控制器300的操作示例的流程图。例如,当存储控制器300上电时可开始该操作。
存储控制器300判断是否已从主机100接收了写入命令(步骤S951)。在存储控制器300接收了写入命令的情况下(步骤S951:是),存储控制器300对写入数据进行编码并将已编码的写入数据写入非易失性存储器400(步骤S952)。
在存储控制器300未接收到写入命令的情况下(步骤S951:否),或在步骤S952之后,存储控制器300判断是否已从主机100接收了读取命令(步骤S953)。在存储控制器300接收了读取命令的情况下(步骤S953:是),存储控制器300执行读取处理以对读取数据(数据相当于码字)进行读取(步骤S960)。在存储控制器300未接收到读取命令的情况下(步骤S953:否),或在步骤S960之后,存储控制器300返回至步骤S951。
图15是图示了根据第一实施例的读取处理的示例的流程图。存储控制器300采用低级算法执行低级纠错(步骤S970)。存储控制器300判断低级纠错中的纠正是否成功(步骤S961)。
在纠正失败的情况下(步骤S961:否),存储控制器300采用高级算法执行高级软判决纠错(步骤S980)。另一方面,在纠正成功的情况下(步骤S961:是),或在步骤S980之后,存储控制器300将状态输出至主机100。而且,在步骤S970或S980中的纠正成功的情况下,主机100将原始数据(k位)和状态输出至主机100(步骤S962),原始数据为无奇偶校验的码字。在步骤S962之后,存储控制器300结束读取处理。
图16是图示了根据第一实施例的低级纠错的流程图。存储控制器300从非易失性存储器400读取读取数据(步骤S971),并将读取数据储存在读取数据缓冲器350中(步骤S972)。存储控制器300中的低级纠错部360采用具有低纠错能力的软判决解码算法纠正读取数据中的错误(步骤S973)。在步骤S973之后,存储控制器300结束低级纠错。
图17是图示了根据第一实施例的高级软判决纠错的示例的流程图。存储控制器300从读取数据缓冲器350读取读取数据(步骤S981)。而且,存储控制器300中的高级软判决纠错部380从纠错程序存储部370读取纠错程序(步骤S982)。高级软判决纠错部380通过执行纠错程序采用具有高纠错能力的软判决解码算法来纠正读取数据中的错误(步骤S983)。在步骤S983之后,存储控制器300结束高级软判决纠错。
因此,在第一实施例中,当低级算法执行的纠错失败时,存储控制器300采用高级算法纠正错误;因此,在抑制处理时间增加的同时,提高了纠错能力。而且,可通过软件采用高级算法执行解码来抑制电路尺寸的增加。
(第一变型例)
在第一实施例中,输入至高级软判决纠错部380的输入值为硬判决值,然而,由低级纠错部360生成的软判决值可输入至高级软判决纠错部380。与采用硬判决值作为输入值的情况相比,高级软判决纠错部380中的纠错通过采用软判决值作为输入值而变得更容易。第一实施例的第一变型例与第一实施例的不同之处在于:由纠错部360生成的软判决值被输入至高级软判决纠错部380。
图18是图示了根据第一实施例的第一变型例的纠错部340的配置示例的方框图。根据第一实施例的第一变型例的纠错部340与根据第一实施例的纠错部的不同之处在于:低级纠错部360将消息viL'(即,软判决值)输出至高级软判决纠错部380。
图19是图示了根据第一实施例的第一变型例的低级纠错部360的示例的方框图。在根据第一实施例的第一变型例的低级纠错部360中,低级纠错电路361不仅将消息viL'输出至纠正成功/失败判定部366,还将消息viL'输出至高级软判决纠错部380。
图20是图示了根据第一实施例的第一变型例的高级纠错部380的示例的方框图。向根据第一实施例的第一变型例的变量节点处理部382输入消息viL'而不是输入读取数据。变量节点处理部382将消息viL'用作消息ui_0H来执行由表达式6示例的计算。
(第二变型例)
在第一实施例中,存储控制器300不将纠正成功/失败信息输出至主机100,然而,纠正成功/失败信息可以输出至主机100。根据第一实施例的第二变型例的存储控制器300与根据第一实施例的存储控制器不同之处在于,存储控制器300将纠正成功/失败信息输出至主机100。
图21是图示了根据第一实施例的第二变型例的纠错部340的配置示例的方框图。根据第一实施例的第二变型例的低级纠错部360与根据第一实施例的低级纠错部的不同之处在于:纠正成功/失败信息也输出至主机100。
图22是图示了根据第一实施例的第二变型例的主机100的操作示例的流程图。根据第一实施例的第二变型例的主机100与根据第一实施例的主机的不同之处在于:另外执行了步骤S911和S912。
在步骤S902之后,主机100判断表明纠正失败的纠正成功/失败信息是否已被接收(步骤S911)。在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100根据需要执行另一处理,而不必等待由存储控制器300正在纠正的数据的读取。在主机100未接收到表明纠正失败的纠正成功/失败信息的情况下(步骤S911:否),或在步骤S912之后,主机100执行步骤S903。
因为通过具有高纠错能力的算法进行纠正需要花费很长的时间,在通过具有低纠错能力的算法执行的纠正失败的情况下,如图22所示,主机100可以在进行纠正所需的预估时间内执行另一处理。
图23是图示了根据第一实施例的第二变型例的读取处理的示例的流程图。根据第一实施例的第二变型例的读取处理与根据第一实施例的读取处理的不同之处在于:另外执行了步骤S963。
在低级算法执行的纠正失败的情况下(步骤S961:否),存储控制器300生成表明纠正失败的纠正成功/失败信息,并将该纠正成功/失败信息输出至主机100(步骤S963)。然后,存储控制器300执行高级软判决纠错(步骤S980)。
(2、第二实施例)
(纠错部的配置示例)
在第一实施例中,在低级算法执行的纠错失败后,存储控制器300立即通过高级算法开始执行纠错。然而,存储控制器300可响应于主机100的控制通过高级算法开始执行纠错。根据第二实施例的存储控制器300与根据第一实施例的存储控制器的不同之处在于:高级算法响应于主机100的控制开始执行纠错。
图24是图示了根据第二实施例的纠错部340的配置示例的方框图。根据第二实施例的低级纠错部360与根据第一实施例的低级纠错部的不同之处在于:表明纠正是否成功的纠正成功/失败信息也输出至主机100。而且,根据第二实施例的高级软判决纠错部380与根据第一实施例的高级软判决纠错部的不同之处在于:响应于纠正开始命令而开始纠错。纠正开始命令是指令高级软判决纠错部380开始执行纠错的命令,纠正开始命令由主机100发出。
(主机的操作示例)
图25是图示了根据第二实施例的主机100的操作示例的流程图。根据第二实施例的主机100与根据第一实施例的主机的不同之处在于:另外执行了步骤S911、S921和S922。
在步骤S902之后,主机100判断表明纠正失败的纠正成功/失败信息是否已被接收(步骤S911)。在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100安排各种命令(包括纠正开始命令)的执行顺序(步骤S921)。然后,主机100根据该安排将纠正开始命令输出至存储控制器300(步骤S922)。在主机100未接收到表明纠正失败的纠正成功/失败信息的情况下(步骤S911:否),或在步骤S922之后,主机100执行步骤S903。
(存储控制器的操作示例)
图26是图示了根据第二实施例的读取处理的示例的流程图。根据第二实施例的读取处理与根据第一实施例的主机的不同之处在于:另外执行了步骤S963和S964。
在低级算法执行的纠正失败的情况下(步骤S961:否),存储控制器300生成表明纠正失败的纠正成功/失败信息,并将纠正成功/失败信息输出至主机100(步骤S963)。然后,存储控制器300判断是否已从主机100接收到纠正开始命令(步骤S964)。在存储控制器300未接收到纠正开始命令的情况下(步骤S964:否),存储控制器300返回至步骤S964。在存储控制器300已接收到纠正开始命令的情况下(步骤S964:是),存储控制器300执行高级软判决纠错(步骤S980)。
因此,在第二实施例中,主机100可以控制高级算法执行纠错的开始时刻;因此,可以对处理进行优化。例如,在低级算法执行的纠错在读取数据#1和#2(这些数据不需按顺序读取)中的数据#1失败的情况下,信息处理系统可延迟由高级算法对数据#1的纠错的时刻,并可通过低级算法首先对数据#2进行读取并且对数据#2进行纠错。因此,提高了吞吐量。
(第一变型例)
在第二实施例中,高级算法执行的纠错响应于主机100的控制而开始。然而,高级算法的纠错可响应于主机100的控制而暂停,然后再重新开始。根据第二实施例的第一变型例的存储控制器300与根据第二实施例的存储控制器的不同之处在于:高级算法执行的纠错被暂停,然后响应于主机100的控制而重新开始。
图27是图示了根据第二实施例的第一变型例的纠错部340的配置示例的方框图。根据第二实施例的第一变型例的高级软判决纠错部380与根据第二实施例的高级软判决纠错部的不同之处在于:纠错响应于中止命令而暂停。中止命令是指令高级软判决纠错部380暂停纠错的命令,中止命令由主机100发出。而且,根据第二实施例的第一变型例的高级软判决纠错部380与根据第二实施例的高级软判决纠错部的不同之处在于:被暂停的纠错响应于纠正重新开始命令而重新开始。纠正重新开始命令是指令高级软判决纠错部380重新开始执行纠错的命令,纠正重新开始命令由主机100发出。
图28是图示了根据第二实施例的第一变型例的主机100的操作示例的流程图。根据第二实施例的第一变型例的主机100与根据第二实施例的主机的不同之处在于:执行了步骤S923、S924、S991和S992以代替步骤S921和S922。
在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100判断当前正被纠正的数据的读取处理是否发生中断(步骤S923)。在发生中断的情况下(步骤S923:是),主机100发出中止命令,并将中止命令输出至存储控制器300(步骤924),然后判断中断处理是否完成(步骤S991)。在中断处理未完成的情况下(步骤S991:否),主机100返回至步骤S991。在中断处理完成的情况下(步骤S991:是),主机100发出纠正重新开始命令,并将纠正重新开始命令输出至存储控制器300(步骤S992)。在主机100未接收到表明纠正失败的纠正成功/失败信息的情况下(步骤S911:否),在未发生中断的情况下(步骤S923:否),或在步骤S992之后,主机100判断状态是否已被接收(步骤S903)。
在主机100未接收到状态的情况下(步骤S903:否),主机100返回至步骤S911。在主机100已接收了状态的情况下(步骤S903:是),主机100返回至步骤S901。
图29是图示了根据第二实施例的第一变型例的高级软判决纠错的示例的流程图。根据第二实施例的第一变型例的高级软判决纠错与根据第二实施例的高级软判决纠错的不同之处在于:另外执行了步骤S984和S985。
在执行了步骤S983之后,存储控制器300判断纠正是否已完成(步骤S984)。在纠正未完成的情况下(步骤S984:否),存储控制器300判断中止命令是否已被接收(步骤S985)。在存储控制器300接收了中止命令的情况下(步骤S985:是),存储控制器300判断纠正重新开始命令是否已被接收(步骤S993)。在存储控制器300未接收到纠正重新开始命令的情况下(步骤S993:否),存储控制器300返回至步骤S993。在存储控制器30接收了纠正重新开始命令的情况下(步骤S993:是),存储控制器300重新开始高级软判决纠错(步骤S994)。在存储控制器300未接收到中止命令的情况下(步骤S985:否),或在步骤S994之后,存储控制器300返回至步骤S984。在纠正完成的情况下(步骤S984:是),存储控制器300结束高级软判决纠错。
(第二变型例)
在第二实施例中,不论是哪类数据,信息处理系统都通过高级算法执行纠错;然而,根据数据的类型,也可不进行通过高级算法执行的纠错。例如,对于视频数据或图像数据,即使带有一些错误的数据被再现,这些数据仍是可视的而且不会有太多问题。因此,不太需要通过高级算法进行纠错。另一方面,数据库中的数据或文本数据无论花费多长时间最好进行彻底纠正。因此,非常有必要通过高级算法进行纠错。根据第二实施例的第二变型例的信息处理系统与根据第二实施例的信息处理系统的不同之处在于:基于数据的类型来判断是否需要通过高级算法进行纠错。
图30是图示了根据第二实施例的第二变型例的纠错部340的配置示例的方框图。根据第二实施例的第一变型例的高级软判决纠错部380与根据第二实施例的高级软判决纠错部的不同之处在于:基于使能信号进行纠错。使能信号是表明是否需要在高级软判决纠错部380中进行纠错的信号,使能信号由主机100生成。在需要进行纠错的情况下,使能信号可设为“开启”,而在不进行纠错的情况下,使能信号则可设为“关闭”。
图31是图示了根据第二实施例的第二变型例的主机100的操作示例的流程图。根据第二实施例的第二变型例的主机100与根据第二实施例的主机的不同之处在于:执行了步骤S925~S927以代替步骤S911、S921和S922。
主机100发出命令(步骤S901)。然而,当在步骤S901中发出读取命令时,主机100基于待读取的数据的类型生成使能信号。数据的类型可例如由当前执行的应用确定。更具体地,如果该应用是用于再现移动图像的应用,那么待读取的数据确定为视频数据,并生成被设为“关闭”的使能信号。而且,在当该应用为用于管理数据库的应用时,则待读取的数据被确定为该数据库中的数据,并生成被设为“开启”的使能信号。
要注意的是,数据的类型可由非易失性存储器400中保持该数据的区域确定。例如,在待读取数据来自保持着OS(操作系统)的区域的情况下,主机100可将使能信号设为“开启”,而在待读取数据来自其它区域时,主机100可将使能信号设为“关闭”。
主机100判断发出的命令是否为写入命令(步骤S925)。在发出的命令为写入命令的情况下(步骤S925:是),主机100将写入命令和写入数据输出至存储控制器300(步骤S926)。
另一方面,在发出的命令为读取命令的情况下(步骤S925:否),主机100将读取命令和使能信号输出至存储控制器300(步骤S927)。在步骤S926或步骤S927之后,主机100执行步骤S903。
要注意的是,采用了一种当生成读取命令时生成使能信号的配置。然而,生成使能信号的时刻不限于读取的时刻。例如,使能信号可在写入处理中生成,该使能信号可与已编码的数据一起储存在非易失性存储器400中。
图32是图示了根据第二实施例的第二变型例的读取处理的示例的流程图。根据第二实施例的第二变型例的读取处理与根据第二实施例的读取处理的不同之处在于:执行了步骤S965以代替步骤S963和S964。
在低级算法执行的纠正失败的情况下(步骤S961:否),存储控制器300判断使能信号是否设为“开启”(步骤S965)。在使能信号设为“开启”的情况下(步骤S965:是),存储控制器300执行高级软判决纠错(步骤S980)。在使能信号设为“关闭”的情况下(步骤S965:否),或在步骤S980之后,存储控制器300执行步骤S962。
(第三变型例)
在第二实施例中,信息处理系统采用一种高级算法;然而,也可采用选自多种高级算法中的一种算法。根据第二实施例的第三变型例的信息处理系统与根据第二实施例的信息处理系统的不同之处在于:采用了选自多种高级算法中的一种算法。
图33是图示了根据第二实施例的第三变型例的主机100的操作示例的流程图。根据第二实施例的第三变型例的主机100与根据第二实施例的主机的不同之处在于:执行了步骤S928和S929以代替步骤S921和S922。
在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100基于数据的类型从彼此具有不同纠错能力的多种高级算法中选择一种高级算法。例如,在数据为视频数据的情况下,可选择具有低纠错能力的高级算法。而且,在数据为数据库中的数据的情况下,可选择具有高纠错能力的高级算法。作为高级算法,可提供BP算法、分层BP算法、混合BP算法(shuffled BP algorithm)、改进BP算法以及线性编程等(步骤S928)。主机100发出指定对应于所选算法的纠错程序的纠正开始命令,并将该纠正开始命令输出至存储控制器300(步骤S929)。在步骤S929之后,主机100执行步骤S903。
要注意的是,主机100基于与纠正开始命令或信号不同的命令而指定算法。
图34是图示了根据第二实施例的第三变型例的高级软判决纠错的示例的流程图。根据第二实施例的第三变型例的高级软判决纠错与根据第二实施例的高级软判决纠错的不同之处在于:执行了步骤S986以代替步骤S982。
存储控制器300从读取数据缓冲器350读取读取数据(步骤S981)。高级软判决纠错部380从纠错程序存储部370读取由主机100指定的纠错程序(步骤S986),并执行步骤S983。
(3、第三实施例)
(主机的配置示例)
在第一实施例中,存储控制器300执行高级软判决纠错;然而,该纠正也可由主机100执行。根据第三实施例的信息处理系统与根据第一实施例的信息处理系统的不同之处在于:主机100执行高级软判决纠错。
图35是图示了根据第三实施例的主机100的配置示例的方框图。主机100包括码字获取部110、控制部120、读取数据缓冲器130、高级软判决纠错部140和纠错程序存储部150。
码字获取部110用于当存储控制器300执行的纠错失败时从存储控制器300获取读取数据(相当于码字的数据)。更具体地,码字获取部110从存储控制器300接收表明纠错是否成功的纠正成功/失败信息。在纠正成功/失败信息表明纠正失败的情况下,码字获取部110发出用于指定纠正失败的读取数据的地址的码字输出命令,并将该码字输出命令输出至存储控制器300。码字输出命令是指令存储控制器300将包含数据和奇偶校验的数据输出至主机100的命令。
存储控制器300响应于读取命令将原始数据(k位)输出至主机100,原始数据为无奇偶校验的码字。另一方面,存储控制器300响应于码字输出命令原样地输出没有移除奇偶校验的读取数据(n位)。码字获取部110从存储控制器300接收读取数据,并将读取数据储存在读取数据缓冲器130中。
控制部120用于控制整个主机100。控制部120根据用户的操作执行各种应用,并发出写入命令或读取命令。而且,在控制部120发出写入命令的情况下,控制部120将写入命令和数据输出至储存器200中。另一方面,在控制部120发出读取命令的情况下,控制部120从存储控制器300或高级软判决纠错部140接收错误已被纠正的数据,并对该数据进行处理。进一步地,控制部120从存储控制器300接收状态。
读取数据缓冲器130保持由码字获取部110获取的读取数据。
高级软判决纠错部140的配置与根据第一实施例的存储控制器300中的高级软判决纠错部380相似。高级软判决纠错部140将原始数据(k位)作为读取数据提供给控制部120,原始数据是已纠正的无奇偶校验的码字。
纠错程序存储部150的配置与根据第一实施例的存储控制器300中的纠错程序存储部370相似。
(存储控制器的配置示例)
图36是图示了根据第三实施例的存储控制器300的配置示例的方框图。根据第三实施例的存储控制器300的配置与根据第一实施例的存储控制器的不同之处在于:存储控制器300还包括码字输出部390。
码字输出部390用于从非易失性存储器400读取读取数据(n位),并响应于码字输出命令将读取数据输出至主机100。
而且,根据第三实施例的纠错部340与根据第一实施例的纠错部的不同之处在于:纠正成功/失败信息也输出至主机100。
(纠错部的配置示例)
图37是图示了根据第三实施例的纠错部340的配置示例的方框图。根据第三实施例的纠错部340与根据第一实施例的纠错部的不同之处在于:纠错部340不包括纠错程序存储部370和高级软判决纠错部380。而且,根据第三实施例的低级纠错部360将纠正成功/失败信息输出至主机100。
(主机的操作示例)
图38是图示了根据第三实施例的主机100的操作示例的流程图。根据第三实施例的主机100与根据第一实施例的主机的不同之处在于:另外执行了步骤S911、S931、S932和S980。
在步骤S902之后,主机100判断表明纠正失败的纠正成功/失败信息是否已被接收(步骤S911)。在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100发出用于指定纠错失败的读取数据的地址的码字输出命令。然后,主机100将码字输出命令输出至存储控制器300(步骤S931)。主机100将从存储控制器300读取的读取数据储存在读取数据缓冲器130中(步骤S932)。主机100执行高级软判决纠错(步骤S980),并返回至步骤S901。
在主机100未接收到表明纠正失败的纠正成功/失败信息的情况下(步骤S911:否),主机100执行步骤S903。
(存储控制器的操作示例)
图39是图示了根据第三实施例的存储控制器300的操作示例的流程图。根据第三实施例的存储控制器300与根据第一实施例的存储控制器的不同之处在于:还执行了步骤S954和S955。
在存储控制器300未接收到读取命令的情况下(步骤S953:否),或在步骤S960之后,存储控制器300判断码字输出命令是否已被接收(步骤S954)。在存储控制器300接收了码字输出命令的情况下(步骤S954:是),存储控制器300从非易失性存储器400读取读取数据(n位)并响应于码字输出命令将读取数据输出至主机100(步骤S955)。在存储控制器300未接收到码字输出命令的情况下(步骤S954:否),或在步骤S955之后,存储控制器300返回至步骤S951。
图40是图示了根据第三实施例的读取处理的示例的流程图。根据第三实施例的读取处理与根据第一实施例的读取处理的不同之处在于:执行了步骤S963以代替S980。
在纠正成功的情况下(步骤S961:是),存储控制器300将原始数据(k位)和状态输出至主机100(步骤S962),原始数据为纠正后的无奇偶校验的码字。另一方面,在纠正失败的情况下(步骤S961:否),存储控制器300将表明纠正失败的纠正成功/失败信息输出至主机100(步骤S963)。在步骤S962或步骤S963之后,存储控制器300结束读取处理。
因此,在第三实施例中,主机100执行高级软判决纠错;因此,主机100在高级软判决纠错中可以采用比存储控制器300更丰富的资源。
(4、第四实施例)
(主机的配置示例)
在第三实施例中,主机100将硬判决值输入高级软判决纠错部140;然而,通过输入软判决值会使得纠错更加容易。根据第四实施例的主机100与根据第三实施例的主机的不同之处在于:主机100生成软判决值并将软判决值输入高级软判决纠错部140。
图41是图示了根据第四实施例的主机100的配置示例的方框图。根据第四实施例的主机100与根据第三实施例的主机的不同之处在于:主机100还包括软判决值生成部160。
而且,当根据第四实施例的码字获取部110收到表明纠正失败的纠正成功/失败信息时,码字获取部110生成纠正停止信号,并在固定的时段将该纠正停止信号输出至储存器200。而且,在输出纠正停止信号期间,主机100以固定的周期多次将码字输出命令输出至储存器200。
纠正停止信号是指令存储控制器300在固定的时段暂停低级纠错的信号。而且,码字输出命令输出的周期例如是数据值根据随机电报噪声等而变化的周期。码字获取部110将每一个多次获取的读取数据储存在读取数据缓冲器130中。
软判决值生成部160用于从多次读取的读取数据中生成软判决值。软判决值生成部160基于每一个储存在读取数据缓冲器130中的读取数据生成软判决值,该软判决值与每一个位元为“1”或“0”的概率相对应。在这种情况下,在非易失性存储器中,可生成随机电报噪声,该随机电报噪声是使数据值随时间而变化的噪声。当生成这种噪声时,同一数据在不同的时刻被读取多次,这些数据的值可以互不相同。每一个位元为“1”或“0”的概率可通过保存这些数据的值的统计来确定。例如,在同一数据被读取的次数为10次,并且其中第一位元的值为“1”的读取数据已被读取的次数为9次的情况下,第一位元为“1”的概率为0.9。另一方面,第一位元为“0”的概率则为0.1。在对数似然比用作软判决值的情况下,由表达式1将In9(≈2.2)的值确定为软判决值。软判决值生成部160确定读取数据中所有位元的软判决值,生成包含这些软判决值的软判决值数据,并将生成的软判决值数据提供给高级软判决纠错部140。
高级软判决纠错部140采用软判决值数据中的软判决值作为表达式6中的消息u0_iH从而进行纠错。
要注意的是,如第一实施例所示,根据第四实施例的配置适用于存储控制器300通过高级算法进行纠错的配置。在这种情况下,存储控制器300设置了软判决值生成部160。
图42A~42D是图示了根据第四实施例的读取数据和软判决值的示例的示意图。考虑了存储控制器300从地址A读取读取数据且对读取数据执行的纠错失败的情况。
在这种情况下,主机100生成纠正停止信号,并将用于多次(例如,三次)指定地址A的码字输出命令输出至存储控制器300。存储控制器300从地址A多次读取读取数据,并将读取数据输出至主机100但不执行纠错。
图42A图示了第一次从地址A读取的读取数据#1的示例。假设码字的码长为n位。图42B图示了第二次从地址A读取的读取数据#2的示例,图42C图示了第三次从地址A读取的读取数据#3的示例。图42D图示了从读取数据#1~#3生成的软判决值数据的示例。例如,软判决值数据可为包含n个浮点数据的数据。
例如,在读取数据#1~#3的第0位的所有值都为“0”的情况下,第0位为“0”的概率为1.0;因此,通过表达式1获取负无穷值作为该位的值。在这种情况下,生成了由带有符号的浮点数据表示的数值范围内的最小值作为软判决值。而且,在读取数据#1的第一位为“1”,且读取数据#2和#3的第一位为“0”的情况下,第一位为“1”的概率为1/3。在这种情况下,通过表达式1生成第一位的软判决值ln2(≈0.7)。同样,也生成了n位中每一位的软判决值。生成包含这种n个软判决值的数据作为软判决值数据。
要注意的是,主机100从多次读取的数据获取软判决值数据;然而,软判决值可通过不同的方法获取。例如,非易失性存储器400中的存储单元可包括A/D(模数)转换器。存储在该存储单元中的数据的值可读取为软判决值,经A/D转换,然后被输出。主机100获取从存储单元读取的软判决值,并进行纠错。
(存储控制器的配置示例)
图43是图示了根据第四实施例的存储控制器300的配置示例的方框图。当根据第三实施例的读取处理部330接收读取命令或码字输出命令时,读取处理部330从非易失性存储器400读取读取数据,并将读取数据输出至纠错部340。纠错部340在从主机100输出纠正停止信号期间将读取数据输出,而不对读取数据进行纠错。
(主机的操作示例)
图44是图示了根据第四实施例的主机100的操作示例的流程图。根据第四实施例的主机100与根据第三实施例的主机的不同之处在于:执行了步骤S941~S945以代替步骤S931和S932。
在主机100已接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100生成纠正停止信号,并开始将纠正停止信号输出至存储控制器300(步骤S941)。然后,主机100发出用于指定储存纠错已失败的读取数据的地址的码字输出命令。然后,当从读取数据的最后读取开始已经过固定时段时,主机100将码字输出命令输出至存储控制器300(步骤S942)。主机100将从存储控制器300读取的读取数据储存在读取数据缓冲器130中(步骤S943)。
主机100判断读取数据被读取的次数是否达到预定次数(步骤S944)。在读取数据被读取的次数少于预定次数的情况下(步骤S944:否),主机100返回至步骤S942。在读取数据被读取的次数达到预定次数的情况下(步骤S944:是),主机100从各个读取数据生成表示读取数据的各个位元的软判决值的软判决值数据(步骤S945)。主机100采用软判决值作为输入值来执行高级软判决纠错(步骤S980)。
图45是图示了根据第四实施例的高级软判决纠错的示例的流程图。根据第四实施例的高级软判决纠错与根据第一实施例的高级软判决纠错的不同之处在于:执行了步骤S987以代替步骤S981。
主机100对生成的软判决值数据进行保持(步骤S987),并采用软判决值数据执行步骤S982和S983。
(存储控制器的操作示例)
图46是图示了根据第四实施例的存储控制器300的操作示例的流程图。根据第四实施例的存储控制器300与根据第一实施例的存储控制器的不同之处在于:另外地执行了步骤S954。
在存储控制器300未接收到读取命令的情况下(步骤S953:否),存储控制器300判断码字输出命令是否已被接收(步骤S954)。在存储控制器300接收了读取命令的情况下(步骤S953:是),或在存储控制器300接收了码字输出命令的情况下(步骤S954:是),存储控制器300执行读取处理(步骤S960)。在存储控制器300未接收到码字输出命令的情况下(步骤S954:否),或在步骤S960之后,存储控制器300返回至步骤S951。
图47是图示了根据第四实施例的读取处理的示例的流程图。根据第四实施例的读取处理与根据第一实施例的读取处理的不同之处在于:执行了步骤S963、S966和S967以代替S980。
存储控制器300判断纠正停止信号是否已被接收(步骤S966)。在存储控制器300接收了纠正停止信号的情况下(步骤S966:是),存储控制器300读取读取数据并响应于码字输出命令将读取数据输出至主机100(步骤S967)。另一方面,在存储控制器300未接收到纠正停止信号的情况下(步骤S966:否),存储控制器300执行低级纠错(步骤S970)。存储控制器300判断低级纠错中的纠正是否成功(步骤S961)。
在纠正成功的情况下(步骤S961:是),存储控制器300将原始数据(k位)和状态输出至主机100(步骤S962),原始数据为已纠正的无奇偶校验的码字。
在纠正失败的情况下(步骤S961:否),或在步骤S967之后,存储控制器300生成表明纠正失败的纠正成功/失败信息,并将纠正成功/失败信息输出至主机100(步骤S963)。在步骤S962或S963之后,存储控制器300结束读取处理。
因此,在第四实施例中,主机100生成软判决值并采用软判决值作为输入值而进行高级软判决纠错,因此能够比采用硬判决值作为输入值的情况更容易进行纠错。更具体地,提高了纠错能力。而且,减少了纠错所需的时间。
(变型例)
在第四实施例中,主机100多次读取读取数据,接着进行纠错;然而,可在每次读取读取数据的时候进行纠错。在错误率比预期低的情况下,纠错所需的时间比在每次读取读取数据时进行纠错的情况要短。例如,考虑了即使预期错误率需要进行十次读取而实际错误率却通过进行五次读取便能成功执行纠错这样一种情况。在这种情况下,当每次进行读取便进行纠错时,纠错在第五次时成功执行;因此,纠错所需的时间比进行了十次读取再进行纠错的情况要短。根据第四实施例的本变型例的主机100与根据第四实施例的主机的不同之处在于:在每次读取读取数据时进行纠错。
图48是图示了根据第四实施例的变型例的主机100的操作示例的流程图。根据该变型例的主机100与根据第四实施例的主机的不同之处在于:每次读取读取数据时执行高级软判决纠错。
更具体地,在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100将码字输出命令输出至存储控制器300(步骤S942)。主机100将从存储控制器300读取的读取数据储存在读取数据缓冲器130中(步骤S943),并生成软判决值数据(步骤S945)。主机100采用软判决值执行高级软判决纠错(步骤S980)。
主机100判断在高级软判决纠错中执行的纠错是否成功(步骤S946)。在纠错已失败的情况下(步骤S946:否),主机100判断读取数据被读取的次数是否达到预定次数(步骤S944)。在读取数据被读取的次数少于预定次数的情况下(步骤S944:否),主机100生成纠正停止信号,并开始将纠正停止信号输出至存储控制器300(步骤S941)。在步骤S941之后,主机100返回至步骤S901。而且,在纠错成功的情况下(步骤S946:是),或在读取数据被读取的次数达到预定次数的情况下(步骤S944:是),主机100基于纠错是否成功执行预定处理,并返回至步骤S901。
(5、第五实施例)
(主机的配置示例)
在第四实施例中,主机100从采用相同阈值读取的多个读取数据生成软判决值;然而,也可从采用不同阈值读取的多个读取数据生成软判决值。阈值是用于判断储存在非易失性存储器400中的位元的值是否为“1”或“0”的值。根据第五实施例的主机100与根据第四实施例的主机的不同之处在于:从采用不同阈值读取的多个读取数据生成软判决值。
在非易失性存储器400为ReRAM的情况下,非易失性存储器400包括多个可变电阻器元件,电阻值用作阈值。这些可变电阻器元件可以在两种状态下保持1位数据,即高电阻状态(HRS)和低电阻状态(LRS)。
图49是图示了根据第五实施例的主机100的配置示例的方框图。根据第五实施例的主机100与根据第四实施例的主机的不同之处在于:另外地提供了阈值控制部170。
阈值控制器部170用于当要对读取数据进行读取时控制阈值。阈值控制部170从存储控制器300接收纠正成功/失败信号。在纠正成功/失败信号表明纠正失败的情况下,阈值控制部170生成控制信号,该控制信号用于当要对读取数据进行读取时控制阈值使其成为与之前固定范围中的阈值不同的阈值,并且阈值控制部170将该阈值输出至存储控制器300。
根据第五实施例的软判决值生成部160基于当从多个读取数据中读取为“1”或“0”的特定值时的阈值的最大值或最小值而生成软判决值。
要注意的是,如第一实施例所示例,根据第五实施例的配置可适用于存储控制器300通过高级算法进行纠错的配置。在这种情况下,向存储控制器300提供了软判决值生成部160和阈值控制部170。
(存储控制器的配置示例)
图50是图示了根据第五实施例的存储控制器300的配置示例的方框图。当根据第五实施例的读取处理部330从主机100接收码字输出命令和阈值控制信号时,读取处理部330响应于该阈值控制信号控制阈值和读取数据,并将读取数据提供给纠错部340。
图51是图示了第五实施例中的可变电阻器元件的电阻分布的示例的示意图。横轴表示电阻值R,纵轴用相对值表示单元数量的相对分布。如图所示,可变电阻器元件的电阻分布分为低电阻状态和高电阻状态。
通过使可变电阻器元件的高电阻状态和低电阻状态分别对应“0”和“1”或“1”和“0”,各个可变电阻器可分别用作存储单元。高电阻状态和低电阻状态分别对应“0”和“1”还是“1”或“0”,这是可选的。例如,高电阻状态可对应“1”,低电阻状态可对应“0”。
在这些可变电阻器元件中储存的数据被读取的情况下,阈值通常用于判断每一个可变电阻器元件处于两种状态中的哪一种状态,即,每一个储存的数据为两个值中的哪一个值,该阈值被定义为阈值RN
存储单元的电阻值越接近阈值RN,存储单元中储存的数据的值为“1”和“0”的概率就越接近0.5。数据的值为“1”或“0”的概率接近0.5意味着存储单元没有恰当地保持数据。换句话说,该概率代表数据被恰当储存的程度。因此,在存储单元没有恰当保持数据的情况下,存储控制器300可以通过基于与该概率对应的软判决值进行纠错来防止纠错能力的下降。
下面列出了一个示例,在该示例中,小于阈值RN的预定阈值被定义为阈值RVL,而大于阈值RN的预定阈值被定义为阈值RVH。在纠错已失败的读取数据被多次读取的情况下,阈值在从阈值RVL至阈值RVH的范围内被控制。
图52是示出了根据第五实施例的生成软判决值的方法的示意图。考虑了采用四个阈值(即,阈值RVL、RL、RH和RVH)对读取数据进行读取的情况。在这种情况下,阈值RVL比阈值RL小,而阈值RL比阈值RH小。而且,阈值RH比阈值RVH小。以任意顺序将阈值控制为上述各个阈值。
可以采用上述各个阈值对从存储单元读取的值进行统计来估算存储单元的电阻值,可以通过该电阻值确定与存储单元中储存的位元为“1”或“0”的概率相对应的软判决值。例如,可基于“1”被读取时阈值的最大值来确定软判决值。或者,可基于“0”被读取时阈值的最小值来确定软判决值。
更具体地,考虑了采用所有阈值RVL、RL、RH和RVH对“1”进行读取的情况,即考虑了当“1”被读取时最大阈值为RVH的情况。在这种情况下,即使是在电阻值为最大阈值RVH的情况下,也读取了“1”;因此,存储单元的电阻值比阈值RVH大。由于存储单元的电阻值够大,所以存储单元中存储的数据为“1”的概率就够高,预期为1.0。因此,通过表达式1生成了正无穷软判决值。
接下来,考虑了采用阈值RVL和RL读取“1”的情况,即考虑了当“1”被读取时最大阈值为RL的情况。在这种情况下,存储单元的电阻值为介于阈值RVL和阈值RVH之间的值。由于存储单元的电阻值接近阈值RNRN,所以存储单元中储存的数据为“1”的概率预期接近0.5。因此,通过表达式1生成了为0.0的软判决值。
进一步地,考虑了采用所有阈值RVL、RL、RH和RVH读取“0”的情况,即考虑了当“1”被读取时最大阈值小于RVL的情况。在这种情况下,由于即使是在电阻值为最小阈值RVL的情况下,也读取了“0”,所以存储单元的电阻值比阈值RVL小。由于存储单元的电阻值十分小,所以存储单元中存储的数据为“1”的概率也就十分小,预期为0.0。因此,通过表达式1生成了正无穷软判决值。
进一步地,在当读取“1”时最大阈值为RH的情况下,生成了介于正无穷值和0.0之间的预定软判决值(例如,1.1)。在当读取“1”时最大阈值为RVL的情况下,生成了介于负无穷值和0.0之间的预定软判决值(例如,-1.1)。
(主机的操作示例)
图53是图示了根据第五实施例的主机100的操作的流程图。根据第五实施例的主机100与根据第四实施例的主机的不同之处在于:执行了步骤S947和S948以代替步骤S942和S944。
主机100开始将停止信号输出至存储控制器300(步骤S941),并将阈值控制信号和码字输出命令输出至存储控制器3400(步骤S947),该阈值控制信号用于控制阈值使其成为与之前阈值不同的值。主机100将从存储控制器300读取的读取数据储存在读取数据缓冲器130中(步骤S943)。主机100判断是否已采用固定范围内的所有阈值对读取数据进行了读取(步骤S948)。在未采用所有阈值对读取数据进行读取的情况下(步骤S948:否),主机100返回至步骤S947。另一方面,在已采用所有阈值对读取数据进行读取的情况下(步骤S948:是),主机100从各个读取数据生成软判决值(步骤S945)。
(存储控制器的操作示例)
图54是图示了根据第五实施例的读取处理的操作示例的流程图。根据第五实施例的读取处理与根据第一实施例的读取处理的不同之处在于:执行了步骤S968以代替S967。
在存储控制器300已接收了纠正停止信号的情况下(步骤S966:否),存储控制器300基于阈值控制信号和码字输出命令控制阈值并读取读取数据,并将读取数据输出至主机100(步骤S968)。在步骤S968之后,存储控制器300执行步骤S963。
因此,在第五实施例中,通过从采用不同阈值读取的多个读取数据生成软判决值并利用该软判决值,存储控制器300可以比采用硬判决值的情况更加容易地进行纠错。从采用不同阈值读取的多个读取数据生成的软判决值是表示数据被正常地储存的程度的值。因此,当基于该软判决值进行纠错时,可在数据没有被正常地储存的情况下防止纠错能力的下降。
(变型例)
在第五实施例中,主机100多次读取读取数据,接着进行纠错;然而,可在每次读取读取数据时进行纠错。根据第五实施例的变型例的主机与根据第五实施例的主机的不同之处在于:每次读取读取数据时进行纠错。
图55是图示了根据第五实施例的变型例的主机100的操作示例的流程图。根据第五实施例的变型例的主机与根据第五实施例的主机的不同之处在于:每次读取读取数据时进行高级软判决纠错。
更具体地,在主机100接收了表明纠正失败的纠正成功/失败信息的情况下(步骤S911:是),主机100将阈值控制信号和码字输出命令输出至存储控制器300(步骤S947)。主机10将从存储控制器300读取的读取数据储存在读取数据缓冲器130中(步骤S943),并生成软判决值数据(步骤S945)。主机10采用由此生成的软判决值数据执行高级软判决纠错(步骤S980)。
主机100判断在高级软判决纠错中执行的纠错是否成功(步骤S946)。在纠错失败的情况下(步骤S946:否),主机100判断是否已采用所有阈值对读取数据进行了读取(步骤S948)。在未采用所有阈值对读取数据进行读取的情况下(步骤S948:否),主机100生成纠正停止信号,并开始将纠正停止信号输出至存储控制器300(步骤S941)。在步骤S941之后,主机100返回至步骤S901。而且,在纠错成功的情况下(步骤S946:是),或在已采用所有阈值对读取数据进行读取的情况下(步骤S948:是),主机100基于纠错是否成功执行处理,并返回至步骤S901。
要注意的是,上面描述的本发明的实施例仅是实施本发明的示例,本发明的示例性实施例的特征与所附权利要求中列出的元件存在对应关系。相似地,所附权利要求中列出的元件与本发明的示例实施例中出现的命名相同的部件对应。然而,本发明不限于这些实施例,这一点可通过在不背离本发明的范围的条件下对这些实施例作多种变化来体现。
然而,上述实施例中描述的处理步骤可看作是具有这些步骤的方法、或者是用于使计算机执行这些步骤的程序、或者是保持这些程序的记录介质。可采用,例如,CD(光盘)、MD(迷你光碟)、DVD(数字化通用磁盘)、存储卡、蓝光光盘(注册商标)等作为记录介质。
要注意的是,本发明可具有以下配置:
(1)一种控制器,其包括:
低级纠错部,其用于执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。
(2)如根据(1)所述的控制器,其还包括:
读取处理部,其用于从存储器中读取所述码字并将所述码字提供给所述低级纠错部,所述码字包括多个码元;
码字获取部,其用于当所述低级纠错部执行的纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及
软判决值生成部,其用于基于由所述码字获取部读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。
(3)根据(2)所述的控制器,其中,所述软判决值生成部为每一个所述码元求取所述码字获取部读取所述特定值的频率,并基于所述频率生成所述软判决值。
(4)根据(2)所述的控制器,其还包括阈值控制部,所述阈值控制部用于在每次执行所述码字获取时在预定的范围内改变阈值,所述阈值为判断所述码元的值的阈值,
其中,所述软判决值生成部基于读取具有所述特定值的所述码元时所述阈值的最大值或最小值来生成所述软判决值。
(5)根据(2)所述的控制器,其中,
所述软判决值生成部在执行了多次所述码字获取之后生成所述软判决值,以及
所述高级软判决纠错部在生成所述软判决值时执行所述高级软判决纠错。
(6)根据(2)所述的控制器,其中,
所述软判决值生成部在每次执行所述码字获取时生成所述软判决值,以及
所述高级软判决纠错部在每次生成所述软判决值时执行所述高级软判决纠错。
(7)根据(1)所述的控制器,其中,
所述码字包括多个码元,以及
所述低级纠错部为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。
(8)一种信息处理系统,其包括:
主机,其用于发出用于指令从存储部读取码字的读取命令;
读取处理部,其用于响应于所述读取命令而从所述存储部读取所述码字;
低级纠错部,其用于执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及
高级软判决纠错部,其用于执行高级软判决纠错,在高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。
(9)根据(8)所述的信息处理系统,其中,
所述主机基于所述高级软判决纠错的处理时间确定包括纠正开始命令的一个以上命令的执行顺序,并将所述一个以上命令按照所述执行顺序提供给所述高级软判决纠错部,所述纠正开始命令用于当所述低级纠错部执行的纠错失败时指令所述高级软判决纠错的开始,以及,
当所述低级纠错部执行的纠错失败且所述纠正开始命令已提供给所述高级软判决纠错部时,所述高级软判决纠错部开始所述高级软判决纠错。
(10)根据(8)所述的信息处理系统,其中,
当所述低级纠错部执行的纠错失败且读取所述码字发生中断时,所述主机发出暂停所述高级软判决纠错的中止命令,以及
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部响应于所述中止命令暂停正在执行的所述高级软判决纠错。
(11)根据(8)所述的信息处理系统,其中,
所述主机还基于所述码字的类型生成表明是否执行所述高级软判决纠错的使能命令,以及,
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部响应于所述使能信号执行所述高级软判决纠错。
(12)根据(8)所述的信息处理系统,其中,
所述高级算法包括多种高级算法,
所述主机基于所述码字的类型指定所述多种高级算法中的一种,以及
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部采用所述指定的高级算法纠正所述码字中的错误。
(13)一种信息处理系统,其包括:
控制器,其用于从存储部读取码字并执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及,
主机,其用于当所述控制器执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力。
(14)根据(13)所述的信息处理系统,其中,
当所述控制器执行的纠错失败时,所述主机发出码字输出命令,所述码字输出命令用于指令所述控制器输出所述码字,以及
所述控制器响应于所述码字输出命令从所述存储部读取所述码字并将所述码字输出至所述主机,而不执行所述低级纠错。
(15)根据(13)所述的信息处理系统,其中,
所述控制器在所述低级纠错中生成纠正成功/失败信息并将所述纠正成功/失败信息输出至所述主机,所述纠正成功/失败信息表明对所述码字的纠错是否成功,以及
所述主机基于所述纠正成功/失败信息判断所述控制器执行的纠错是否失败。
(16)一种控制器的控制方法,所述方法包括:
执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
当所述低级纠错中执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力。
(17)一种嵌入有程序的非暂存性有形记录介质,当所述计算机可读程序由计算机执行时,使得所述计算机实施一种方法,所述方法包括:
执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
当所述低级纠错中执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力。
本领域的技术人员应理解,根据本发明所附权利要求或其等同物的保护范围内的设计要求和其它因素,本发明可具有各种修改、组合、子组合和变更。
相关文件的交叉引用
本申请要求于2013年1月21日提交的日本专利申请JP2013-008257的优先权,其全部内容通过引用的方式并入本文。

Claims (16)

1.一种控制器,其包括:
低级纠错部,其用于执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述控制器还包括:
读取处理部,其用于从存储器中读取所述码字并将所述码字提供给所述低级纠错部,所述码字包括多个码元;
码字获取部,其用于当所述低级纠错部执行的纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及
软判决值生成部,其用于基于由所述码字获取部读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。
2.根据权利要求1所述的控制器,其中,所述软判决值生成部为每一个所述码元求取所述码字获取部读取所述特定值的频率,并基于所述频率生成所述软判决值。
3.根据权利要求1所述的控制器,其还包括阈值控制部,所述阈值控制部用于在每次执行所述码字获取时在预定的范围内改变阈值,所述阈值为判断所述码元的值的阈值,
其中,所述软判决值生成部基于读取具有所述特定值的所述码元时所述阈值的最大值或最小值来生成所述软判决值。
4.根据权利要求1所述的控制器,其中,
所述软判决值生成部在执行了多次所述码字获取之后生成所述软判决值,以及
所述高级软判决纠错部在生成所述软判决值时执行所述高级软判决纠错。
5.根据权利要求1所述的控制器,其中,
所述软判决值生成部在每次执行所述码字获取时生成所述软判决值,以及
所述高级软判决纠错部在每次生成所述软判决值时执行所述高级软判决纠错。
6.一种控制器,其包括:
低级纠错部,其用于执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
高级软判决纠错部,其用于执行高级软判决纠错,在所述高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述码字包括多个码元,且
所述低级纠错部为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。
7.一种信息处理系统,其包括:
主机,其用于发出用于指令从存储部读取码字的读取命令;
读取处理部,其用于响应于所述读取命令而从所述存储部读取所述码字;
低级纠错部,其用于执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及
高级软判决纠错部,其用于执行高级软判决纠错,在高级软判决纠错中,当所述低级纠错部执行的纠错失败时,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述信息处理系统还包括:
读取处理部,其用于从存储器中读取所述码字并将所述码字提供给所述低级纠错部,所述码字包括多个码元;
码字获取部,其用于当所述低级纠错部执行的纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及
软判决值生成部,其用于基于由所述码字获取部读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述高级软判决纠错部。
8.根据权利要求7所述的信息处理系统,其中,
所述主机基于所述高级软判决纠错的处理时间确定包括纠正开始命令的一个以上命令的执行顺序,并将所述一个以上命令按照所述执行顺序提供给所述高级软判决纠错部,所述纠正开始命令用于当所述低级纠错部执行的纠错失败时指令所述高级软判决纠错的开始,以及,
当所述低级纠错部执行的纠错失败且所述纠正开始命令已提供给所述高级软判决纠错部时,所述高级软判决纠错部开始所述高级软判决纠错。
9.根据权利要求7所述的信息处理系统,其中,
当所述低级纠错部执行的纠错失败且读取所述码字发生中断时,所述主机发出暂停所述高级软判决纠错的中止命令,以及
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部响应于所述中止命令暂停正在执行的所述高级软判决纠错。
10.根据权利要求7所述的信息处理系统,其中,
所述主机还基于所述码字的类型生成表明是否执行所述高级软判决纠错的使能信号,以及,
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部响应于所述使能信号执行所述高级软判决纠错。
11.根据权利要求7所述的信息处理系统,其中,
所述高级算法包括多种高级算法,
所述主机基于所述码字的类型指定所述多种高级算法中的一种,以及
当所述低级纠错部执行的纠错失败时,所述高级软判决纠错部采用所述指定的高级算法纠正所述码字中的错误。
12.一种信息处理系统,其包括:
控制器,其用于从存储部读取码字并执行低级纠错,在所述低级纠错中,所述码字中的错误采用预定解码算法进行纠正;以及,
主机,其用于当所述控制器执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决解码算法,所述软判决解码算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述信息处理系统还包括:
读取处理部,其用于从所述存储部中读取所述码字并将所述码字提供给所述控制器,所述码字包括多个码元;
码字获取部,其用于当所述控制器执行的纠错失败时多次执行从所述存储部中读取所述码字的码字获取;以及
软判决值生成部,其用于基于由所述码字获取部读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值被替换为所述软判决值的码字提供给所述主机。
13.根据权利要求12所述的信息处理系统,其中,
当所述控制器执行的纠错失败时,所述主机发出码字输出命令,所述码字输出命令用于指令所述控制器输出所述码字,以及
所述控制器响应于所述码字输出命令从所述存储部读取所述码字并将所述码字输出至所述主机,而不执行所述低级纠错。
14.根据权利要求12所述的信息处理系统,其中,
所述控制器在所述低级纠错中生成纠正成功/失败信息并将所述纠正成功/失败信息输出至所述主机,所述纠正成功/失败信息表明对所述码字的纠错是否成功,以及
所述主机基于所述纠正成功/失败信息判断所述控制器执行的纠错是否失败。
15.一种控制器的控制方法,所述方法包括:
执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
当所述低级纠错中执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述控制方法还包括:
在执行所述低级纠错之前,从存储器中读取所述码字并提供所述码字以执行所述低级纠错,所述码字包括多个码元;
当所述低级纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及
在执行所述高级软判决纠错时,基于读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值替换为所述软判决值的码字,以执行所述高级软判决纠错。
16.一种嵌入有程序的非暂存性有形记录介质,当所述非暂存性有形记录介质中嵌入的所述程序由计算机执行时,使得所述计算机实施一种方法,所述方法包括:
执行低级纠错,在所述低级纠错中,码字中的错误采用预定解码算法进行纠正;以及
当所述低级纠错中执行的纠错失败时执行高级软判决纠错,在所述高级软判决纠错中,所述码字中的错误采用高级算法进行纠正,所述高级算法为软判决算法,所述软判决算法的纠错能力高于所述预定解码算法的纠错能力,
其中,所述方法还包括:
在执行所述低级纠错之前,从存储器中读取所述码字并提供所述码字以执行所述低级纠错,所述码字包括多个码元;
当所述低级纠错失败时多次执行从所述存储器中读取所述码字的码字获取;以及
在执行所述高级软判决纠错时,基于读取的每一个所述码字而为每一个所述码元生成软判决值,所述软判决值与每一个所述码元的值为特定值的概率相对应,并将每一个所述码元的值替换为所述软判决值的码字,以执行所述高级软判决纠错。
CN201410016125.3A 2013-01-21 2014-01-14 控制器、信息处理系统、控制器的控制方法以及程序 Active CN103942154B (zh)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
JP2013-008257 2013-01-21
JP2013008257A JP2014140111A (ja) 2013-01-21 2013-01-21 コントローラ、情報処理システム、コントローラの制御方法およびプログラム

Publications (2)

Publication Number Publication Date
CN103942154A CN103942154A (zh) 2014-07-23
CN103942154B true CN103942154B (zh) 2018-10-23

Family

ID=51189826

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201410016125.3A Active CN103942154B (zh) 2013-01-21 2014-01-14 控制器、信息处理系统、控制器的控制方法以及程序

Country Status (3)

Country Link
US (1) US9385754B2 (zh)
JP (1) JP2014140111A (zh)
CN (1) CN103942154B (zh)

Families Citing this family (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US9258215B2 (en) * 2013-01-02 2016-02-09 Infinera Corporation Optical layer protection switching applications
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
JP2016062463A (ja) * 2014-09-19 2016-04-25 株式会社東芝 メモリシステム、誤り訂正装置、および誤り訂正方法
US10084481B2 (en) 2014-12-18 2018-09-25 Apple Inc. GLDPC soft decoding with hard decision inputs
DE102015104841A1 (de) * 2015-03-30 2016-10-06 Infineon Technologies Ag Chip und Verfahren zum Detektieren einer Veränderung eines gespeicherten Datenvektors
JP6605839B2 (ja) 2015-05-08 2019-11-13 株式会社東芝 復号装置、復号方法及びプログラム
US9542269B1 (en) * 2015-06-29 2017-01-10 SK Hynix Inc. Controller controlling semiconductor memory device and operating method thereof
US9817716B2 (en) 2015-07-16 2017-11-14 Avago Technologies General Ip (Singapore) Pte. Ltd. Systems and methods for retaining non-converged data sets for additional processing
US10133627B2 (en) * 2015-12-11 2018-11-20 SK Hynix Inc. Memory device controller with mirrored command and operating method thereof
KR20170133545A (ko) * 2016-05-25 2017-12-06 에스케이하이닉스 주식회사 반도체장치 및 반도체시스템
US10409672B2 (en) 2016-11-16 2019-09-10 SK Hynix Inc. Media quality aware ECC decoding method selection to reduce data access latency
US10636504B2 (en) * 2017-10-31 2020-04-28 Sandisk Technologies Llc Read verify for improved soft bit information for non-volatile memories with residual resistance
JP7237674B2 (ja) 2019-03-19 2023-03-13 キオクシア株式会社 メモリシステム
JP2022181670A (ja) 2021-05-26 2022-12-08 富士通株式会社 記憶装置及び記憶装置の制御方法

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877592A (zh) * 2009-04-28 2010-11-03 三菱电机株式会社 纠错装置以及纠错方法
CN102024501A (zh) * 2009-09-18 2011-04-20 株式会社东芝 存储器系统以及对存储器系统的控制方法

Family Cites Families (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3863058B2 (ja) * 2001-09-13 2006-12-27 三菱電機株式会社 光受信装置
EP1676193A4 (en) * 2003-10-24 2006-11-08 Tyco Telecomm Us Inc SYSTEM AND METHOD FOR SETTING SOFT DECISION SWELLS IN A SOFT DECISION ERROR CORRECTION SYSTEM
JP4261575B2 (ja) * 2006-11-30 2009-04-30 株式会社東芝 誤り訂正処理装置及び誤り訂正処理方法
US9176907B2 (en) * 2008-09-12 2015-11-03 Hitachi, Ltd. Semiconductor device and data processing system
US8473815B2 (en) * 2008-12-22 2013-06-25 Industrial Technology Research Institute Methods and systems of a flash memory controller and an error correction code (ECC) controller using variable-length segmented ECC data
CN102870330B (zh) * 2010-04-27 2015-03-25 日本电气株式会社 编码设备、纠错码配置方法及其程序
JP2012160229A (ja) * 2011-01-31 2012-08-23 Toshiba Corp 情報再生装置及び情報再生方法
KR101968746B1 (ko) * 2011-12-30 2019-04-15 삼성전자주식회사 저장 장치로부터 데이터를 읽는 읽기 방법, 에러 정정 장치, 그리고 에러 정정 코드 디코더를 포함하는 저장 시스템
KR102089570B1 (ko) * 2012-06-04 2020-03-16 삼성전자주식회사 저장 장치 및 그것의 데이터 처리 방법
JP5591876B2 (ja) * 2012-06-22 2014-09-17 株式会社東芝 誤り訂正装置、誤り訂正方法およびプログラム
JP2014140111A (ja) * 2013-01-21 2014-07-31 Sony Corp コントローラ、情報処理システム、コントローラの制御方法およびプログラム
KR102252379B1 (ko) * 2013-06-24 2021-05-14 삼성전자주식회사 메모리 시스템 및 이의 독출 방법

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101877592A (zh) * 2009-04-28 2010-11-03 三菱电机株式会社 纠错装置以及纠错方法
CN102024501A (zh) * 2009-09-18 2011-04-20 株式会社东芝 存储器系统以及对存储器系统的控制方法

Also Published As

Publication number Publication date
US20140208182A1 (en) 2014-07-24
CN103942154A (zh) 2014-07-23
US9385754B2 (en) 2016-07-05
JP2014140111A (ja) 2014-07-31

Similar Documents

Publication Publication Date Title
CN103942154B (zh) 控制器、信息处理系统、控制器的控制方法以及程序
CN103970645B (zh) 错误检测与纠正装置、错误检测与纠正方法、信息处理器
JP5722420B2 (ja) 縮退故障を有するメモリセル内にビットを記憶するための技術
US8949693B2 (en) Antipodal-mapping-based encoders and decoders
CN104247273B (zh) 用于重构码字的设备及计算机实现的方法
TWI604698B (zh) 具有錯誤校正處置之低密度同位檢查解碼器
TWI411912B (zh) 使用寫入驗證之代碼之錯誤底限減緩
CN107077430A (zh) 存储器控制器、存储器系统以及存储器控制器控制方法
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
JP2003115195A5 (zh)
CN105740088B (zh) 闪存数据纠错方法及装置
TW201018095A (en) Overcoming LDPC trapping sets by decoder reset
JP2015015701A5 (zh)
US9548761B2 (en) Coding and decoding of error correcting codes
US10396817B2 (en) Priori information based post-processing in low-density parity-check code decoders
CN105304142B (zh) 解码方法、存储器存储装置及存储器控制电路单元
US20150222291A1 (en) Memory controller, storage device and memory control method
CN117215824A (zh) 基于机器学习的读出数据错误处理
CN114691413A (zh) 数据存储装置中的硬解码方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
WO2015116136A1 (en) Data storing in memory arrays
CN105095011B (zh) 数据处理方法、存储器控制电路单元以及存储器存储装置
KR20170064978A (ko) Raid 메모리의 여러 ecc 블록들 내의 데이터를 정정하기 위한 장치 및 방법
CN105915234B (zh) 避免对涡轮乘积码误校正的方案
US8799737B1 (en) Soft-information modification in concatenated decoding systems

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C41 Transfer of patent application or patent right or utility model
TA01 Transfer of patent application right

Effective date of registration: 20161018

Address after: Kanagawa

Applicant after: SONY semiconductor solutions

Address before: Tokyo, Japan

Applicant before: Sony Corp

GR01 Patent grant
GR01 Patent grant