JP6657634B2 - 符号化装置、メモリシステム、通信システムおよび符号化方法 - Google Patents

符号化装置、メモリシステム、通信システムおよび符号化方法 Download PDF

Info

Publication number
JP6657634B2
JP6657634B2 JP2015146671A JP2015146671A JP6657634B2 JP 6657634 B2 JP6657634 B2 JP 6657634B2 JP 2015146671 A JP2015146671 A JP 2015146671A JP 2015146671 A JP2015146671 A JP 2015146671A JP 6657634 B2 JP6657634 B2 JP 6657634B2
Authority
JP
Japan
Prior art keywords
parity
candidate
unit
data
candidate parity
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
JP2015146671A
Other languages
English (en)
Other versions
JP2017027440A (ja
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 Corp
Original Assignee
Sony 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 Corp filed Critical Sony Corp
Priority to JP2015146671A priority Critical patent/JP6657634B2/ja
Priority to PCT/JP2016/062159 priority patent/WO2017018008A1/ja
Priority to US15/736,079 priority patent/US10481971B2/en
Publication of JP2017027440A publication Critical patent/JP2017027440A/ja
Application granted granted Critical
Publication of JP6657634B2 publication Critical patent/JP6657634B2/ja
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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
    • 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
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/16Protection against loss of memory contents
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • H03M13/095Error detection codes other than CRC and single parity bit 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/35Unequal or adaptive error protection, e.g. by providing a different level of protection according to significance of source information or by adapting the coding according to the change of transmission channel characteristics
    • 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/61Aspects and characteristics of methods and arrangements for error correction or error detection, not provided for otherwise
    • H03M13/611Specific encoding aspects, e.g. encoding by means of decoding
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C16/00Erasable programmable read-only memories
    • G11C16/02Erasable programmable read-only memories electrically programmable
    • G11C16/06Auxiliary circuits, e.g. for writing into memory
    • 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/09Error detection only, e.g. using cyclic redundancy check [CRC] codes or single parity bit
    • 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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/1515Reed-Solomon 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/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/13Linear codes
    • H03M13/15Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes
    • H03M13/151Cyclic codes, i.e. cyclic shifts of codewords produce other codewords, e.g. codes defined by a generator polynomial, Bose-Chaudhuri-Hocquenghem [BCH] codes using error location or error correction polynomials
    • H03M13/152Bose-Chaudhuri-Hocquenghem [BCH] 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/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/13Linear codes
    • H03M13/19Single error correction without using particular properties of the cyclic codes, e.g. Hamming codes, extended or generalised Hamming codes

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Probability & Statistics with Applications (AREA)
  • General Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • Quality & Reliability (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Error Detection And Correction (AREA)
  • For Increasing The Reliability Of Semiconductor Memories (AREA)
  • Read Only Memory (AREA)
  • Mathematical Physics (AREA)
  • Algebra (AREA)
  • Pure & Applied Mathematics (AREA)

Description

本技術は、符号化装置、メモリシステム、通信システムおよび符号化方法に関する。詳しくは、データを符号化してメモリセルに書き込む符号化装置、メモリシステム、通信システムおよび符号化方法に関する。
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
これらの不揮発性メモリの中には、論理値「0」を保持する際のデータ保持特性と、論理値「1」を保持する際のデータ保持特性とが異なるものがある。このデータ保持特性は、リテンションとも呼ばれる。論理値「0」のデータ保持特性(リテンション)の方が良好である場合に、「1」の個数が少なくなるように所定の変換処理(反転など)をユーザデータに対して行うメモリコントローラが提案されている(例えば、特許文献1参照。)。このメモリコントローラは、変換処理後のユーザデータの誤りを検出するためのパリティをユーザデータに付加してメモリセルに書き込む。
特開2013−239142号公報
上述の従来技術では、ユーザデータの反転により、そのユーザデータを保持するメモリセルのリテンションが向上する。しかしながら、メモリコントローラがパリティを反転せずにそのまま書き込むため、パリティを保持するメモリセルのリテンションが向上しないという問題がある。
本技術はこのような状況に鑑みて生み出されたものであり、データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部とを具備する符号化装置、および、当該装置における符号化方法である。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。
また、この第1の側面において、前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含んでもよい。これにより、ユーザデータ以外の領域に可変領域が配置された情報部からパリティが生成されるという作用をもたらす。
また、この第1の側面において、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて特定の値のビットの個数を重みとして計数する第1の重みカウンタと、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、上記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、特定の値のビット数の比較結果に基づいてパリティが選択されるという作用をもたらす。
また、この第1の側面において、メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビット数を書換えビット数として計数する第1の書換えビット数カウンタと、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、上記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、書換えビット数の比較結果に基づいてパリティが選択されるという作用をもたらす。
また、この第1の側面において、メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、上記選択部は、上記第1の候補パリティと当該第1の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、上記選択部は、上記第2の候補パリティと当該第2の候補パリティに対応する上記未使用データとにおいて上記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、上記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて上記所定の条件を満たすパリティを選択する比較部とを備えてもよい。これにより、最長ランの長さの比較結果に基づいてパリティが選択されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記ユーザデータと上記選択パリティとの間に上記未使用データが配置されてもよい。これにより、ユーザデータと選択パリティとの間に配置された未使用データが変更されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記未使用データと上記選択パリティとの間に上記ユーザデータが配置されてもよい。これにより、未使用データと選択パリティとの間にユーザデータが配置された符号語の未使用データが変更されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記ユーザデータは複数の領域に分散して配置されてもよい。これにより、ユーザデータが複数の領域に分散して配置された符号語の未使用データが変更されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記未使用データは、複数の領域に分散して配置されてもよい。これにより、複数の領域に分散して配置された未使用データが変更されるという作用をもたらす。
また、この第1の側面において、上記未使用データは、前記可変領域と値が変更されない固定領域とからなり、上記第2候補パリティ生成部は、上記可変領域の値を変更した上記情報部に対応する上記第2の候補パリティを生成してもよい。これにより、未使用データ内の可変領域の値が変更されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記可変領域は複数の領域に分散して配置されてもよい。これにより、複数の領域に分散して配置された可変領域が変更されるという作用をもたらす。
また、この第1の側面において、上記符号語において上記固定領域は複数の領域に分散して配置されてもよい。これにより、固定領域が複数の領域に分散して配置された符号語の未使用データが変更されるという作用をもたらす。
また、この第1の側面において、上記第1の候補パリティ生成部は、上記情報部から上記第1の候補パリティを生成し、上記第2の候補パリティ生成部は、上記第1の候補パリティと第1のパリティパターンとの論理演算により上記第2の候補パリティを生成してもよい。これにより、第1の候補パリティと第1のパリティパターンとの論理演算により第2の候補パリティが生成されるという作用をもたらす。
また、この第1の側面において、第2のパリティパターンと上記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、上記第2のパリティパターンと上記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部とをさらに具備し、上記選択部は、上記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択してもよい。これにより、第2のパリティパターンと第1の候補パリティとの論理演算により第3の候補パリティが生成され、第2のパリティパターンと第2の候補パリティとの論理演算により第4の候補パリティが生成されるという作用をもたらす。
また、この第1の側面において、ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の上記ユーザデータと上記変換処理前の上記ユーザデータとのいずれかを上記第1の候補パリティ生成部に出力するユーザデータ変換部をさらに具備し、上記第1の候補パリティ生成部は、上記出力されたユーザデータを含む上記第1の情報部から上記第1の候補パリティを生成してもよい。これにより、ユーザデータにおける特定の値のビット数が変換されるという作用をもたらす。
また、本技術の第2の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部とを具備するメモリコントローラある。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。
また、本技術の第3の側面は、所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、前記送信語に対応する受信語を受信して復号する復号部とを具備する通信システムである。これにより、第1および第2の候補パリティのうち所定の条件を満たす選択パリティと選択パリティに対応する上記情報部とからなる符号語が出力されるという作用をもたらす。
本技術によれば、データを符号化してメモリセルに書き込むメモリシステムにおいて、メモリセルのデータ保持特性を向上させることができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
第1の実施の形態におけるメモリシステムの一構成例を示す全体図である。 第1の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。 第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第1の実施の形態における生成行列および符号語の一例を示す図である。 第1の実施の形態における符号語のデータ構成の一例を示す図である。 第1の実施の形態における符号化部の一構成例を示すブロック図である。 第1の実施の形態における候補パリティ生成部の一構成例を示すブロック図である。 第1の実施の形態における選択部の一構成例を示すブロック図である。 第1の実施の形態における復号部の一構成例を示すブロック図である。 第1の実施の形態におけるユーザデータおよび符号語の一例を示す図である。 第1の実施の形態における情報部および候補パリティの一例を示す図である。 第1の実施の形態における不揮発性メモリの一構成を示すブロック図である。 第1の実施の形態におけるストレージの動作の一例を示すフローチャートである。 第1の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。 第1の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。 第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。 第1の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。 第1の実施の形態の変形例における候補パリティ生成部の一構成例を示すブロック図である。 第2の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第2の実施の形態における符号化部の一構成例を示すブロック図である。 第2の実施の形態における選択部の一構成例を示すブロック図である。 第2の実施の形態における情報部および候補パリティの一例を示す図である。 第2の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。 第2の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。 第3の実施の形態における符号語のデータ構造の一例を示す図である。 第4の実施の形態における候補パリティ生成部の一構成例を示すブロック図である。 第5の実施の形態における選択部の一構成例を示すブロック図である。 第5の実施の形態における情報部および候補パリティの一例を示す図である。 第5の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(候補パリティのいずれかを選択する例)
2.第2の実施の形態(書換えビット数に基づいて候補パリティのいずれかを選択する例)
3.第3の実施の形態(選択値の配置を変えて候補パリティのいずれかを選択する例)
4.第4の実施の形態(パリティパターンおよび候補パリティから新たに候補パリティを生成し、それらのいずれかを選択する例)
5.第5の実施の形態(最長ランの長さに基づいて候補パリティのいずれかを選択する例)
<1.第1の実施の形態>
[メモリシステムの構成例]
図1は、実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ100およびストレージ200を備える。
ホストコンピュータ100は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ100は、コマンドおよびデータを生成してストレージ200に信号線109を介して供給する。また、ホストコンピュータ100は、ストレージ200から、読み出されたデータを受け取る。ここで、コマンドは、ストレージ200を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読出しを指示するリードコマンドを含む。
ストレージ200は、メモリコントローラ300および不揮発性メモリ400を備える。このメモリコントローラ300は、不揮発性メモリ400を制御するものである。メモリコントローラ300は、ホストコンピュータ100からライトコマンドおよびデータを受け取った場合に、そのデータから誤り検出訂正符号(ECC:Error detection and Correction Code)を生成する。メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化したデータを書き込む。
また、ホストコンピュータ100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化されたデータを読み出す。そして、メモリコントローラ300は、符号化されたデータを、符号化前の元のデータに変換(すなわち、復号)する。復号の際に、メモリコントローラ300は、ECCに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正したデータをホストコンピュータ100に供給する。
不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。この不揮発性メモリ400は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ400のアクセス単位であり、セクタとも呼ばれる。ブロックのそれぞれにはメモリアドレスが割り当てられている。なお、ReRAMの代わりに、フラッシュメモリ、PCRAM、および、MRAMなどを不揮発性メモリ400として用いてもよい。
図2は、第1の実施の形態におけるReRAMの可変抵抗素子の抵抗分布の一例を示す図である。同図における横軸は、抵抗値を示しており、縦軸は、セルの数の相対的な分布を相対値により示している。可変抵抗素子の抵抗状態は、所定の閾値を境に、大きく2つの分布に分かれている。閾値と比較して抵抗値が低い状態は、低抵抗状態(LRS:Low-Resistance State)と呼ばれ、閾値と比較して抵抗値が高い状態は、高抵抗状態(HRS:High-Resistance State)と呼ばれる。不揮発性メモリ400は、可変抵抗素子に電圧を印加することにより、その抵抗状態を可逆的に変化させてメモリセルを書き換えることができる。このメモリセルへの電圧印加を止めても抵抗状態が保持されるため、ReRAMは不揮発メモリとして機能することができる。
また、可変抵抗素子のLRSおよびHRSのそれぞれには、論理値「0」および論理値「1」の何れかが対応付けられる。例えば、LRSに論理値「1」が対応付けられ、HRSに論理値「0」が対応付けられる。それぞれの状態に論理値「0」および論理値「1」の何れを対応付けるかは任意である。
HRSのメモリセルに対して、一定以上の電圧が印加されると、そのメモリセルはLRS(「1」)に遷移する。この動作を以下、「セット」動作と称する。一方、LRSのメモリセルに対して、逆方向の電圧が印加されると、そのメモリセルはHRS(「0」)に遷移する。この動作を以下、「リセット」動作と称する。
図2におけるaは、劣化していない可変抵抗素子の抵抗分布の一例を示す図である。劣化していない場合には、「1」が書き込まれたメモリセル全ての抵抗値は閾値より低く、「0」が書き込まれたメモリセル全ての抵抗値は閾値より高くなっている。このため、書き込まれた値と同一の値のビットが読み出され、リードエラーは生じない。
一方、図2におけるbは、劣化が進行した可変抵抗素子の抵抗分布の一例を示す図である。経年劣化やアクセスの繰返しにより劣化が進行すると、「1」が書き込まれたメモリセルの抵抗値が上昇し、閾値を超えるおそれがある。この閾値を超えたメモリセルからは、「0」の値が読み出され、誤りが発生してしまう。また、「0」が書き込まれたメモリセルの抵抗値が低下し、閾値を下回るおそれがある。この閾値を下回ったメモリセルからは、「1」の値が読み出され、誤りが発生してしまう。同図における点線で囲まれた部分は、誤りの生じるメモリセルを示す。
ここで、LRSのメモリセルでは、HRSのメモリセルと比較して誤りが発生しやすい。言い換えれば、HRSのメモリセルのデータ保持特性(リテンション)は、LRSよりも良好である。このため、LRSに「1」が割り当てられている場合、「1」が書き込まれたメモリセルでは、「0」が書き込まれたメモリセルよりも高い頻度で誤りが発生する。ECCが訂正することができる誤りの個数には、上限があるため、誤りの発生頻度が高いほど、訂正不能となってデータを保持することができなくなる可能性が高くなる。したがって、「1」のビット数が少ないほど、不揮発性メモリ400のデータ保持特性が向上する。
[メモリコントローラの構成例]
図3は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、RAM(Random Access Memory)312、CPU(Central Processing Unit)313、ECC処理部314およびROM(Read Only Memory)305を備える。また、メモリコントローラ300は、システムインターフェース311、バス316およびメモリインターフェース317を備える。
RAM312は、CPU313が実行する処理において必要となるデータを一時的に保持するものである。CPU313は、メモリコントローラ300全体を制御するものである。ROM315は、CPU313が実行するプログラム等を記憶するものである。システムインターフェース311は、ホストコンピュータ100との間でデータやコマンドを相互に交換するものである。バス316は、RAM312、CPU313、ECC処理部314、ROM315、システムインターフェース311およびメモリインターフェース317が相互にデータを交換するための共通の経路である。メモリインターフェース317は、不揮発性メモリ400との間でデータやコマンドを相互に交換するものである。
ECC処理部314は、符号化対象のデータ(ユーザデータなど)を符号化し、また、符号化されたデータを復号するものである。ここで、ユーザデータは、ホストコンピュータ100により生成され、メモリコントローラ300に入力されたデータである。ユーザデータの符号化においてECC処理部314は、ユーザデータを含む情報部にパリティを付加することにより一定の単位で符号化する。一定の単位で符号化された個々のデータを以下、「符号語」と称する。これらの固定長の符号語からなる符号は、線形ブロック符号と呼ばれる。そして、ECC処理部314は、符号語をライトデータとして不揮発性メモリ400にバス316を介して供給する。
また、ECC処理部314は、符号化されたリードデータを元のユーザデータに復号する。この復号において、ECC処理部314は、パリティを使用して符号語の誤りを検出および訂正する。ECC処理部314は、復号した元のユーザデータを訂正データとしてホストコンピュータ100にバス316を介して供給する。
このECC処理部314において誤り検出訂正符号として、例えば、BCH符号が用いられる。このBCH符号の定義体(有限体)として、例えば、GF(216)が用いられるものとする。このGF(216)上の多項式は、例えば、次の式により表される。
p(x)=x16+x5+x3+x2+1 ・・・式1
この有限体の原始元をαとすると、GF(216)の元は、全てαのべき乗で表すことができる。また、符号化においては、次の式により表されるG(x)が生成多項式として用いられる。
Figure 0006657634
式2において、LCM[]は、[]内の各々の多項式の最小公倍多項式を表わす。また、M(x)は、αを根として持つ最小次数の多項式(最小多項式)である。例えばα(i=1)に対応する最小多項式はx16+x5+x3+x2+1であり、α3(i=3)に対応する最小多項式はx16+x8+x6+x5+x4+x+1である。
式2の生成多項式G(x)により生成されるBCH符号は、tビットまでの誤りを訂正することができる。このBCH符号における符号語は生成多項式G(x)で割り切れる多項式の係数をビット列に置き換えたものである。1ビットの誤りを訂正する場合には、16ビットのパリティが生成され、tビットまでの誤りを訂正する場合には、t×16ビット以下のパリティが生成される。BCH符号の符号化および復号の手順の詳細については、例えば、「今井秀樹著、『符号理論』、社団法人電子情報通信学会、1990年3月、p.151−155」に記載されている。
なお、ECC処理部314は、BCH符号に符号化しているが、誤りを検出することができる線形ブロック符号であれば、BCH符号以外の符号に符号化してもよい。ECC処理部314は、例えば、CRC(Cyclic Redundancy Check)符号、ハミング符号、拡張ハミング符号や、RS(Reed-Solomon)符号に符号化してもよい。
図4は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、システムインターフェース311、符号化部320、復号部370、コマンド制御部380およびメモリインターフェース317を備える。図4における符号化部320および復号部370は、図3におけるECC処理部314などにより実現される。また、図4におけるコマンド制御部380は、図3に
RAM312、CPU313およびROM315などにより実現される。なお、メモリコントローラ300は、特許請求の範囲に記載の符号化装置の一例である。
コマンド制御部380は、アクセス先のアドレスを指定するコマンドをデコードするものである。このコマンド制御部380は、デコードした結果に基づいて、制御信号を生成してメモリインターフェース317を介して不揮発性メモリ400に供給する。この制御信号は、アクセス先のアドレスを指定して、不揮発性メモリ400に読出しや書込みを要求する信号である。
符号化部320は、ユーザデータを符号化するものである。符号化部320は、ユーザデータを符号化してライトデータを生成し、メモリインターフェース317を介して不揮発性メモリ400に供給する。
復号部370は、不揮発性メモリ400から読み出されたリードデータを復号するものである。この復号部370は、リードデータの誤りを検出および訂正し、訂正後のユーザデータを訂正データとしてホストコンピュータ100にシステムインターフェース311を介して供給する。
図5は、第1の実施の形態における生成行列および符号語の一例を示す図である。同図におけるaは、第1の実施の形態における、符号語を生成する際に用いられる生成行列Gの一例を示す図である。この生成行列の行数はk(kは整数)であり、列数はn(nは、kより大きな整数)である。同図におけるbは、生成行列および情報部から符号語を求める計算式の一例である。ここで、情報部のデータサイズは、ユーザデータを符号化する単位より大きく、この情報部内には、ユーザデータが、それ以外の非ユーザデータとともに格納される。同図におけるbに示すように、生成行列Gと、情報部との積により符号語が生成される。この符号語は、kビットの情報部と、n−kビットのパリティとを含む。このように、情報部および生成行列の積によりパリティが生成されるため、情報部を一部でも変更すると、その変更後の情報部に対応するパリティも変化する。
[符号語の構成例]
図6は、第1の実施の形態における符号語のデータ構成の一例を示す図である。符号語は、4バイトの情報部と2バイトのパリティとから構成される。この情報部は、3バイトのユーザデータと1バイトの非ユーザデータとからなる。そして、非ユーザデータは、4ビットの管理データと4ビットの未使用データとからなる。メモリシステムの拡張性やアクセス単位の都合により、符号語には、ある程度の余裕をもったサイズの非ユーザデータが設けられており、管理データ以外の余った部分に未使用データが割り当てられる。なお、符号語内の各データのデータサイズは、図6に例示したサイズに限定されない。
ここで、管理データは、ユーザデータに対して符号化時に行われた変換処理を示すデータである。例えば、ユーザデータを反転する処理が変換処理として行われた場合には、反転したか否かを示す反転ビットが管理データに格納される。
また、未使用データは、非ユーザデータのうち、ユーザデータおよび管理データのいずれにも用いられないデータである。この未使用データは、2ビットの固定領域と2ビットの可変領域とからなる。固定領域には、固定値のデータが格納される領域である。例えば、固定領域の全ビットの値は「0」に固定される。一方、可変領域は、複数の値のいずれかのデータが格納される領域である。例えば、2進数で「00」、「01」、「10」および「11」のいずれかが符号化部320により選択され、その値のデータが格納される。この可変領域に格納されるデータの値を以下、「選択値」と称する。なお、未使用データに固定領域および可変領域の両方を設けているが、固定領域を設けず、可変領域のみとしてもよい。
これらのデータは、例えば、符号語の右端から順に、パリティ、固定領域、可変領域、管理データ、および、ユーザデータの順で配置される。すなわち、右端から0乃至15ビット目にパリティが格納され、16および17ビット目が固定領域として用いられる。また、右端から18および19ビット目に選択値が格納され、20乃至23ビット目に管理データが格納され、24ビット目以降にユーザデータが格納される。
前述したように、情報部を一部でも変更すると、その情報部に対応するパリティも変化する。このため、符号化部320は、選択値の変更により、その変更後の情報部に対応するパリティを変化させることができる。例えば、符号化部320は、選択値を4パターンに変化させることにより、4パターンのパリティを生成することができる。
[符号化部の構成例]
図7は、第1の実施の形態における符号化部320の一構成例を示すブロック図である。この符号化部320は、ライトバッファ321、ユーザデータ変換部322、ECC符号化器323、候補パリティ生成部330、選択部340、および、ライトデータ出力部324を備える。
ライトバッファ321は、ホストコンピュータ100からのユーザデータを保持するものである。ユーザデータ変換部322は、必要に応じて、ユーザデータに対して変換処理を行うものである。例えば、ユーザデータ変換部322は、ユーザデータの少なくとも一部のビットを反転する処理を行う。例えば、ユーザデータの1/3または2/3のビットを反転する処理や、全体を反転する処理が行われる。ユーザデータ変換部322は、反転前に、ユーザデータの「1」のビット数を計数する。以下、データ内の特定の値(例えば、「1」)のビット数を、そのデータの「重み」と称する。前述したように「0」を保持するメモリセルのリテンションは、「1」を保持するメモリセルより良好である。このため、符号化部320は、「1」のビット数(すなわち、重み)が低減するか否かにより、反転するか否かを判断し、また、反転する部分を決定する。重みが低減するようにユーザデータを変換して書き込むことにより、そのユーザデータを保持するメモリセルのリテンションを向上させることができる。
ユーザデータ変換部322は、ユーザデータのうち反転した部分を示す反転ビットを格納したデータと所定の選択値(例えば、「00」)を設定した未使用データとを生成し、それらとユーザデータとを格納した情報部をECC符号化器323に供給する。

なお、ユーザデータ変換部322は、ユーザデータの少なくとも一部の反転処理によりユーザデータを変換しているが、重みが変わる処理であれば、反転処理以外の処理により変換してもよい。ユーザデータ変換部322は、例えば、所定の固定パターンとユーザデータとにおいて対応するビットごとにXOR(排他的論理和)を演算する処理を行ってもよい。
ECC符号化器323は、情報部を符号化するものである。このECC符号化器323は、式2の生成多項式G(x)と情報部とから、情報部およびパリティからなる符号語を生成する。そして、ECC符号化器323は、その情報部をライトデータ出力部324に供給し、パリティを候補パリティC0として候補パリティ生成部330に供給する。なお、ECC符号化器323は、特許請求の範囲に記載の第1候補パリティ生成部の一例である。
候補パリティ生成部330は、一部のデータを変更した情報部の誤りを検出するためのパリティを候補パリティとして生成するものである。この候補パリティ生成部330は、未使用データに「00」以外の選択値(「01」など)を設定した情報部に対応するパリティを候補パリティとして生成する。候補パリティ生成部330は、例えば、選択値「01」の情報部と、選択値「10」の情報部と、選択値「11」の情報部とのそれぞれについて候補パリティを生成する。これらの候補パリティをC1、C2およびC3とする。候補パリティ生成部330は、ECC符号化器323からの候補パリティC0と、自身が生成した候補パリティC1、C2およびC3とを選択部340に供給する。
なお、候補パリティ生成部330が生成する候補パリティの個数は、1つ以上であればよく、3つに限定されない。生成する候補パリティの個数に応じて、選択値が格納される可変領域のビット数を変更すればよい。例えば、3ビットの可変領域を設けた場合には、ECC符号化器323および候補パリティ生成部330は、合計で8個の候補パリティを生成することができる。
選択部340は、候補パリティC0、C1、C2およびC3のうち、所定の条件を満たすパリティを選択するものである。この選択部340は、候補パリティごとに、その候補パリティに対応する未使用データと、候補パリティとからなる組の重みを計数して比較する。そして、選択部340は、候補パリティおよび未使用データの組のうち重みが最も少ないものを選択する。選択部340は、選択した組の候補パリティを選択パリティとして、その選択パリティに対応する選択値とともにライトデータ出力部324に供給する。
前述したように「0」を保持するメモリセルのリテンションは、「1」を保持するメモリセルより良好である。このため、符号化部320は、「1」のビット数(すなわち、重み)が最小の候補パリティおよび未使用データを選択して書き込むことにより、それらのデータを保持するメモリセルのリテンションを向上させることができる。
なお、選択部340は「1」の値のビット数を「重み」として計数しているが、「0」の値のビット数を重みとして計数してもよい。
ライトデータ出力部324は、選択パリティに対応する情報部と、選択パリティとからなる符号語をライトデータとして出力するものである。このライトデータ出力部324は、選択パリティに対応する選択値により、情報部の未使用データを更新し、その情報部と選択パリティとからなる符号語をメモリインターフェース317に出力する。
[候補パリティ生成部の構成例]
図8は、第1の実施の形態における候補パリティ生成部330の一構成例を示すブロック図である。この候補パリティ生成部330は、パリティパターン生成部331、332および333と、排他的論理和演算部334、335および336とを備える。
パリティパターン生成部331は、未使用データに選択値「01」を設定し、未使用データ以外の全ビットに「0」に設定した情報部から、パリティを生成するものである。パリティは、例えば、情報部と生成多項式G(x)との積により生成される。このパリティパターン生成部331は、生成したパリティをパリティパターンP1として排他的論理和演算部334に供給する。
パリティパターン生成部332は、未使用データに選択値「10」を設定し、未使用データ以外の全ビットに「0」を設定した情報部から、パリティを生成するものである。このパリティパターン生成部332は、生成したパリティをパリティパターンP2として排他的論理和演算部335に供給する。
パリティパターン生成部333は、未使用データに選択値「11」を設定し、未使用データ以外の全ビットに「0」を設定した情報部から、パリティを生成するものである。このパリティパターン生成部333は、生成したパリティをパリティパターンP3として排他的論理和演算部336に供給する。
排他的論理和演算部334は、候補パリティC0とパリティパターンP1とにおいて、対応するビットごとにXOR(排他的論理和)を演算するものである。この排他的論理和演算部334は、演算結果を候補パリティC1として選択部340に供給する。なお、排他的論理和演算部334は、特許請求の範囲に記載の第2候補パリティ生成部の一例である。
排他的論理和演算部335は、候補パリティC0とパリティパターンP2とにおいて、対応するビットごとにXORを演算するものである。この排他的論理和演算部335は、演算結果を候補パリティC2として選択部340に供給する。なお、排他的論理和演算部335は、特許請求の範囲に記載の第3候補パリティ生成部の一例である。
排他的論理和演算部336は、候補パリティC0とパリティパターンP3とにおいて、対応するビットごとにXORを演算するものである。この排他的論理和演算部336は、演算結果を候補パリティC3として選択部340に供給する。
[選択部の構成例]
図9は、第1の実施の形態における選択部340の一構成例を示すブロック図である。この選択部340は、重みカウンタ341、342、343および344と、加算器346、347および348と、比較部345とを備える。
重みカウンタ341は、候補パリティC3の「1」の個数(重み)を計数するものである。この重みカウンタ341は、計数値を加算器346に供給する。
加算器346は、候補パリティC3に対応する未使用データの重みの個数(例えば、「2」)を候補パリティC3の重みの計数値に加算するものである。この加算器346は、加算後の計数値CNT3を比較部345に供給する。
重みカウンタ342は、候補パリティC2の重みを計数するものである。この重みカウンタ342は、計数値を加算器347に供給する。
加算器347は、候補パリティC2に対応する未使用データの重みの個数(例えば、「1」)を候補パリティC2の重みの計数値に加算するものである。この加算器347は、加算後の計数値CNT2を比較部345に供給する。
重みカウンタ343は、候補パリティC1の重みを計数するものである。この重みカウンタ343は、計数値を加算器348に供給する。
加算器348は、候補パリティC1に対応する未使用データの重みの個数(例えば、「1」)を候補パリティC1の重みの計数値に加算するものである。この加算器348は、加算後の計数値CNT1を比較部345に供給する。なお、重みカウンタ343および加算器348は、特許請求の範囲に記載の第2の重みカウンタの一例である。
重みカウンタ344は、候補パリティC0の重みを計数するものである。この重みカウンタ344は、計数値CNT0を比較部345に供給する。なお、重みカウンタ344は、特許請求の範囲に記載の第1の重みカウンタの一例である。
比較部345は、候補パリティC0乃至C3のうち、対応する重み(CNT0乃至CNT3)が最小の候補パリティを選択パリティとして選択するものである。比較部345は、選択した選択パリティと、その選択パリティに対応する選択値とをライトデータ出力部324に供給する。
[復号部の構成例]
図10は、第1の実施の形態における復号部370の一構成例を示すブロック図である。この復号部370は、リードバッファ371、ユーザデータ逆変換部372およびECC復号器373を備える。
ECC復号器373は、不揮発性メモリ400からリードデータを読み出し、符号化部320の符号化手順と対応する復号手順により、リードデータを復号するものである。このECC復号器373は、復号した情報部をユーザデータ逆変換部372に供給する。
ユーザデータ逆変換部372は、情報部内のユーザデータに対し、符号化部320の変換処理と対応する逆変換処理を行うものである。このユーザデータ逆変換部372は、例えば、情報部内の管理データ内の反転ビットに基づいて、ユーザデータの少なくとも一部を反転して元のデータに戻す処理を逆変換処理として行う。ユーザデータ逆変換部372は、逆変換処理後のユーザデータをリードバッファ371に供給する。
リードバッファ371は、ユーザデータ逆変換部372からのユーザデータを保持し、訂正データとしてシステムインターフェース311に供給するものである。
図11は、第1の実施の形態におけるユーザデータおよび符号語の一例を示す図である。同図におけるaは、反転前のユーザデータの一例を示し、同図におけるbは、一部を反転したユーザデータの一例を示す。同図における「*」は「1」の値のビットの位置を示す。また、同図におけるbの点線で囲った部分は、反転されたビット列を示す。例えば、3バイトのユーザデータのうち1バイトが反転される。これにより、同図におけるbに例示するように重みが低減する。
図11におけるcは、第1の実施の形態における符号語の一例を示す図である。ユーザデータの左端の1バイトが反転されたため、左端の部分を反転したことを示す「1」の反転ビットが管理データの左端のビットに設定される。また、未使用データには、選択値「00」が設定される。ECC符号化器323は、それらの管理データおよび未使用データと反転後のユーザデータとからなる情報部を生成し、その情報部から候補パリティC0を生成する。
図12は、第1の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。
候補パリティ生成部330は、選択値「01」、「10」および「11」を設定し、それ以外の全ビットを「0」に設定した情報部のそれぞれから、パリティパターンP1、P2およびP3を生成する。
図12におけるbは、パリティパターンP1を含む符号語を示し、同図におけるcはパリティパターンP2を含む符号語を示す。また、同図におけるdはパリティパターンP3を含む符号語を示す。そして、候補パリティ生成部330は、候補パリティC0とパリティパターンP1、P2およびP3とについて、対応するビットごとにXOR演算を行い、候補パリティC1、C2およびC3を生成する。
図12におけるeは、候補パリティC1を含む符号語を示し、同図におけるfは候補パリティC2を含む符号語を示す。また、同図におけるgは候補パリティC3を含む符号語を示す。
ここで、BCH符号などの線形ブロック符号においては、符号語同士を加算した結果は、その符号における符号語になることが知られている。したがって、パリティパターンP1を含む符号語と、候補パリティC0を含む符号語とについて、対応するビットごとにXOR演算(言い換えれば加算)を行った結果は、符号語となる。このため、その加算結果の符号語における候補パリティC0により、対応する情報部の誤りを検出および訂正することができる。したがって、復号部370は、選択パリティについてXOR演算などを行う必要がなく、そのまま復号を行うことができる。
そして、候補パリティ生成部330は、候補パリティC0乃至C3と、対応する選択値とにおける重みを計数する。図12における「*」は、計数されたビットの位置を示す。例えば、候補パリティC0および選択値「00」の「*」の個数(重み)は、10進数で「8」である。また。候補パリティC1および選択値「01」の重みは、10進数で「8」であり、候補パリティC2および選択値「10」の重みは、10進数で「5」である。候補パリティC3および選択値「11」の重みは、10進数で「8」である。
これらの重みの最小値は「5」であり、対応する候補パリティC2が選択される。なお、重みが最小となる候補パリティが2つ以上の場合には、それらのいずれか1つが任意に選択される。
一般的なメモリコントローラのように、パリティおよび未使用データをそのまま書き込む構成では、それらを書き込むメモリセルのリテンションを向上させることができない。しかし、図12に例示したように、符号化部320は、情報部の一部(すなわち、未使用データ)を変更して、複数の候補パリティを生成し、それらのうち重みが最小のパリティを選択する。このため、パリティおよび未使用データを書き込むメモリセルの重みが小さくなる。例えば、図12の例においては、重みを「8」から「5」に低減することができる。これにより、メモリセルのリテンションを向上させることができる。
なお、パリティパターンの生成およびXOR演算により候補パリティC1乃至C3を生成しているが、この構成に限定されない。例えば、符号化部320は、図12におけるe乃至gの未使用データのみを変更した情報部と、生成多項式G(x)との積により、候補パリティC1等を生成してもよい。ただし、パリティパターンの生成およびXOR演算を行う場合の方が演算量が少なくて済む。例えば、情報部の未使用データ以外の全ビットを「0」とした情報部からパリティパターンを生成する場合には、未使用データ以外が「0」であるため、ユーザデータが格納されている場合と比較して演算量が少なくなる。さらにXOR演算も行われるが、この演算を考慮しても全体の演算量は低減する。したがって、符号化部320は、パリティパターンの生成およびXOR演算により候補パリティC1等を生成することが望ましい。
また、符号化部320は、ユーザデータを変換しているが、ユーザデータを変換せずにそのまま符号化してもよい。この場合には、復号部370が、逆変換を行わず復号のみを行う。
また、メモリシステムに符号化部320を設けているが、符号化を行うシステム(通信システム)であれば、メモリシステム以外のシステムに符号化部320を設けてもよい。例えば、ハイレベルのビットを送信するよりも、ローレベルのビットを送信する方が消費電力が低減する通信システムであれば、符号化部320が最小の重みとなるパリティを選択することで消費電力を低減することができる。
[不揮発性メモリの構成例]
図13は、第1の実施の形態における不揮発性メモリ400の一構成例を示すブロック図である。この不揮発性メモリ400は、データバッファ410、メモリセルアレイ420、ドライバ430、アドレスデコーダ440、バス450、制御インターフェース460、および、メモリ制御部470を備える。
データバッファ410は、メモリ制御部470の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ420は、マトリックス
状に配列された複数のメモリセルを備える。各々のメモリセルとして、ReRAMなどの不揮発性の記憶素子が用いられる。
ドライバ430は、アドレスデコーダ440により選択されたメモリセルに対してデータの書込み、または、データの読出しを行うものである。アドレスデコーダ440は、コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス450は、データバッファ410、メモリセルアレイ420、アドレスデコーダ440、メモリ制御部470および制御インターフェース460が相互にデータを交換するための共通の経路である。制御インターフェース460は、メモリコントローラ300と不揮発性メモリ400とがデータやコマンドを相互に交換するためのインターフェースである。
メモリ制御部470は、ドライバ430およびアドレスデコーダ440を制御して、データの書込み、または、読出しを行わせるものである。メモリ制御部470は、書込みを指示する制御信号およびライトデータを受け取った場合には、その制御信号の指定するアドレスに書き込まれているデータをプレリードデータとして読み出す。メモリ制御部470は、ライトデータとプレリードデータとをビット単位で比較し、ライトデータにおいて「1」であり、かつ、プレリードデータにおいて「0」のビットを書換え対象とする。メモリ制御部470は、それらの書換え対象のビットを「1」に書き換える。次に、メモリ制御部470は、ライトデータとセット処理後のプレリードデータとをビット単位で比較し、ライトデータにおいて「0」であり、かつ、プレリードデータにおいて「1」のビットを書換え対象とする。メモリ制御部470は、それらの書換え対象のビットを「0」に書き換える。
また、メモリ制御部470は、読出しを指示する制御信号を受け取ると、アドレスデコーダ440およびドライバ430を制御してメモリコントローラ300へリードデータを出力させる。
[ストレージの動作例]
図14は、第1の実施の形態におけるストレージ200の動作の一例を示すフローチャートである。この動作は、例えば、ホストコンピュータ100によりストレージ200に対して初期化が指示されたときに開始する。
不揮発性メモリ400は、メモリセルアレイ420を初期化する(ステップS901)。メモリコントローラ300は、ホストコンピュータ100からのコマンドをデコードする(ステップS902)。メモリコントローラ300は、ホストコンピュータ100からコマンドを受け取った場合に、そのコマンドがライトコマンドであるか否かを判断する(ステップS903)。ここでは、ホストコンピュータ100からのコマンドは、ライトコマンドおよびリードコマンドのうちのいずれかであるものとする。
ライトコマンドである場合には(ステップS903:Yes)、メモリコントローラ300は、コントローラ側ライト処理を実行する(ステップS910)。そして、不揮発性メモリ400は、NVRAM側ライト処理を実行する(ステップS930)。
一方、リードコマンドである場合には(ステップS903:No)、メモリコントローラ300は、コントローラ側リード処理を実行する(ステップS950)。そして、不揮発性メモリ400は、データを読み出し、メモリコントローラ300に転送する(ステップS904)。ステップS930またはS904の後、ストレージ200は、ステップS902に戻る。
図15は、第1の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。メモリコントローラ300は、ユーザデータの重みを計数し(ステップS911)、計数値に基づいてユーザデータの少なくとも一部を反転する(ステップS912)。メモリコントローラ300は、反転フラグを管理データに格納し(ステップS913)、反転処理後のユーザデータを含む情報部を、その情報部および候補パリティC0からなる符号語に符号化する(ステップS914)。
メモリコントローラ300は、複数の候補パリティのいずれかを選択するパリティ選択処理を実行する(ステップS920)。そして、メモリコントローラ300は、選択パリティと、対応する情報部とを含むライトデータを不揮発性メモリ400に出力し(ステップS915)、コントローラ側ライト処理を終了する。
図16は、第1の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。メモリコントローラ300は、選択値ごとに候補パリティを生成し(ステップS921)、候補パリティごとに重みを計数する(ステップS922)。メモリコントローラ300は、重みが最小になる候補パリティを選択し(ステップS923)、選択パリティ、および、対応する選択値を符号語に格納する(ステップS924)。ステップS924の後、メモリコントローラ300は、パリティ選択処理を終了する。
図17は、第1の実施の形態におけるNVRAM側ライト処理の一例を示すフローチャートである。不揮発性メモリ400は、ライトデータを取得する(ステップS931)。不揮発性メモリ400は、書込み先のアドレスに書き込まれているデータをプレリードする(ステップS932)。不揮発性メモリ400は、ライトデータと、プレリードデータとにおいて対応するビットを比較し、リセットマスクデータを生成する(ステップS933)。このリセットマスクデータは、ライトデータにおいて「0」であり、かつ、プレリードデータにおいて「1」であるビットについてはリセットする旨を示し、それ以外のビットについてはマスクする旨を示す。
不揮発性メモリ400は、リセットマスクデータによりリセットする旨が示されたビットのみを「1」から「0」に書き換える処理(リセット処理)を行う(ステップS934)。不揮発性メモリ400は、リセット処理後のプレリードデータを読み出し、ベリファイエラーが生じたか否かを判断する(ステップS935)。
ベリファイエラーが生じなかった場合には(ステップS935:No)、不揮発性メモリ400は、ライトデータと、リセット処理後のプレリードデータとにおいて対応するビットを比較し、セットマスクデータを生成する(ステップS936)。このセットマスクデータは、ライトデータにおいて「1」であり、かつ、プレリードデータにおいて「0」であるビットについてはセットする旨を示し、それ以外のビットについてはマスクする旨を示す。
不揮発性メモリ400は、セットマスクデータによりセットする旨が示されたビットのみを「0」から「1」に書き換える処理(セット処理)を行う(ステップS937)。不揮発性メモリ400は、セット処理後のプレリードデータを読み出し、ベリファイエラーが生じたか否かを判断する(ステップS938)。
リセット処理においてエラーが発生した場合(ステップS935:Yes)、または、セット処理においてエラーが発生した場合(ステップS938:Yes)、不揮発性メモリ400は、ライトエラーをホストコンピュータ100に通知する(ステップS939)。セット処理においてエラーが発生していない場合(ステップS938:No)、または、ステップS939の後、不揮発性メモリ400は、メモリコントローラ300にステータスを転送する(ステップS940)。ステップS940の後、不揮発性メモリ400は、NVRAM側ライト処理を終了する。
図18は、第1の実施の形態におけるコントローラ側リード処理の一例を示すフローチャートである。メモリコントローラ300は、リードデータを取得し(ステップS951)、復号する(ステップS952)。メモリコントローラ300は、管理データに基づいて、ユーザデータを反転する(ステップS953)。メモリコントローラ300は、ユーザデータを訂正データとしてホストコンピュータ100に出力し(ステップS954)、コントローラ側リード処理を終了する。
このように、本技術の第1の実施の形態によれば、符号化部320は、情報部内の可変領域に複数の異なる値を設定して候補パリティを生成し、それらのうち重みが最小となるパリティを選択するため、メモリセルのデータ保持特性を向上させることができる。
[変形例]
上述の第1の実施の形態では、候補パリティ生成部330は、行列演算によりパリティパターンを生成していたが、符号語のデータサイズが大きくなるほど、演算量が増大するおそれがある。この第1の実施の形態における変形例の候補パリティ生成部330は、演算量を低減した点において第1の実施の形態と異なる。
図19は、第1の実施の形態の変形例における候補パリティ生成部330の一構成例を示すブロック図である。この変形例の候補パリティ生成部330は、パリティパターン生成部331、332および333の代わりに、パリティパターン保持部337を備える点において第1の実施の形態と異なる。
パリティパターン保持部337は、選択値ごとに、予め演算しておいたパリティパターン(P1、P2およびP3など)を保持するものである。これらのパリティパターンは。排他的論理和演算部334、335および336のそれぞれにより読み出される。
このように、本技術の第1の実施の形態の変形例によれば、候補パリティ生成部330は、予め演算しておいたパリティパターンを保持するため、パリティパターンを求める行列演算を行う必要がなくなる。
<2.第2の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、重みが最小となる候補パリティを選択パリティとして選択していた。しかし、選択パリティにより、書き換えるビット数が多くなる場合には、メモリセルのリテンションを十分に向上することができないおそれがある。このため、書き換えるビット数を低減することが望ましい。この第2の実施の形態のメモリコントローラ300は、書き換えるビット数を低減した点において第1の実施の形態と異なる。
図20は、第2の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。この第2の実施の形態のメモリコントローラ300は、コマンド制御部380の代わりにコマンド制御部381を備える点において第1の実施の形態と異なる。
コマンド制御部381は、ライトコマンドを受け取ると、書込みとプレリードデータの出力とを要求する制御信号を生成して不揮発性メモリ400に供給する。この制御信号に従ってメモリコントローラ300は、ライトデータの書込み前のプレリードデータをメモリコントローラ300に出力する。符号化部320は、このプレリードデータと、符号語とをビット単位で比較して書き換えるビット数が最小になるライトデータを生成する。
図21は、第2の実施の形態における符号化部320の一構成例を示すブロック図である。この第2の実施の形態の符号化部320は、ユーザデータ変換部322および選択部340の代わりにユーザデータ変換部325および選択部350を備える点において第1の実施の形態と異なる。
ユーザデータ変換部325は、プレリード内のユーザデータおよび管理データからなる組を取得する。そして、ユーザデータ変換部325は、反転前のユーザデータおよび管理データにおいて、プレリードデータ内の対応するビットと値の異なるビットの個数を計数する。ユーザデータ変換部325は、その計数値に基づいて、書換えビット数が最小になるように反転処理を行い、その反転処理後のユーザデータを含む情報部をECC符号化器323に供給する。
また、選択部350は、プレリード内の未使用データおよびパリティからなる組を取得する。そして、ユーザデータ変換部325は、候補パリティおよび未使用データからなる組のそれぞれについて、プレリードデータ内の対応するビットと値の異なるビットの個数を計数する。ユーザデータ変換部325は、計数値(すなわち、書き換えるビット数)が最小となる組の候補パリティを選択する。
図22は、第2の実施の形態における選択部350の一構成例を示すブロック図である。この選択部350は、未使用データ保持部351、排他的論理和演算部352乃至355と、書換えビット数カウンタ356乃至359と、比較部345とを備える。
未使用データ保持部351は、異なる選択値が設定された複数の未使用データを保持するものである。これらの未使用データは、排他的論理和演算部352乃至355により読み出される。
排他的論理和演算部352は、プレリードデータ内のパリティおよび未使用データと、候補パリティC3および対応する未使用データとのそれぞれについて、対応するビットごとにXOR演算を行うものである。候補パリティC3に対応する未使用データとして、「1100」が未使用データ保持部351から読み出される。排他的論理和演算部352は、演算結果を書換えビット数カウンタ356に供給する。
排他的論理和演算部353は、プレリードデータ内のデータと、候補パリティC2および対応する未使用データ「1000」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部353は、演算結果を書換えビット数カウンタ357に供給する。
排他的論理和演算部354は、プレリードデータ内のデータと、候補パリティC1および対応する未使用データ「0100」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部354は、演算結果を書換えビット数カウンタ358に供給する。
排他的論理和演算部355は、プレリードデータ内のデータと、候補パリティC0および対応する未使用データ「0000」とのそれぞれについて、対応するビットごとにXOR演算を行うものである。この排他的論理和演算部355は、演算結果を書換えビット数カウンタ359に供給する。
書換えビット数カウンタ356は、排他的論理和演算部352の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ356は、計数値CNT3を比較部345に供給する。
書換えビット数カウンタ357は、排他的論理和演算部353の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ357は、計数値CNT2を比較部345に供給する。
書換えビット数カウンタ358は、排他的論理和演算部354の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ358は、計数値CNT1を比較部345に供給する。
書換えビット数カウンタ359は、排他的論理和演算部355の演算結果において「1」の個数を書換えビット数として計数するものである。この書換えビット数カウンタ359は、計数値CNT0を比較部345に供給する。第2の実施の形態の比較部345の構成は、第1の実施の形態と同様である。
図23は、第2の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。同図におけるbは、プレリードデータの一例を示す図である。また、図22におけるcは、候補パリティC1を含む符号語を示し、同図におけるdは候補パリティC2を含む符号語を示す。また、同図におけるeは候補パリティC3を含む符号語を示す。
候補パリティ生成部330は、プレリードデータ内のパリティおよび未使用データと、候補パリティおよび対応する未使用データとをビット単位で比較する。この比較結果より、候補パリティ生成部330は、それぞれの候補パリティについて書換えビット数を求める。
図23において「*」は、書換えビットの位置を示す。例えば、候補パリティC0および未使用データ「0000」では、書換えビット数が10進数で「12」個になる。候補パリティC1および未使用データ「0100」では、書換えビット数が10進数で「9」個になり、候補パリティC2および未使用データ「1000」では、書換えビット数が10進数で「13」個になる。候補パリティC3および未使用データ「1100」では、書換えビット数が10進数で「12」個になる。これらのうち、書換えビット数が最小となる候補パリティC2が選択される。これにより、メモリセルの書換えビット数が低減し、メモリセルのリテンションを向上させることができる。
図24は、第2の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。この第2の実施の形態のコントローラ側ライト処理は、ステップS911の代わりに、ステップS916およびS917を実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、プレリードデータを取得し(ステップS916)、反転前のユーザデータについて書換えビット数を計数する(ステップS917)。ステップS917の後、メモリコントローラ300は、ステップS912以降を実行する。
図25は、第2の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。第2の実施の形態のパリティ選択処理は、ステップS922およびS923の代わりにステップS925およびS926を実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、候補パリティを生成し(ステップS921)、候補パリティごとに書換えビット数を計数する(ステップS925)。メモリコントローラ300は、書換えビット数が最小になる候補パリティを選択し(ステップS926)、ステップS924を実行する。
このように、本技術の第2の実施の形態によれば、符号化部320は、候補パリティのうち書換えビット数が最小になるパリティを選択するため、メモリセルの書換えビット数を低減してメモリセルのデータ保持特性を向上させることができる。
<3.第3の実施の形態>
上述の第1の実施の形態では符号語において、右端からパリティ、固定領域、可変領域、管理データ、および、ユーザデータの順でデータが配置されていた。しかし、この順では、重みが十分に低減しないことがあるため、重みが低減しやすい順序でデータを配置することが望ましい。第3の実施の形態のメモリコントローラ300は、データ構造の異なる符号語を生成する点において第1の実施の形態と異なる。
図26は、第3の実施の形態における符号語のデータ構造の一例を示す図である。同図における灰色の領域は、固定領域を示し、斜線の領域は、可変領域を示す。同図におけるaは、第3の実施の形態における可変領域の位置を変えた符号語のデータ構造の一例を示す図である。この符号語は、可変領域の位置と固定領域の位置とが互いに入れ替えられている点において第1の実施の形態と異なる。すなわち、符号語の右端からパリティ、可変領域、固定領域、管理データおよびユーザデータの順で配置される。
図26におけるbは、第3の実施の形態における可変領域および固定領域を分散させた符号語のデータ構造の一例を示す図である。例えば、可変領域および固定領域はそれぞれ2つに分割され、符号語の右端から順に、パリティ、固定領域の一部、可変領域の一部、固定領域の残り、可変領域の残り、管理データおよびユーザデータの順で配置される。
図26におけるcは、第3の実施の形態における非ユーザデータ領域の位置を変えた符号語のデータ構造の一例を示す図である。例えば、符号語の右端からパリティ、ユーザデータおよび非ユーザデータの順で配置される。
図26におけるdは、第3の実施の形態におけるユーザデータを分散させた符号語のデータ構造の一例を示す図である。例えば、ユーザデータが2つに分割され、符号語の右端からパリティ、ユーザデータの一部、非ユーザデータ、ユーザデータの残りの順で配置される。
図26におけるeは、第3の実施の形態におけるユーザデータおよび非ユーザデータを分散させた符号語のデータ構造の一例を示す図である。例えば、ユーザデータおよび非ユーザデータが2つに分割され、符号語の右端から順に、パリティ、ユーザデータの一部、非ユーザデータの一部、ユーザデータの残り、および、非ユーザデータの残りの順で配置される。
図26におけるfは、第3の実施の形態において非ユーザデータを分散させ、さらに可変領域および固定領域を分散させた符号語のデータ構造の一例を示す図である。例えば、非ユーザデータが2つに分割され、さらに可変領域および固定領域も2つに分割される。例えば、符号語の右端からパリティ、固定領域の一部、可変領域の一部、ユーザデータ、固定領域の残り、可変領域の残り、および、管理データの順で配置される。
なお、符号語のデータ構成は、図26に例示した構成に限定されない。例えば、ユーザデータなどを3つ以上に分割してもよいし、符号語の左端に可変領域を配置してもよい。
図26に例示したように、選択値を格納する可変領域の位置を変えることにより、パリティにおける重みを変えることができる。例えば、図26におけるaのように、右端から18および19ビット目に選択値を配置し、それ以外の全ビットを「0」にした情報部と、ある生成多項式G(x)とから次のパリティパターンが生成されたものとする。
選択値「01」のパリティパターンP1:00000000 10110100
選択値「10」のパリティパターンP2:00000001 01101000
選択値「11」のパリティパターンP3:00000001 11011100
ここで、図26におけるcのように、右端から42および43ビット目に選択値の位置を変えて、同じ生成多項式G(x)を用いると、次のパリティパターンが得られる。
選択値「01」のパリティパターンP1’:01000110 11111101
選択値「10」のパリティパターンP2’:10001101 11111010
選択値「11」のパリティパターンP3’:11001011 00000111
上述のパリティパターンP1、P2およびP3と比較して、パリティパターンP1’、P2’およびP3’の方が「1」のビット数(重み)が多い。この場合には、重みの少なくなる図24におけるaの配置の方が望ましい。情報部のデータサイズ、生成多項式や、符号の種類により、最適な可変領域の位置は変わるため、可変領域の位置を幾通りかに変えてパリティを生成し、それらを比較することにより最適な位置が求められる。
このように、本技術の第3の実施の形態によれば、パリティの右隣の位置などに可変領域を配置した情報部を符号化することにより、重みを低減してデータ保持特性を向上させることができる。
<4.第4の実施の形態>
上述の第1の実施の形態では、候補パリティ生成部330は、パリティパターン生成部331、332および333により3つのパリティパターンを生成していた。すなわち、パリティパターンと同じ個数のパリティパターン生成部を設けていた。しかし、パリティパターンの個数が多くなるほど、パリティパターン生成部の個数が増大し、演算量や回路規模が増大するおそれがある。この第4の実施の形態の候補パリティ生成部330は、パリティパターンを生成する回路を削減した点において第1の実施の形態と異なる。
図27は、第4の実施の形態における候補パリティ生成部330の一構成例を示すブロック図である。この第4の実施の形態の候補パリティ生成部330は、パリティパターン生成部333を備えない点において第1の実施の形態と異なる。
また、第4の実施の形態の排他的論理和演算部336は、候補パリティC1とパリティパターンP2とに対し、対応するビットごとにXOR演算を行う点において第1の実施の形態と異なる。このXOR演算により候補パリティC3が得られる。これは、候補パリティC1を含む符号語とパリティパターンP2を含む符号語との加算は、候補パリティC3を含む符号語となるためである。なお、排他的論理和演算部336は、特許請求の範囲に記載の第4候補パリティ生成部の一例である。
このように、本技術の第4の実施の形態によれば、候補パリティ生成部330は、候補パリティC1とパリティパターンP2とのXOR演算により候補パリティP3を生成するため、パリティパターンP3を生成する回路を削減することができる。
<5.第5の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、重みが最小となる候補パリティを選択パリティとして選択していた。しかし、選択パリティにより、連続して書き換えるビット数が多くなる場合には、書込みの際の消費電力が大きくなるおそれがある。このため、連続して書き換えるビット数を低減することが望ましい。この第5の実施の形態のメモリコントローラ300は、連続して書き換えるビット数を低減した点において第1の実施の形態と異なる。
図28は、第5の実施の形態における選択部350の一構成例を示すブロック図である。この選択部350は、未使用データ保持部351と、排他的論理和演算部352乃至355と、最長ランカウンタ361乃至364と比較部345とを備える。未使用データ保持部351と排他的論理和演算部352乃至355との構成は、第2の実施の形態と同様である。また、第5の実施の形態の未使用データ保持部351の構成は第2の実施の形態と同様であり、第5の実施の形態の比較部345の構成は、第1の実施の形態と同様である。
最長ランカウンタ361は、排他的論理和演算部352の演算結果において、ランの長さを計数して、その最大値を最長ランの長さとして求めるものである。ここで、「ラン」は、連続する特定の値(例えば、「1」)のビットの集まりを示す。また、最長ランの長さは、連続して書き換えられるビット数の最大値を示す。最長ランカウンタ361は、最長ランの長さをCNT3として比較部345に供給する。
最長ランカウンタ362は、排他的論理和演算部353の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ362は、求めた長さをCNT2として比較部345に供給する。
最長ランカウンタ363は、排他的論理和演算部354の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ363は、求めた長さをCNT1として比較部345に供給する。
最長ランカウンタ364は、排他的論理和演算部355の演算結果において最長ランの長さを求めるものである。この最長ランカウンタ364は、求めた長さをCNT0として比較部345に供給する。
図29は、第5の実施の形態における情報部および候補パリティの一例を示す図である。同図におけるaは、ユーザデータと選択値「00」の未使用データと候補パリティC0とからなる符号語を示す。同図におけるbは、プレリードデータの一例を示す図である。また、図29におけるcは、候補パリティC1を含む符号語を示し、同図におけるdは候補パリティC2を含む符号語を示す。また、同図におけるeは候補パリティC3を含む符号語を示す。
候補パリティ生成部330は、プレリードデータ内のパリティおよび未使用データと、候補パリティおよび対応する未使用データとをビット単位で比較する。候補パリティ生成部330は、それぞれの候補パリティについて、連続して書き換えるビット数(すなわち、最長ランの長さ)を求める。
図29において「*」は、書換えビットの位置を示す。また、点線で囲った部分は、最長ランを示す。例えば、候補パリティC0および未使用データ「0000」では、最長ランの長さは、10進数で「6」となる。候補パリティC1および未使用データ「0100」では、最長ランの長さが10進数で「3」となり、候補パリティC2および未使用データ「1000」では、最長ランの長さが10進数で「5」となる。候補パリティC3および未使用データ「1100」では最長ランの長さは、10進数で「3」となる。これらのうち、最長ランの長さが最小となる候補パリティC1およびC3のいずれかが選択される。
一般に、不揮発性メモリ400がデータを一定の単位で書き換える場合、連続して書き換えるビット数(最長ランの長さ)が少ないほど、書込みの際の消費電力が低減し、リテンションも向上する。このため、符号化部320は、最長ランの長さが最小の候補パリティを選択することにより、不揮発性メモリ400の消費電力およびデータ保持特性を向上させることができる。
図30は、第5の実施の形態におけるパリティ選択処理の一例を示すフローチャートである。第2の実施の形態のパリティ選択処理は、ステップS922およびS923の代わりにステップS927およびS928を実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、候補パリティを生成し(ステップS921)、候補パリティごとに最長ランの長さを計数する(ステップS927)。メモリコントローラ300は、最長ランの長さが最小になる候補パリティを選択し(ステップS928)、ステップS924を実行する。なお、第5の実施の形態のコントローラ側ライト処理は、第2の実施の形態と同様である。
このように、本技術の第5の実施の形態によれば、符号化部320は、連続して書き換えるビット数が最小になるパリティを選択するため、メモリセルへの書込みの際の不揮発性メモリ400の消費電力を低減することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
なお、本技術は以下のような構成もとることができる。
(1)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と
を具備する符号化装置。
(2)前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含む
前記(1)記載の符号化装置。
(3)前記選択部は、
前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて特定の値のビットの個数を重みとして計数する第1の重みカウンタと、
前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、
前記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(4)メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、
前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第1の書換えビット数カウンタと、
前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データととにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、
前記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(5)メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部をさらに具備し、
前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、
前記選択部は、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、
前記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
を備える前記(2)記載の符号化装置。
(6)前記符号語において前記ユーザデータと前記選択パリティとの間に前記未使用データが配置される前記(2)から(5)のいずれかに記載の符号化装置。
(7)前記符号語において前記未使用データと前記選択パリティとの間に前記ユーザデータが配置される前記(2)から(5)のいずれかに記載の符号化装置。
(8)前記符号語において前記ユーザデータは複数の領域に分散して配置される前記(2)から(5)のいずれかに記載の符号化装置。
(9)前記符号語において前記未使用データは、複数の領域に分散して配置される前記(2)から(5)のいずれかに記載の符号化装置。
(10)前記未使用データは、前記可変領域と値が変更されない固定領域とからなり、
前記第2候補パリティ生成部は、前記可変領域の値を変更した前記情報部に対応する前記第2の候補パリティを生成する
前記(2)から(9)のいずれかに記載の符号化装置。
(11)前記符号語において前記可変領域は複数の領域に分散して配置される前記(10)記載の符号化装置。
(12)前記符号語において前記固定領域は複数の領域に分散して配置される前記(10)または(11)に記載の符号化装置。
(13)前記第1の候補パリティ生成部は、前記情報部から前記第1の候補パリティを生成し、
前記第2の候補パリティ生成部は、前記第1の候補パリティと第1のパリティパターンとの論理演算により前記第2の候補パリティを生成する前記(1)から(12)のいずれかに記載の符号化装置。
(14)第2のパリティパターンと前記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、
前記第2のパリティパターンと前記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部と
をさらに具備し、
前記選択部は、前記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する
前記(13)記載の符号化装置。
(15)ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の前記ユーザデータと前記変換処理前の前記ユーザデータとのいずれかを前記第1の候補パリティ生成部に出力するユーザデータ変換部をさらに具備し、
前記第1の候補パリティ生成部は、前記出力されたユーザデータを含む前記第1の情報部から前記第1の候補パリティを生成する
前記(1)から(14)のいずれかに記載の符号化装置。
(16)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、
前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部と
を具備するメモリコントローラ。
(17)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、
前記送信語に対応する受信語を受信して復号する復号部と
を具備する通信システム。
(18)所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成手順と、
前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成手順と、
前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択手順と、
前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力手順と
を具備する符号化方法。
100 ホストコンピュータ
200 ストレージ
300 メモリコントローラ
311 システムインターフェース
312 RAM
313 CPU
314 ECC処理部
315 ROM
316、450 バス
317 メモリインターフェース
320 符号化部
321 ライトバッファ
322、325 ユーザデータ変換部
323 ECC符号化器
324 ライトデータ出力部
330 候補パリティ生成部
331、332、333 パリティパターン生成部
334、335、336、352、353、354、355 排他的論理和演算部
337 パリティパターン保持部
340、350 選択部
341、342、343、344 重みカウンタ
345 比較部
346、347、348 加算器
351 未使用データ保持部
356、357、358、359 書換えビット数カウンタ
361、362、363、364 最長ランカウンタ
370 復号部
371 リードバッファ
372 ユーザデータ逆変換部
373 ECC復号器
380、381 コマンド制御部
400 不揮発性メモリ
410 データバッファ
420 メモリセルアレイ
430 ドライバ
440 アドレスデコーダ
460 制御インターフェース
470 メモリ制御部

Claims (18)

  1. 所定の未使用データ内の所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記未使用データ内の前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとからなる組と前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとからなる組とのそれぞれの前記組における特定の値のビット数に基づいて前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と
    を具備する符号化装置。
  2. 前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記未使用データとを含む
    請求項1記載の符号化装置。
  3. 前記選択部は、
    前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記特定の値のビットの個数を重みとして計数する第1の重みカウンタと、
    前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記特定の値のビットの個数を重みとして計数する第2の重みカウンタと、
    前記第1および第2の重みカウンタのそれぞれの計数値を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
    を備える請求項2記載の符号化装置。
  4. 所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と、
    メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部
    を具備し、
    前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含み、
    前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第1の書換えビット数カウンタと、
    前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データととにおいて前記プレリードデータと値の異なるビット数を書換えビット数として計数する第2の書換えビット数カウンタと、
    前記第1および第2の書換えビット数カウンタのそれぞれで計数された書換えビット数を比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
    を備え
    符号化装置。
  5. 所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と、
    メモリセルに書き込まれているデータをプレリードデータとして読み出す制御部
    を具備し、
    前記情報部は、前記第1候補パリティ生成部に入力されたユーザデータと前記所定の可変領域を含む未使用データとを含み、
    前記選択部は、前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第1の最長ランカウンタと、
    前記選択部は、前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとにおいて前記プレリードデータと値の異なるビットが連続する個数を計数して当該計数値の最大値を最長ランの長さとして求める第2の最長ランカウンタと、
    前記第1および第2の最長ラン数カウンタのそれぞれで求められた最長ランの長さを比較して当該比較結果に基づいて前記所定の条件を満たすパリティを選択する比較部と
    を備え
    符号化装置。
  6. 前記符号語において前記ユーザデータと前記選択パリティとの間に前記未使用データが配置される請求項記載の符号化装置。
  7. 前記符号語において前記未使用データと前記選択パリティとの間に前記ユーザデータが配置される請求項記載の符号化装置。
  8. 前記符号語において前記ユーザデータは複数の領域に分散して配置される請求項記載の符号化装置。
  9. 前記符号語において前記未使用データは、複数の領域に分散して配置される請求項記載の符号化装置。
  10. 前記未使用データは、前記可変領域と値が変更されない固定領域とからなり、
    前記第2候補パリティ生成部は、前記可変領域の値を変更した前記情報部に対応する前記第2の候補パリティを生成する
    請求項記載の符号化装置。
  11. 前記符号語において前記可変領域は複数の領域に分散して配置される請求項10記載の符号化装置。
  12. 前記符号語において前記固定領域は複数の領域に分散して配置される請求項10記載の符号化装置。
  13. 所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と
    を具備し、
    前記第1の候補パリティ生成部は、前記情報部から前記第1の候補パリティを生成し、
    前記第2の候補パリティ生成部は、前記第1の候補パリティと第1のパリティパターンとの論理演算により前記第2の候補パリティを生成す
    符号化装置。
  14. 第2のパリティパターンと前記第1の候補パリティとの論理演算により第3の候補パリティを生成する第3の候補パリティ生成部と、
    前記第2のパリティパターンと前記第2の候補パリティとの論理演算により第4の候補パリティを生成する第4の候補パリティ生成部と
    をさらに具備し、
    前記選択部は、前記第1、第2、第3および第4の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する
    請求項13記載の符号化装置。
  15. 所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力部と
    ユーザデータにおける特定の値のビット数を変換する変換処理を行って当該変換処理後の前記ユーザデータと前記変換処理前の前記ユーザデータとのいずれかを前記第1の候補パリティ生成部に出力するユーザデータ変換部
    を具備し、
    前記第1の候補パリティ生成部は、前記出力されたユーザデータを含む前記第1の情報部から前記第1の候補パリティを生成す
    符号化装置。
  16. 所定の未使用データ内の所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記未使用データ内の前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとからなる組と前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとからなる組とのそれぞれの前記組における特定の値のビット数に基づいて前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語をライトデータとしてメモリセルに出力する出力部と、
    前記メモリセルからリードデータを読み出して前記リードデータを復号する復号部と
    を具備するメモリコントローラ。
  17. 所定の未使用データ内の所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成部と、
    前記未使用データ内の前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成部と、
    前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとからなる組と前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとからなる組とのそれぞれの前記組における特定の値のビット数に基づいて前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択部と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を送信語として出力する出力部と、
    前記送信語に対応する受信語を受信して復号する復号部と
    を具備する通信システム。
  18. 所定の未使用データ内の所定の可変領域に所定値が設定された情報部の誤りを検出するためのパリティを第1の候補パリティとして生成する第1候補パリティ生成手順と、
    前記未使用データ内の前記所定の可変領域に前記所定値と異なる値が設定された前記情報部の誤りを検出するためのパリティを第2の候補パリティとして生成する第2候補パリティ生成手順と、
    前記第1の候補パリティと当該第1の候補パリティに対応する前記未使用データとからなる組と前記第2の候補パリティと当該第2の候補パリティに対応する前記未使用データとからなる組とのそれぞれの前記組における特定の値のビット数に基づいて前記第1および第2の候補パリティのうち所定の条件を満たすパリティを選択パリティとして選択する選択手順と、
    前記選択パリティに対応する前記情報部と前記選択パリティとからなる符号語を出力する出力手順と
    を具備する符号化方法。
JP2015146671A 2015-07-24 2015-07-24 符号化装置、メモリシステム、通信システムおよび符号化方法 Active JP6657634B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2015146671A JP6657634B2 (ja) 2015-07-24 2015-07-24 符号化装置、メモリシステム、通信システムおよび符号化方法
PCT/JP2016/062159 WO2017018008A1 (ja) 2015-07-24 2016-04-15 符号化装置、メモリコントローラ、通信システムおよび符号化方法
US15/736,079 US10481971B2 (en) 2015-07-24 2016-04-15 Encoding device, memory controller, communication system, and encoding method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2015146671A JP6657634B2 (ja) 2015-07-24 2015-07-24 符号化装置、メモリシステム、通信システムおよび符号化方法

Publications (2)

Publication Number Publication Date
JP2017027440A JP2017027440A (ja) 2017-02-02
JP6657634B2 true JP6657634B2 (ja) 2020-03-04

Family

ID=57884327

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2015146671A Active JP6657634B2 (ja) 2015-07-24 2015-07-24 符号化装置、メモリシステム、通信システムおよび符号化方法

Country Status (3)

Country Link
US (1) US10481971B2 (ja)
JP (1) JP6657634B2 (ja)
WO (1) WO2017018008A1 (ja)

Families Citing this family (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20190074890A (ko) * 2017-12-20 2019-06-28 에스케이하이닉스 주식회사 메모리 컨트롤러 및 그 동작 방법
US10431301B2 (en) 2017-12-22 2019-10-01 Micron Technology, Inc. Auto-referenced memory cell read techniques
US10566052B2 (en) * 2017-12-22 2020-02-18 Micron Technology, Inc. Auto-referenced memory cell read techniques
US11018694B2 (en) * 2019-06-10 2021-05-25 Hewlett Packard Enterprise Development Lp Fast cyclic redundancy check code generation
US10944422B1 (en) * 2019-09-23 2021-03-09 Advanced Micro Devices, Inc. Entropy agnostic data encoding and decoding

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH0795096A (ja) * 1993-09-20 1995-04-07 Fujitsu Ltd プログラマブル並列crc生成装置
JPH08335396A (ja) * 1995-06-08 1996-12-17 Sony Corp 半導体不揮発性記憶装置
US8412879B2 (en) * 2002-10-28 2013-04-02 Sandisk Technologies Inc. Hybrid implementation for error correction codes within a non-volatile memory system
JP4711660B2 (ja) * 2004-11-10 2011-06-29 日本ビクター株式会社 記録装置および記録媒体
CN103280239B (zh) * 2006-05-12 2016-04-06 苹果公司 存储设备中的失真估计和消除
JP4925301B2 (ja) * 2007-02-07 2012-04-25 株式会社メガチップス 半導体メモリシステム
KR100857252B1 (ko) * 2007-12-27 2008-09-05 (주)인디링스 마모도를 비트 수준에서 평준화하는 플래시 메모리 장치 및플래시 메모리 프로그래밍 방법
US7729166B2 (en) * 2008-07-02 2010-06-01 Mosaid Technologies Incorporated Multiple-bit per cell (MBC) non-volatile memory apparatus and system having polarity control and method of programming same
JP2013542533A (ja) * 2010-10-27 2013-11-21 エルエスアイ コーポレーション フラッシュメモリベースのデータ記憶のための順応ecc技術
TWI467364B (zh) * 2011-07-12 2015-01-01 Phison Electronics Corp 記憶體儲存裝置、記憶體控制器與資料寫入方法
JP5942781B2 (ja) 2012-04-16 2016-06-29 ソニー株式会社 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
KR101997794B1 (ko) * 2012-12-11 2019-07-09 삼성전자주식회사 메모리 제어기 및 그것을 포함한 메모리 시스템
KR102133209B1 (ko) * 2013-12-13 2020-07-14 에스케이하이닉스 주식회사 데이터 복호화 장치 및 데이터 복호화 방법

Also Published As

Publication number Publication date
US20180143871A1 (en) 2018-05-24
JP2017027440A (ja) 2017-02-02
WO2017018008A1 (ja) 2017-02-02
US10481971B2 (en) 2019-11-19

Similar Documents

Publication Publication Date Title
JP4988731B2 (ja) フラッシュエラー訂正
JP6657634B2 (ja) 符号化装置、メモリシステム、通信システムおよび符号化方法
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
JP5923631B2 (ja) データ反転によってデータ記憶を改良するための装置および方法
US8307261B2 (en) Non-volatile memory management method
JP5723967B2 (ja) ソリッド・ステート・ストレージ・デバイスのsレベル・ストレージに入力データを記録するための方法、エンコーダ装置、およびソリッド・ステート・ストレージ・デバイス
KR101264476B1 (ko) 증가된 용량의 이종의 스토리지 엘리먼트들
US20220245023A1 (en) Detection and correction of data bit errors using error correction codes
CN107077430B (zh) 存储器控制器、存储器系统以及存储器控制器控制方法
JP2013524609A5 (ja)
KR101550762B1 (ko) 연접 오류 정정 장치
JP2014140111A (ja) コントローラ、情報処理システム、コントローラの制御方法およびプログラム
US9547551B2 (en) Memory system having an encoding processing circuit for redundant encoding process
US9960788B2 (en) Memory controller, semiconductor memory device, and control method for semiconductor memory device
Gabrys et al. Tackling intracell variability in TLC flash through tensor product codes
US10970166B2 (en) Memory system and method of controlling non-volatile memory
KR101566088B1 (ko) 조합 숫자 시스템을 사용한 인코딩 및 디코딩 기법
KR101355988B1 (ko) 연접 비씨에이치 부호, 복호 및 다계층 복호 회로 및 방법, 이를 이용한 플래쉬 메모리 장치의 오류 정정 회로 및 플래쉬 메모리 장치
US8819331B2 (en) Memory system and memory controller
JP5492329B2 (ja) メモリアクセス装置
JP5563125B2 (ja) メモリアクセス装置
JP2011029857A (ja) フラッシュファイルシステムの誤り検出訂正機能
JP2013201479A (ja) 符号化装置、記憶装置および符号化方法

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180625

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20190625

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20190731

TRDD Decision of grant or rejection written
A01 Written decision to grant a patent or to grant a registration (utility model)

Free format text: JAPANESE INTERMEDIATE CODE: A01

Effective date: 20200107

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20200120

R151 Written notification of patent or utility model registration

Ref document number: 6657634

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151