JP5870901B2 - 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 - Google Patents

誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 Download PDF

Info

Publication number
JP5870901B2
JP5870901B2 JP2012242975A JP2012242975A JP5870901B2 JP 5870901 B2 JP5870901 B2 JP 5870901B2 JP 2012242975 A JP2012242975 A JP 2012242975A JP 2012242975 A JP2012242975 A JP 2012242975A JP 5870901 B2 JP5870901 B2 JP 5870901B2
Authority
JP
Japan
Prior art keywords
data
read
unit
error
erasure
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
JP2012242975A
Other languages
English (en)
Other versions
JP2014093654A (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 JP2012242975A priority Critical patent/JP5870901B2/ja
Priority to US14/049,248 priority patent/US9110827B2/en
Priority to CN201310513810.2A priority patent/CN103811075B/zh
Publication of JP2014093654A publication Critical patent/JP2014093654A/ja
Application granted granted Critical
Publication of JP5870901B2 publication Critical patent/JP5870901B2/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
    • 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/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/37Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35
    • H03M13/373Decoding methods or techniques, not specific to the particular type of coding provided for in groups H03M13/03 - H03M13/35 with erasure correction and erasure determination, e.g. for packet loss recovery or setting of erasures for the decoding of Reed-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/63Joint error correction and other techniques
    • H03M13/6306Error control coding in combination with Automatic Repeat reQuest [ARQ] and diversity transmission, e.g. coding schemes for the multiple transmission of the same information or the transmission of incremental redundancy

Landscapes

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

Description

本技術は、誤り検出訂正装置、不一致検出装置、メモリシステムおよび誤り検出訂正方法に関する。詳しくは、不揮発性メモリから読み出したデータにおいて誤りを検出および訂正する誤り検出訂正装置、不一致検出装置、メモリシステムおよび誤り検出訂正方法に関する。
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリの例としては、フラッシュメモリ、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、および、MRAM(Magnetoresistive RAM)などが挙げられる。これらの不揮発性メモリにおいては、記録したデータが熱雑音などのために破損して正しく読み出せないことがある。このため、データ記録装置は、記録する対象のデータから誤り検出訂正符号(ECC:Error detection and Correction Code)を生成して不揮発性メモリに記録することが多い。データ記録装置は、データの再生時に、このECCに基づいてデータにおける誤りの検出および訂正を行うことができる。
この誤りの検出および訂正において、異なる閾値電圧を用いて複数回データを読み出して、これらのデータを比較することにより消失を検出し、検出した消失に基づいて誤りを訂正するシステムが提案されている(例えば、特許文献1参照。)。
米国特許出願公開第2010/0077279号明細書
しかしながら、上述の従来技術では、データの誤りを正確に訂正することができない場合がある。例えば、不揮発性メモリでは、記録されたデータの値が時間に応じて変動するノイズであるランダムテレグラフノイズが生じることがある。このランダムテレグラフノイズが生じた場合には同じ閾値電圧で読み出したデータが、読み出した時間により異なる値になるおそれがある。異なる閾値電圧で読み出したデータを比較する上述のシステムでは、このような誤りを検出することができない。このため、データの誤りが正確に訂正されないおそれがある。
本技術はこのような状況に鑑みて生み出されたものであり、データの誤りを正確に訂正する技術を提供することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、上記リードデータを読み出したときから所定時間が経過したときに上記符号語を再リードデータとして上記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、上記リードデータおよび上記再リードデータにおいて上記符号要素ごとに値が一致するか否かを判断して値が一致しない上記符号要素の位置を上記符号語における上記消失位置として検出するタイミング制御消失位置検出部と、上記消失位置が検出された上記符号語において上記消失位置に基づいて誤りを訂正する誤り訂正部とを具備する誤り検出訂正装置、および、当該装置における誤り検出訂正方法である。これにより、リードデータおよび再リードデータにおいて値が一致しない符号要素の位置が消失位置として検出され、その消失位置が検出された符号語において誤りが訂正されるという作用をもたらす。
また、この第1の側面において、上記誤り訂正部は、上記検出された消失位置の総数が上記誤り訂正能力に応じた所定数より多い場合には上記検出された消失位置のうち上記消失位置の総数と上記所定数との差分に該当する個数の位置を消失位置でないものとして誤りを訂正してもよい。これにより、検出された消失位置の総数が所定数より多い場合には検出された消失位置のうち消失位置の総数と所定数との差分に該当する個数の位置が消失位置でないものとして誤りが訂正されるという作用をもたらす。
また、この第1の側面において、上記検出された消失位置の総数が上記所定数より多い場合には上記差分に該当する個数の上記消失位置において上記符号要素を特定の値のデータに置き換えて上記誤り訂正部に供給するデータ置換部をさらに具備し、上記誤り訂正部は、上記特定の値のデータに置き換られた位置は上記消失位置でないものとして誤りを訂正してもよい。これにより、消失位置の総数と所定数との差分に該当する個数の消失位置において符号要素が特定の値のデータに置き換えられ、その位置は消失位置でないものとして誤り訂正が行われるという作用をもたらす。
また、この第1の側面において、上記特定の値は、2値のうちの一方の値の上記符号要素が他方の値に反転する確率と上記他方の値の上記符号要素が上記一方の値に反転する確率とに基づいて決定された値であってもよい。これにより、特定の値は、2値のうちの一方の値の符号要素が他方の値に反転する確率と他方の値の符号要素が一方の値に反転する確率とに基づいて決定されるという作用をもたらす。
また、この第1の側面において、上記メモリアドレスに保持された上記符号要素の値が2値のうちのいずれであるかを判断するための閾値を第1の値に制御して上記メモリアドレスから上記符号語を第1のデータとして読み出し、上記閾値を上記第1の値とは異なる第2の値に制御して上記メモリアドレスから上記符号語を第2のデータとして読み出す閾値制御読出部と、上記第1および第2のデータにおいて上記符号要素ごとに値が一致するか否かを判断して値が一致しない上記符号要素の位置を上記符号語における上記消失位置として検出する閾値制御消失位置検出部とをさらに具備し、上記誤り訂正部は、上記タイミング制御消失位置検出部により上記消失位置が検出された上記符号語と上記閾値制御消失位置検出部により上記消失位置が検出された上記符号語との各々において誤りを訂正してもよい。これにより、上記第1および第2のデータにおいて値が一致しない上記符号要素の位置が消失位置として検出されるという作用をもたらす。
また、この第1の側面において、上記符号語読出部により上記リード処理が実行されると上記リードデータにおける誤りの有無を検出するリードデータ誤り検出部をさらに具備し、上記符号語読出部は、上記リードデータ誤り検出部により上記誤りが検出されると上記再リード処理を実行してもよい。これにより、リード処理が実行されるとリードデータにおける誤りの有無が検出され、その誤りが検出されると再リード処理が実行されるという作用をもたらす。
また、この第1の側面において、温度を取得する温度取得部と、上記リード処理が実行される前に上記温度に応じて上記所定時間の長さを決定する決定部とをさらに具備し、上記符号語読出部は、上記所定時間の長さが決定されると上記リード処理を実行してもよい。これにより、上記温度に応じて所定時間の長さが決定されるとリード処理が実行されるという作用をもたらす。
また、本技術の第2の側面は、複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、上記リードデータを読み出したときから所定時間が経過したときに上記符号語を再リードデータとして上記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、上記リードデータと上記再リードデータとが不一致であるか否かを検出する不一致検出部と、上記不一致であることが検出された場合には上記メモリアドレスをアクセスが禁止されるアドレスである不良アドレスとして登録する登録部と具備する不一致検出装置である。これにより、リードデータと再リードデータとが不一致であることが検出された場合にはメモリアドレスが不良アドレスとして登録されるという作用をもたらす。
また、この第2の側面において、上記不一致検出部は、上記符号要素ごとに値が不一致であるか否かを判断し、上記登録部は、上記不一致であると判断された上記符号要素の数が所定の閾値を超えた場合には上記メモリアドレスを上記不良アドレスとして登録してもよい。これにより、不一致であると判断された符号要素の数が所定の閾値を超えた場合にメモリアドレスが不良アドレスとして登録されるという作用をもたらす。
また、本技術の第3の側面は、長さの異なる複数の時間を候補時間として順に供給する供給部と、複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理と上記リードデータを読み出したときから上記候補時間が経過したときに上記符号語を再リードデータとして上記メモリアドレスから読み出す再リード処理とのそれぞれを上記候補時間が設定されるたびに一定回数実行する符号語読出部と、上記リード処理および上記再リード処理が実行されるたびに上記リードデータと上記再リードデータとが不一致であるか否かを検出する不一致検出部と、上記複数の時間の各々について上記不一致であると検出された回数を計数する計数部と、上記検出回数に基づいて上記複数の時間のうち上記不一致であると検出された頻度が最も高い時間を設定する設定部とを具備する不一致検出装置である。これにより、不一致の検出頻度が最も高い時間が設定されるという作用をもたらす。
また、本技術の第4の側面は、消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をメモリアドレスに記憶するメモリと、上記符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、上記リードデータを読み出したときから所定時間が経過したときに上記符号語を再リードデータとして上記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、上記リードデータおよび上記再リードデータにおいて上記符号要素ごとに値が一致するか否かを判断して値が一致しない上記符号要素の位置を上記符号語における上記消失位置として検出するタイミング制御消失位置検出部と、上記消失位置が検出された上記符号語において上記消失位置に基づいて誤りを訂正する誤り訂正部とを具備するメモリシステムである。これにより、リードデータおよび再リードデータにおいて値が一致しない符号要素の位置が消失位置として検出され、その消失位置が検出された符号語において誤りが訂正されるという作用をもたらす。
本技術によれば、データの誤りを正確に訂正することができるという優れた効果を奏し得る。
第1の実施の形態における情報処理システムの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの具体的な構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第1の実施の形態における符号語のデータ構成の一例を示す図である。 第1の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第1の実施の形態におけるBCH符号の検査行列の一例を示す図である。 第1の実施の形態における誤り訂正部の一構成例を示すブロック図である。 第1の実施の形態におけるリードデータ、再リードデータおよび消失位置データの一例を示す図である。 第1の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第1の実施の形態におけるリード処理の一例を示すフローチャートである。 第1の実施の形態の変形例におけるリード処理の一例を示すフローチャートである。 第2の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第2の実施の形態におけるリードデータ、再リードデータ、一部を置換したリードデータおよび消失位置データの一例を示す図である。 第2の実施の形態におけるリード処理の一例を示すフローチャートである。 第3の実施の形態におけるリード処理部の一構成例を示すブロック図である。 第3の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。 第3の実施の形態における符号語リード部の一構成例を示すブロック図である。 第3の実施の形態における消失位置検出部の一構成例を示す図である。 第3の実施の形態におけるリード処理の一例を示すフローチャートである。 第4の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第4の実施の形態におけるメモリ検査部の一構成例を示すブロック図である。 第4の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第4の実施の形態におけるメモリ検査処理の一例を示すフローチャートである。 第5の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第5の実施の形態におけるRTN(Random Telegraph Noise)サイクル決定部の一構成例を示すブロック図である。 第5の実施の形態におけるRTNサイクルごとの不一致数の計数結果を示すヒストグラムの一例である。 第5の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第5の実施の形態におけるRTNサイクル決定処理の一例を示すフローチャートである。 第6の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(消失位置を検出して訂正する例)
2.第2の実施の形態(消失位置を検出し、データを置換して訂正する例)
3.第3の実施の形態(閾値を制御するとともに消失位置を検出して訂正する例)
4.第4の実施の形態(不一致を検出してアクセス制御する例)
5.第5の実施の形態(RTNサイクルを決定し、消失位置を検出して訂正する例)
6.第6の実施の形態(温度に応じてRTNサイクルを決定し、消失位置を検出して訂正する例)
<1.第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は、ライトデータを、ライトデータおよびパリティからなる符号語に変換(すなわち、符号化)する。メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化したデータを書き込む。
また、ホストシステム100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化されたデータを読み出す。そして、メモリコントローラ300は、符号化されたデータを、符号化前の元のデータに変換(すなわち、復号)する。また、メモリコントローラ300は、ECCに基づいてデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正したデータをホストシステム100に供給する。なお、メモリコントローラ300は、特許請求の範囲に記載の誤り検出訂正装置の一例である。
不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。この不揮発性メモリ400は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ400のアクセス単位であり、セクタとも呼ばれる。ブロックのそれぞれにはメモリアドレスが割り当てられている。なお、ReRAMの代わりに、フラッシュメモリ、PCRAM、および、MRAMなどを不揮発性メモリ400として用いてもよい。
[メモリコントローラの構成例]
図2は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、RAM(Random Access Memory)301、CPU(Central Processing Unit)302、ECC処理部303およびROM(Read Only Memory)304を備える。また、メモリコントローラ300は、ホストインターフェース305、バス306および不揮発性メモリインターフェース307を備える。
RAM301は、CPU302が実行する処理において必要となるデータを一時的に保持するものである。CPU302は、メモリコントローラ300全体を制御するものである。ROM304は、CPU302が実行するプログラム等を記憶するものである。ホストインターフェース305は、ホストシステム100との間でデータやコマンドを相互に交換するものである。バス306は、RAM301、CPU302、ECC処理部303、ROM304、ホストインターフェース305および不揮発性メモリインターフェース307が相互にデータを交換するための共通の経路である。不揮発性メモリインターフェース307は、不揮発性メモリ400との間でデータやコマンドを相互に交換するものである。
ECC処理部303は、ライトデータを符号化し、また、リードデータを復号するものである。ライトデータの符号化においてECC処理部303は、複数のライトデータの各々を符号化対象データとして、その符号化対象データにパリティを付加することにより所定の単位で符号化する。所定の単位で符号化された個々のデータを以下、「符号語」と称する。そして、ECC処理部303は、符号化したライトデータを不揮発性メモリ400にバス306を介して供給する。
また、ECC処理部303は、符号化されたリードデータを元の符号化対象データに復号する。この復号において、ECC処理部303は、パリティを使用して符号語の誤りを検出および訂正する。ECC処理部303は、復号した符号化対象データをホストシステム100にバス306を介して供給する。
図3は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、ライト処理部310およびリード処理部320を備える。図3におけるライト処理部310は、図2におけるRAM301、CPU302、ECC処理部303、ROM304、ホストインターフェース305、バス306および不揮発性メモリインターフェース307などにより実現される。リード処理部320についても同様である。
ライト処理部310は、ライトコマンドに従って、ライトデータを不揮発性メモリ400に書き込む処理を実行するものである。ライト処理部310は、ホストシステム100からライトコマンドおよびライトデータを受け取った場合には、そのライトデータを符号化対象データとして、その符号化対象データを符号語に符号化する。符号化において符号化対象データは、例えば、αを根とする2元のBCH符号に符号化される。ここでiは1乃至2tの整数であり、tは整数である。また、αは、ガロア体GF(2)の元である。2元のBCH符号では、αの各々は、「1」または「0」の値をとる。BCH符号への符号化においては、例えば、次の式1による生成多項式が用いられる。
Figure 0005870901
式1において、LCM[]は、[]内の各々の多項式の最小公倍多項式を表わす。また、M(x)は、αのガロア体GF(2)上の最小多項式である。
ライト処理部310は、符号化対象データから符号多項式を生成し、その符号多項式を式1に例示した生成多項式により割った剰余を求める。この符号多項式は、符号化対象データの各々のビットの値を係数とする多項式である。ライト処理部310は、求めた剰余の係数の各々からなるデータをパリティとして生成し、符号化対象データおよびパリティからなるデータを符号語として不揮発性メモリ400に出力する。
なお、ライト処理部310は、生成多項式を使用した多項式演算でなく、行列演算によって符号化を行ってもよい。また、ライト処理部310は、ライトデータを2元のBCH符号に符号化しているが、誤り訂正能力を持つ符号であれば、BCH符号以外の符号に符号化してもよい。ライト処理部310は、例えば、RS(Reed-Solomon)符号や畳込み符号に符号化してもよい。また、ライト処理部310は、2元より高い次元の符号に符号化してもよい。
リード処理部320は、リードコマンドに従って、リードデータを不揮発性メモリ400から読み出す処理を実行するものである。リード処理部320は、ホストシステム100からリードコマンドを受け取ると、そのコマンドにより指定されたメモリアドレスから符号語をリードデータとして読み出す。リード処理部320は、リードデータを元の符号化対象データに復号する。復号においてリード処理部320は、リードデータに含まれるパリティを使用して、リードデータにおける誤りを訂正する。誤り訂正方法の詳細については後述する。リード処理部320は、復号した符号化対象データをホストシステム100へ出力する。
図4は、第1の実施の形態における符号語のデータ構成の一例を示す図である。図4に示すように、ライト処理部310は、kビットの符号化対象データの各々をnビットの符号語に符号化する。ここで、kは整数であり、nは、kより大きな整数である。それぞれの符号語は、kビットの符号化対象データと、n−kビットのパリティとを含む。このように、符号語が、符号化対象データをそのまま含み、符号化対象データとパリティとに符号語を容易に分離することができる符号は、組織符号と呼ばれる。なお、符号は非組織符号であってもよい。
[リード処理部の構成例]
図5は、第1の実施の形態におけるリード処理部320の一構成例を示すブロック図である。このリード処理部320は、リードコマンドバッファ321、RTNサイクルカウンタ322、符号語リード部323、リードデータバッファ324、誤り訂正部325および消失位置検出部328を備える。
リードコマンドバッファ321は、ホストシステム100から受け取ったリードコマンドを保持するものである。
RTNサイクルカウンタ322は、RTNサイクルを計数するものである。このRTNサイクルは、ランダムテレグラフノイズによりデータの値が変動する周期である。RTNサイクルの値には、例えば、不揮発性メモリ400と同じ種類の他のメモリにおいて、RTNによる不一致の検出頻度が最も高くなるサイクルが設定される。
符号語リード部323は、符号語の単位でデータを不揮発性メモリ400から読み出すものである。この符号語リード部323は、リードコマンドをリードコマンドバッファ321から取得して不揮発性メモリ400に出力することにより符号語をメモリアドレスからリードデータRDとして読み出す。また、符号語リード部323は、リードコマンドの送信とともに、RTNサイクルカウンタ322に計数を開始させる。
そして、符号語リード部323は、誤り訂正部325から、読み出したリードデータについての誤り訂正の結果を受け取る。訂正が成功であった場合に符号語リード部323は、RTNサイクルカウンタ322の計数値を初期値にする。一方、訂正が失敗であった場合に符号語リード部323は、RTNサイクルカウンタの計数値を参照し、リードコマンドの出力時からRTNサイクルが経過したか否かを判断する。RTNサイクルが経過したのであれば、符号語リード部323は、リードコマンドをリードコマンドバッファ321から取得して不揮発性メモリ400に出力することにより符号語をメモリアドレスから再リードデータrRDとして読み出す。なお、符号語リード部323は、特許請求の範囲に記載の符号語読出部の一例である。
リードデータバッファ324は、不揮発性メモリ400から読み出されたリードデータRDおよび再リードデータrRDを保持するものである。
誤り訂正部325は、リードデータRDにおける誤りを訂正するものである。誤り訂正部325は、リードデータRDがリードデータバッファ324に読み出されると、そのリードデータRDに含まれるパリティを使用して、リードデータRDの誤りを検出および訂正する。誤り訂正部325は、訂正が成功したか否かを示す訂正結果を符号語リード部323および消失位置検出部328に供給する。
そして、リードデータRDの誤り訂正に成功したのであれば、誤り訂正部325は、訂正後のリードデータからパリティを除いたデータRD'をホストシステム100に出力する。一方、訂正に失敗したのであれば、誤り訂正部325は、消失位置検出部328から消失位置データを受け取る。この消失位置データは、リードデータRDにおいてデータが消失した位置である消失位置を示すものである。例えば、リードデータRDと同じサイズのデータであって、消失位置のビットの値を「1」に、消失位置に該当しない位置のビットの値を「0」に設定したデータが消失位置データとして生成される。
消失位置データを受け取ると、誤り訂正部325は、消失位置データの示す消失位置に基づいて消失訂正を実行する。ここで、消失訂正は、消失位置においてデータが消失したものとして、その消失位置のデータの値を求める訂正処理であり、消失位置が検出されていることを前提として実行される。誤り訂正部325は、消失訂正したリードデータからパリティを除いたデータRD'をホストシステム100に出力する。
この消失訂正における誤り訂正能力は、消失位置が不明であるときにおける誤り訂正能力より高く、2倍程度となる。ここで、誤り訂正能力は、符号語当たりの訂正可能な符号要素(例えば、ビット)の個数である。この符号要素は、符号語を構成する最小単位であり、シンボルとも呼ばれる。
この誤り訂正能力は、符号の最小ハミング距離dminにより決定される。符合の最小ハミング距離dminは、その符号に属する任意の異なる符号語間のハミング距離の最小値である。2t+1≦dminを満たすt(tは整数)の最大値をtmaxとすると、消失位置が不明である場合にはtmax個までの符号要素を訂正することができる。この規則は、限界距離復号則と呼ばれる。
一方、消失位置が検出されている消失訂正においては、消失位置の個数をhとし、位置が不明である誤りの数をt個とすると、2t+h+1≦dminが成立する限り、両方を訂正することができる。言い換えれば、t=0とすると、h+1≦dminを満たすh(hは整数)の最大値であるhmax個までの符号要素を訂正することができる。hmaxは、tmaxより大きいことから、消失位置が検出されているときの方が、消失位置が検出されていないときよりも、符号語の誤り訂正能力が高くなる。
消失位置検出部328は、符号語における消失位置を検出するものである。消失位置検出部328は、リードデータRDの訂正に失敗したことを示す訂正結果を受け取ると、リードデータバッファ324からリードデータRDおよび再リードデータrRDを取得する。前述したように、再リードデータrRDは、リードデータRDが読み出されたときからRTNサイクルが経過したときに読み出されたデータであるから、RTNサイクル内にランダムテレグラフノイズが生じた場合には異なる値となりうる。このため、消失位置検出部328は、リードデータRDおよび再リードデータrRDにおいてビットごとに値が一致するか否かを判断することにより、どのビット位置でデータが消失しているかを検出することができる。消失位置検出部328は、検出した消失位置を示す消失位置データを誤り訂正部325に供給する。
なお、消失位置の検出と誤りの訂正とをメモリコントローラ300が行う構成としているが、これらの処理を不揮発性メモリ400が実行する構成としてもよい。
図6は、第1の実施の形態におけるBCH符号の検査行列の一例を示す図である。検査行列は、符号の誤りを検出するために用いられる行列である。BCH符号においては、図6に例示するような検査行列を符号語に乗算することにより、その符号語の誤りが検出される。
[誤り訂正部の構成例]
図7は、第1の実施の形態における誤り訂正部325の一構成例を示すブロック図である。この誤り訂正部325は、リードデータ誤り検出訂正部326および消失訂正部327を備える。
リードデータ誤り検出訂正部326は、リードデータRDにおける誤りを検出および訂正するものである。BCH符号において誤りを訂正する場合、リードデータ誤り検出訂正部326は、符号語(リードデータRD)に含まれるパリティを使用して、その符号語における誤りの位置を検出する。具体的には、リードデータ誤り検出訂正部326は、符号語と図6に例示した検査行列とからシンドロームを求める。ここで、シンドロームは、受信した符号語に検査行列を乗じることにより得られるベクトルであり、誤りの位置を求めるために用いられる。
シンドロームを求める上述の行列演算は、次の式2により表わすこともできる。
Figure 0005870901
式2において、Y(x)は、リードデータを構成するビットの各々の値を係数とする受信多項式である。また、Sは、シンドロームである。
シンドロームSが全て「0」である場合、リードデータ誤り検出訂正部326は、リードデータに誤りがないと判断する。この場合、リードデータ誤り検出訂正部326は、リードデータRDからパリティを除いたデータRD'をホストシステム100に供給する。
一方、シンドロームSのいずれかが「0」でない場合には、リードデータ誤り検出訂正部326は、リードデータに誤りがあると判断する。この場合、リードデータ誤り検出訂正部326は、その誤りの位置を求めるために、次の式3および式4を生成する。
Figure 0005870901
Figure 0005870901
式3および式4において、j1乃至jLは、誤りの位置である。これらの誤りの位置の個数、すなわち誤りの個数が、誤り訂正能力t以下であれば、誤り訂正が成功する。また、式4において、Πxは、xの総乗を意味し、eは、誤りの位置における符号要素の値である。
式4におけるσ(z)の根を求めることにより誤りの位置を求めることができるため、このσ(z)は、誤り位置多項式と呼ばれる。また、式5におけるω(z)から誤りの位置における値を求めることができるため、ω(z)は、誤り評価多項式と呼ばれる。
リードデータ誤り検出訂正部326は、生成した式3および4から次の式5を生成する。
Figure 0005870901
式5においてAmodBは、AをBで割った剰余を意味する。また、S(z)は、シンドロームSの各々を係数とする多項式である。
リードデータ誤り検出訂正部326は、生成した式5と、次の式6乃至式8を満たすσ(z)およびω(z)を求める。式5乃至式8を満たすσ(z)およびω(z)は、ピーターソン法やユークリッド法などにより求められる。
Figure 0005870901
Figure 0005870901
Figure 0005870901
式7において、degF(z)は、多項式F(z)の最大の次数を示す。
式5乃至式8を満たすσ(z)およびω(z)が存在しない場合には、誤り訂正能力を越える数の誤りがあるために誤り訂正が失敗したと判断される。リードデータ誤り検出訂正部326は、訂正が失敗したことを示す訂正結果を消失位置検出部328に供給する。
一方、式5乃至式8を満たすσ(z)およびω(z)が存在する場合、リードデータ誤り検出訂正部326は、σ(z)の根α-j1乃至α-jLを求める。リードデータ誤り検出訂正部326は、これらの根に対応するj1乃至jLを誤りの位置として検出する。リードデータ誤り検出訂正部326は、検出した誤りの位置の各々のビットを反転することにより誤りを訂正する。リードデータ誤り検出訂正部326は、訂正したリードデータRDからパリティを除いたデータRD'をホストシステム100に供給する。
なお、2元より高い次元のBCH符号を使用する場合、誤りの位置に加え、その位置における符号要素(シンボル)の値eも求める必要がある。この場合、符号要素の値eは、例えば、次の式9および式10により求められる。
Figure 0005870901
Figure 0005870901
式9および式10において、σ'(z)は、σ(z)の導関数である。
また、リードデータ誤り検出訂正部326は、誤りの有無の検出および訂正を行う構成としているが、訂正を行わずに誤りの有無の検出のみを行ってもよい。また、リードデータ誤り検出訂正部326は、特許請求の範囲に記載のリードデータ誤り検出部の一例である。
消失訂正部327は、消失位置データに基づいて、リードデータRDにおいて消失訂正を行うものである。消失訂正部327は、消失位置データを消失位置検出部328から受け取ると、リードデータバッファ324からリードデータRDを取得する。そして、消失訂正部327は、消失位置データの示す消失位置に基づいて、次の式11および式12を生成する。
Figure 0005870901
Figure 0005870901
式11および式12において、j1'乃至jh'は消失位置である。
また、消失訂正部327は、式2を使用してリードデータRDからシンドロームを求める。消失訂正部327は、生成した式11および式12とシンドロームとから、式13を生成する。
Figure 0005870901
ここで、位置が検出されていない誤りの個数をtとし、消失した符号要素の個数をhとし、最小ハミング距離をdminとして、2t+h+1≦dminが成立する場合、式21におけるσ(z)はt以下の次数となる。このために、degσ(z)≦tが成立する。消失訂正部327は、このdegσ(z)≦tと、式7および式8と、式13とを満たすσ(z)およびΨ(z)を求める。σ(z)およびΨ(z)は、ピーターソン法やユークリッド法などにより求められる。
条件を満たすσ(z)およびΨ(z)が存在する場合、消失訂正部327は、求めたσ(z)およびΨ(z)から、次の式14を使用して消失位置ji'のビットの値ei'を求める。消失訂正部327は、リードデータRDにおいて消失位置ji'のビットの値を求めた値ei'に訂正する。
Figure 0005870901
式14においてλ'(z)は、λ(z)の導関数である。
また、消失訂正部327は、σ(z)の根α-j1乃至α-jLに対応するj1乃至jLを誤りの位置として検出し、リードデータRDにおいて、これらの位置のビットを反転する。消失訂正部327は、訂正したリードデータRDからパリティを除いたデータRD'をホストシステム100に出力する。
条件を満たすσ(z)およびΨ(z)が存在しなかった場合、消失訂正部327は、誤り訂正能力を超える数の誤りが生じたために、誤り訂正は失敗したと判断する。この場合、消失訂正部327は、リードデータを正確に読み出すことができなかったことを通知するリードエラーをホストシステム100に出力する。
なお、2元より高い次元のBCH符号を使用する場合、誤りの位置において符号要素(シンボル)の値をさらに求める必要がある。この場合、誤りの位置jiの符号要素の値eは、例えば、次の式15により求められる。
Figure 0005870901
図8は、第1の実施の形態におけるリードデータ、再リードデータおよび消失位置データの一例を示す図である。図8におけるaは、リードデータの一例であり、図8におけるbは再リードデータの一例である。リードデータにおける0乃至3ビット目が「0110」であり、再リードデータにおける0乃至3ビット目が「0001」であった場合について考える。
リードデータの誤り訂正が失敗した場合、消失位置検出部328は、リードデータおよび再リードデータにおいてビットごとに値が一致するか否かを判断し、値が一致しない位置を消失位置として検出する。図8におけるaおよびbに示した例では、1乃至3ビット目の値が一致していないため、これらの位置が消失位置として検出される。
消失位置検出部328は、検出した消失位置を示す消失位置データを生成する。図8におけるcは、消失位置データの一例である。消失位置データのデータサイズ(nビット)は、リードデータと同じサイズであり、一致した位置のビットは「0」に設定され、不一致のある位置(すなわち、消失位置)のビットは「1」に設定される。例えば、1乃至3ビット目のみが不一致である場合、1乃至3ビット目に「1」が設定され、他の位置に「0」が設定された消失位置データが生成される。なお、消失位置データのデータ構成は、図8に例示した構成に限定されない。
[メモリコントローラの動作例]
図9は、第1の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。この動作は、例えば、メモリコントローラ300に電源が投入されたときに開始する。
メモリコントローラ300は、ライトコマンドをホストシステム100から受信したか否かを判断する(ステップS931)。ライトコマンドを受信したのであれば(ステップS931:Yes)、メモリコントローラ300は、ライトデータを符号化して不揮発性メモリ400に書き込む(ステップS932)。
ライトコマンドを受信していない場合(ステップS931:No)、または、ステップS932の後、メモリコントローラ300は、リードコマンドを受信したか否かを判断する(ステップS933)。リードコマンドを受信したのであれば(ステップS933:Yes)、メモリコントローラ300は、符号化されたリードデータを読み出すためのリード処理を実行する(ステップS940)。リードコマンドを受信していない場合(ステップS933:No)、または、ステップS940の後、メモリコントローラ300は、ステップS931に戻る。
図10は、第1の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ300は、リードコマンドにより指定されたメモリアドレスから符号語をリードデータとして読み出す(ステップS941)。メモリコントローラ300は、そのリードデータにおいて誤りの検出および訂正を実行する(ステップS942)。メモリコントローラ300は、誤り訂正が成功したか否かを判断する(ステップS943)。
誤り訂正が失敗した場合には(ステップS943:No)、メモリコントローラ300は、リードデータを読み出したときからRTNサイクルが経過したか否かを判断する(ステップS944)。RTNサイクルが経過していなければ(ステップS944:No)、メモリコントローラ300はステップS944に戻る。一方、RTNサイクルが経過したのであれば(ステップS944:Yes)、メモリコントローラ300は、同一のメモリアドレスから符号語を再リードデータとして読み出す(ステップS945)。
メモリコントローラ300は、リードデータおよび再リードデータにおいてビット毎に値が一致しているか否かを判断することにより、消失位置を検出する(ステップS946)。そして、メモリコントローラ300は、検出した消失位置に基づいてリードデータにおいて消失訂正を実行する(ステップS949)。メモリコントローラ300は、消失訂正が成功したか否かを判断する(ステップS950)。
誤り訂正が成功した場合(ステップS943:Yes)、または、消失訂正が成功した場合(ステップS950:Yes)、メモリコントローラ300は、訂正したリードデータをホストシステム100に出力してリード処理を終了する(ステップS951)。一方、消失訂正が失敗した場合(ステップS950:No)、メモリコントローラ300は、リードエラーをホストシステム100に出力してリード処理を終了する(ステップS953)。
このように、第1の実施の形態によれば、メモリコントローラ300は、リードデータの読出しからRTNサイクルが経過したときに読み出した再リードデータとリードデータとから消失位置を検出して、符号語の誤りを訂正することができる。これにより、RTNサイクルが経過したときに生じたランダムテレグラフノイズによる誤りを検出および訂正することができる。また、消失位置の検出により符号の誤り訂正能力が向上するため、メモリコントローラ300はデータをより正確に訂正することができる。なお、第1の実施の形態ではRTNサイクルより誤り訂正時間が長いことを想定し、ステップS943で誤り訂正が失敗したことを確認した後にステップS944でRTNサイクルのタイミングを待つという構成としている。しかし、誤り訂正時間がRTNサイクルより短い場合には、誤り訂正処理中にRTNサイクルのタイミングを持ち、再リードデータを予め読み出しておくという構成もあり得る。
[変形例]
第1の実施の形態では、メモリコントローラ300は、最初の消失訂正に失敗するとホストシステム100にリードエラーを出力していたが、消失訂正に失敗した場合に再度、消失訂正を実行してもよい。変形例のメモリコントローラ300は、消失訂正に失敗した場合に再度、消失訂正を実行する点において第1の実施の形態と異なる。
図11は、第1の実施の形態の変形例におけるリード処理の一例を示すフローチャートである。変形例のリード処理は、ステップS952をさらに実行する点において第1の実施の形態と異なる。
消失訂正に失敗した場合(ステップS950:No)を、メモリコントローラ300は、消失訂正の実行回数が一定回数未満であるか否かを判断する(ステップS952)。
消失訂正の実行回数が一定回数未満である場合(ステップS952:Yes)、メモリコントローラ300は、ステップS944に戻る。一方、消失訂正の実行回数が一定回数以上となった場合(ステップS952:No)、メモリコントローラ300は、リードエラーをホストシステム100に出力してリード処理を終了する(ステップS953)。
このように第1の実施の形態の変形例によれば、メモリコントローラ300は、消失訂正に失敗してからRTNサイクルが経過したときに再度、消失訂正を実行することができる。これにより、メモリコントローラ300は、あるRTNサイクルが経過したときに生じた不一致を検出および訂正することができない場合であっても、他のRTNサイクルが経過したときに生じた不一致を検出および訂正することができる。なお、変形例においても、第1の実施の形態と同様に、誤り訂正時間がRTNサイクルより短い場合には、誤り訂正処理中にRTNサイクルのタイミングを持ち、再リードデータを予め読み出しておいてもよい。
<2.第2の実施の形態>
[リード処理部の構成例]
第1の実施の形態では、消失訂正において誤り訂正能力を超える不一致が生じた場合にはメモリコントローラ300は消失訂正に失敗したと判断していた。しかし、メモリコントローラ300は、誤り訂正能力を超える数の不一致が生じた場合に、誤り訂正能力と不一致のデータ数との差分に該当する個数の不一致のデータを特定の値のデータに置換し、誤り訂正能力の範囲内で消失訂正を行ってもよい。第2の実施の形態のメモリコントローラ300は、誤り訂正能力と不一致のデータ数との差分に該当する個数の不一致のデータを特定の値のデータに置換して、誤り訂正能力の範囲内で消失訂正を行う点において第1の実施の形態と異なる。
図12は、第2の実施の形態におけるリード処理部320の一例構成例を示すブロック図である。第2の実施の形態のリード処理部320は、データ置換部329をさらに備える点において第1の実施の形態と異なる。
データ置換部329は、誤り訂正能力を超える分の消失位置においてデータを特定の値のデータに置換するものである。データ置換部329は、消失位置検出部328から消失位置データおよびリードデータを受け取り、消失位置データの示す消失位置の個数hが誤り訂正能力を超えるか否かを判断する。具体的には、消失位置の個数が誤り訂正能力に応じたdmin−1より多いか否かを判断する。dminは、符号の最小ハミング距離である。
hがdmin−1より多い場合、データ置換部329は、リードデータにおいて、hとdmin−1の差分であるh−(dmin−1)個の消失位置においてビットを特定の値(「0」または「1」)のビットに置換する。「1」および「0」のいずれの値に置換するかは、例えば、メモリセルにおいてデータが「0」から「1」へ反転する確率と、「1」から「0」へ反転する確率とを予め測定しておき、いずれの測定値が高いかにより決定される。あるいは、不揮発性メモリのデバイス特性により、「0」から「1」へ反転する確率と「1」から「0」へ反転する確率とに偏りがある場合には、確率の高い方の値に置換される。また、データ置換部329は、置換した位置には消失がないものとして消失位置データを修正し、一部を置換したリードデータとともに誤り訂正部325に供給する。これにより、消失位置の個数が誤り訂正能力以下となる。このため、消失位置の個数と誤りの数との合計が誤り訂正能力を超えなければ、誤り訂正部325は、リードデータの誤りを訂正することができる。
一方、hがdmin−1以下である場合、消失訂正が可能であるため、データ置換部329は、リードデータをそのまま誤り訂正部325に供給する。
図13は、第2の実施の形態におけるリードデータ、再リードデータ、一部を置換したリードデータおよび消失位置データの一例を示す図である。図13におけるaは、リードデータの一例であり、図13におけるbは再リードデータの一例である。リードデータおよび再リードデータにおける1乃至3ビット目と、n−1ビット目とが不一致であったものとする。nは、リードデータのデータサイズである。
この場合、消失位置検出部328は、4つの位置を消失位置として検出する。誤り訂正能力(dmin−1)が3ビットである場合、消失位置の個数が誤り訂正能力を超えるために消失訂正による訂正が不可能である。この場合、データ置換部329は、誤り訂正能力(3ビット)と消失位置の個数(4ビット)の差分に該当する個数の消失扱いとされる位置のビット(1ビット)を特定の値のビットに置換する。図13におけるcは、置換後のリードデータの一例である。リードデータにおいて、例えば、n−1番目のビットが「0」の値のビットに置換される。
データ置換部329は、置換した位置には消失がないものとして消失位置データを修正する。図13におけるdは、修正後の消失位置データの一例である。消失位置データにおいて、例えば、置換したn−1番目のビットが「0」の値のビットに修正される。なお、リード処理部320は、消失位置の数が誤り訂正能力を超える場合にデータの置換を行う構成としているが、データの置換を行わずに、誤り訂正能力を超える分の消失位置を消失扱いにしない処理のみを行う構成としてもよい。この場合、リード処理部320にはデータ置換部329を設けず、消失位置検出部328が、消失位置データにおいてh−(dmin−1)個のビットを「0」に修正すればよい。
[メモリコントローラの動作例]
図14は、第2の実施の形態におけるリード処理の一例を示すフローチャートである。第2の実施の形態のリード処理は、ステップS947およびS948をさらに実行する点において第1の実施の形態と異なる。
消失位置を検出した後(ステップS946)、メモリコントローラ300は、消失位置の数hがdmin−1を超えるか否かを判断する(ステップS947)。dmin−1を超える場合には(ステップS947:Yes)、メモリコントローラ300は、リードデータにおいて、h−(dmin−1)個の消失位置のデータを特定の値のデータに置換する。また、メモリコントローラ300は、消失位置データにおいて、置換した位置に対応するビットを「0」に修正する(ステップS948)。hがdmin−1以下である場合(ステップS947:No)、または、ステップS948の後、メモリコントローラ300は、消失訂正を実行する(ステップS949)。
このように、第2の実施の形態によれば、メモリコントローラ300は、検出された消失位置の数と誤り訂正可能な誤りの数との差分の個数の不一致のデータを特定の値のデータに置換する。また、メモリコントローラ300は、置換した位置には消失がないものとして消失位置データを修正して、消失扱いとするビット数を誤り訂正能力以下にする。これにより、メモリコントローラ300は、誤り訂正能力を超える数の消失位置が検出された場合であっても、誤り訂正能力の範囲内でリードデータの誤りを訂正することができる。
<3.第3の実施の形態>
[リード処理部の構成例]
第1の実施の形態では、メモリコントローラ300は、メモリアドレスに保持されたビットの値が2値のうちのいずれであるかを判断するための閾値を制御しないでリードデータを読み出していた。しかし、メモリコントローラ300は、閾値を制御してリードデータを読み出してもよい。異なる値に閾値を制御して読み出すことにより、ランダムテレグラフノイズ以外の要因による消失位置が検出される。第3の実施の形態のリード処理部320は、閾値を制御してリードデータを読み出す点において第1の実施の形態と異なる。
図15は、第3の実施の形態におけるリード処理部320の一構成例を示すブロック図である。第3の実施の形態のリード処理部320は、符号語リード部323および消失位置検出部328の代わりに符号語リード部330および消失位置検出部340を備える点において第1の実施の形態と異なる。
符号語リード部330は、閾値を制御するための閾値制御信号をリードコマンドとともに不揮発性メモリ400に出力する。
ここで、不揮発性メモリ400がReRAMである場合、不揮発性メモリ400は複数の可変抵抗素子を備え、閾値として抵抗値が用いられる。これらの可変抵抗素子は、高抵抗状態(HRS:High Resistive State)と低抵抗状態(LRS:Low Resistive State)との2状態で1ビットのデータを記録することができる。これらの可変抵抗素子に記録されたデータを読み出す場合に、可変抵抗素子の状態が2状態のいずれであるか、すなわち記録されているデータが2値のうちのいずれであるかを判断するために通常用いられる閾値を以下、「標準閾値」と称する。
符号語リード部330は、リードコマンドをホストシステム100から受け取ると、閾値制御信号により閾値を標準閾値に制御してメモリアドレスからリードデータを読み出す。そして、誤り訂正部325においてリードデータの訂正が失敗した場合には、符号語リード部330は、標準閾値より高抵抗側に設定した高抵抗閾値に閾値を制御して再リードデータを読み出す。また、符号語リード部330は、標準閾値より低抵抗側に設定した低抵抗閾値に閾値を制御して再リードデータを読み出す。以下、標準閾値により読み出されたリードデータを「標準閾値リードデータRD_N」と称する。また、高抵抗閾値により読み出された再リードデータを「高抵抗閾値再リードデータrRD_H」と称し、低抵抗閾値により読み出された再リードデータを「低抵抗閾値再リードデータrRD_L」と称する。
消失位置検出部340は、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lにおいてビット毎に値が一致するか否かを判断して、値の一致しないビットの位置を消失位置として検出する。
誤り訂正部325は、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lから検出された消失位置に基づいて消失訂正を行う。誤り訂正部325が消失訂正に失敗した場合、符号語リード部330は、標準閾値リードデータRD_Nを読み出したときからRTNサイクルが経過したときに、標準閾値により再リードデータを読み出す。以下、標準閾値により読み出された再リードデータを「標準閾値再リードデータrRD_N」と称する。
消失位置検出部340は、標準閾値リードデータRD_Nおよび標準閾値再リードデータrRD_Nから消失位置を検出し、誤り訂正部325は、その消失位置に基づいて消失訂正を行う。
なお、符号語リード部330は、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lの読出しの次に、標準閾値再リードデータrRD_Nを読み出している。しかし、符号語リード部330は、標準閾値再リードデータrRD_Nの読出しの次に、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lを読み出してもよい。
図16は、第3の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。横軸は、抵抗値Rを示しており、縦軸は、セルの数の相対的な分布を相対値により示している。この図が示すように可変抵抗素子の抵抗分布は、LRSおよびHRSに分かれている。これら低抵抗状態と高抵抗状態とを分離するために通常、標準閾値が用いられる。
可変抵抗素子の高抵抗状態および低抵抗状態をそれぞれ論理0値または論理1値の何れ
かに対応付けることにより、可変抵抗素子はメモリセルとして機能する。論理0値または論理1値の何れに対応付けるかは任意である。例えば、高抵抗状態が論理1値に対応付けられ、低抵抗状態が論理0値に対応付けられる。
ここで、HRSにおいて抵抗値が比較的低い状態と、LRSにおいて抵抗値が比較的高い状態とは、データ保持特性が良くない。このため、高抵抗閾値と低抵抗閾値とでデータを読み出し、それらの値が異なる場合には、その可変抵抗素子のデータ保持特性が低下しており、その可変抵抗素子に記録されたデータが消失していると推定することができる。
[符号語リード部の構成例]
図17は、第3の実施の形態における符号語リード部330の一構成例を示すブロック図である。符号語リード部330は、送信タイミング制御部331および閾値制御部332を備える。
送信タイミング制御部331は、リードコマンドの送信タイミングを制御するものである。また、閾値制御部332は、閾値制御信号により閾値を制御するものである。
送信タイミング制御部331は、リードコマンドがリードコマンドバッファ321に保持されると、そのリードコマンドを不揮発性メモリ400に出力する。一方、閾値制御部332は、標準閾値に制御するための閾値制御信号を不揮発性メモリ400に出力する。これにより、標準閾値リードデータRD_Nが読み出される。
そして、送信タイミング制御部331は、訂正が失敗したことを示す訂正結果#1を受け取ると、リードコマンドバッファ321からリードコマンドを取得して、そのリードコマンドを2回出力する。一方、閾値制御部332は、訂正が失敗したことを示す訂正結果#1を受け取ると、高抵抗閾値に制御するための閾値制御信号と、低抵抗閾値に制御するための閾値制御信号とを順に出力する。これにより、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lが読み出される。
次いで、送信タイミング制御部331は、訂正が失敗したことを示す訂正結果#2を受け取ると、標準閾値リードデータRD_Nが送信されたときからRTNサイクルが経過したときにリードコマンドを再度出力する。この訂正結果#2は、訂正結果#1の次に生成される訂正結果である。一方、閾値制御部332は、訂正が失敗したことを示す訂正結果#2を受け取ると、標準閾値に制御するための閾値制御信号を出力する。これにより、標準閾値再リードデータrRD_Nが読み出される。
[消失位置検出部の構成例]
図18は、第3の実施の形態における消失位置検出部340の一構成例を示すブロック図である。消失位置検出部340は、閾値制御消失位置検出部341およびタイミング制御消失位置検出部342を備える。
閾値制御消失位置検出部341は、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lから消失位置を検出するものである。この閾値制御消失位置検出部341は、訂正が失敗したことを示す訂正結果#1を受け取ると、高抵抗閾値再リードデータrRD_Hおよび低抵抗閾値再リードデータrRD_Lを取得する。閾値制御消失位置検出部341は、それらのデータから消失位置を検出して消失位置データ#1を生成し、誤り訂正部325に供給する。
タイミング制御消失位置検出部342は、標準閾値リードデータRD_Nおよび標準閾値再リードデータrRD_Nから消失位置を検出するものである。このタイミング制御消失位置検出部342は、訂正が失敗したことを示す訂正結果#2を受け取ると、標準閾値リードデータRD_Nおよび標準閾値再リードデータrRD_Nを取得する。タイミング制御消失位置検出部342は、それらのデータから消失位置を検出して消失位置データ#2を生成し、誤り訂正部325に供給する。
[メモリコントローラの動作例]
図19は、第3の実施の形態におけるリード処理の一例を示すフローチャートである。第3の実施の形態のリード処理は、ステップS961乃至S965をさらに実行する点において第1の実施の形態と異なる。
1回目の誤り訂正に失敗した場合(ステップS943:No)、メモリコントローラ300は、高抵抗閾値で再リードデータを読み出す(ステップS961)。また、メモリコントローラ300は、低抵抗閾値で再リードデータを読み出す(ステップS962)。メモリコントローラ300は、異なる閾値で読み出した2つの再リードデータから消失位置を検出する(ステップS963)。メモリコントローラ300は、検出した消失位置に基づいて消失訂正を行う(ステップS964)。そして、メモリコントローラ300は、消失訂正が成功したか否かを判断する(ステップS965)。消失訂正に成功した場合には(ステップS965:Yes)、メモリコントローラ300は、訂正したリードデータをホストシステム100に出力してリード処理を終了する。一方、消失訂正に失敗した場合には(ステップS965:No)、メモリコントローラ300は、ステップS944を実行する。
このように、第3の実施の形態によれば、メモリコントローラ300は、異なる閾値で読み出した2つのデータから消失位置を検出して符号語の誤りを訂正することにより、ランダムテレグラフノイズ以外の要因による誤りを訂正することができる。
<4.第4の実施の形態>
[メモリコントローラの構成例]
第1の実施の形態では、メモリコントローラ300は、RTNによる不一致の有無の検出結果に関わりなく、不揮発性メモリ400にアクセスしていた。しかし、メモリコントローラ300は、不一致の有無の検出結果に応じて、そのメモリアドレスに対するアクセスを制御することもできる。第4の実施の形態のメモリコントローラ300は、不一致の有無の検出結果に応じてメモリアドレスへのアクセスを制御する点において第1の実施の形態と異なる。
図20は、第4の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。第4の実施の形態のメモリコントローラ300は、メモリ検査部350およびアクセス制御部360をさらに備える点において第1の実施の形態と異なる。
メモリ検査部350は、不揮発性メモリ400におけるメモリアドレスの各々について、RTNによる不一致が発生するか否かを検査するものである。メモリ検査部350は、例えば、メモリコントローラ300の起動時に検査を行う。なお、メモリ検査部350は、工場出荷時や修理時などに検査を行ってもよいし、出荷されたメモリコントローラ300の動作中において、RTNサイクルより長い一定の周期で検査を繰返し実行してもよい。
検査において、メモリ検査部350は、検査対象のメモリアドレスからリードデータを読み出し、RTNサイクルの経過後に再リードデータを読み出す。メモリ検査部350は、リードデータおよび再リードデータが一致するか否かによりRTNによる不一致の有無を検出する。メモリ検査部350は、全てのメモリアドレスについて、不一致の有無を検出し、不一致が検出されたメモリアドレスを不良アドレスとしてアクセス制御部360に信号線359を介して通知する。
なお、メモリ検査部350は、全てのメモリアドレスについて検査を行っているが、一部のメモリアドレスについて検査を行う構成としてもよい。例えば、メモリ検査部350は、メモリアドレスごとにアクセス頻度を記録しておき、アクセス頻度が閾値より高いメモリアドレスについてのみ検査を行ってもよい。
アクセス制御部360は、不良アドレスへのアクセスを制御するものである。例えば、アクセス制御部は、論理アドレスと物理アドレスとを対応付けたテーブルを保持し、そのテーブルに物理アドレスが不良アドレスであるか否かを示すフラグを登録しておく。ここで、論理アドレスは、ホストシステム100が定義したアドレス空間におけるアドレスである。物理アドレスは、不揮発性メモリ400の各々のブロックに割り当てられたメモリアドレスである。
なお、メモリ検査部350およびアクセス制御部360をメモリコントローラ300の内部に設ける構成としているが、これらをメモリコントローラ300の外部に設けてもよい。また、アクセス制御部360は、特許請求の範囲に記載の登録部の一例である。また、メモリコントローラ300は、特許請求の範囲に記載の不一致検出装置の一例である。
第4の実施の形態のライト処理部310は、ホストシステム100からライトコマンドを受け取った場合に、そのライトコマンドにより指定された論理アドレスに対し、不良アドレスに該当しない物理アドレスを割り当てる。
また、第4の実施の形態のリード処理部320は、ホストシステム100からリードコマンドを受け取った場合に、そのリードコマンドにより指定された論理アドレスに対応する物理アドレスが不良アドレスであるか否かを判断する。不良アドレスでない場合には、リード処理部320は、その物理アドレスからリードデータを読み出して誤りの検出および訂正を行う。一方、不良アドレスである場合にはリード処理部320は、リードエラーをホストシステム100に出力する。
なお、メモリ検査部350は、不一致が一度でも検出されたメモリアドレスを不良アドレスとしているが、メモリアドレスごとに複数回検査を行って、不一致の発生率が一定値を超えたときに、そのメモリアドレスが不良アドレスであると判断してもよい。また、メモリ検査部350は、誤り訂正能力を超える数の消失位置が検出されたメモリアドレスを不良アドレスとして登録することもできる。この場合、メモリ検査部350は、第1の実施の形態と同様に消失位置データを生成し、そのデータの示す消失位置の個数が誤り訂正能力を超えるか否かを判断すればよい。
[メモリ検査部の構成例]
図21は、第4の実施の形態におけるメモリ検査部350の一構成例を示すブロック図である。このメモリ検査部350は、リードコマンド発行部351、リードコマンドバッファ352、RTNサイクルカウンタ353、符号語リード部354、リードデータバッファ355、不一致検出部356および不良アドレス通知部357を備える。
リードコマンド発行部351は、検査対象のメモリアドレスからデータを読み出すためのリードコマンドを発行するものである。このリードコマンド発行部351は、例えば、全てのメモリアドレスを検査対象とし、それらを指定するリードコマンドを順に発行して、リードコマンドバッファ352に保持させる。
リードコマンドバッファ352、RTNサイクルカウンタ353およびリードデータバッファ355の構成は、第1の実施の形態におけるリードコマンドバッファ321、RTNサイクルカウンタ322およびリードデータバッファ324と同様である。
符号語リード部354は、メモリアドレスごとに、リードデータおよび再リードデータを読み出すものである。この符号語リード部354は、リードコマンドバッファ352に保持されたリードコマンドのそれぞれを、RTNサイクルの間隔で2回ずつ不揮発性メモリ400に出力する。これにより、メモリアドレスごとにリードデータおよび再リードデータが読み出される。
不一致検出部356は、リードデータおよび再リードデータが一致するか否かによりRTNによる不一致の有無を検出するものである。不一致検出部356は、メモリアドレスごとに、不一致の有無を検出して、それらの検出結果を不良アドレス通知部357に供給する。
不良アドレス通知部357は、不一致が検出されたメモリアドレスを不良アドレスとしてアクセス制御部360に通知するものである。この不良アドレス通知部357は、不一致が検出されたリードデータに対応するリードコマンドをリードコマンドバッファ352から取得し、そのリードコマンドにより指定されたメモリアドレスを不良アドレスとしてアクセス制御部360に通知する。
[メモリコントローラの動作例]
図22は、第4の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。第4の実施の形態のメモリコントローラ300の動作は、ステップS910をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、不揮発性メモリを検査するためのメモリ検査処理を最初に実行し(ステップS910)、その後にステップS931乃至S933およびS940を実行する。
図23は、第4の実施の形態におけるメモリ検査処理の一例を示すフローチャートである。メモリコントローラ300は、検査対象のメモリアドレスのいずれかからリードデータを読み出す(ステップS911)。そして、メモリコントローラ300は、リードデータを読み出したときからRTNサイクルが経過したか否かを判断する(ステップS912)。RTNサイクルが経過していなければ(ステップS912:No)、メモリコントローラ300はステップS912に戻る。一方、RTNサイクルが経過したのであれば(ステップS912:Yes)、メモリコントローラ300は、再リードデータを読み出す(ステップS913)。
メモリコントローラ300は、リードデータおよび再リードデータが一致するか否かによりRTNによる不一致の有無を検出する(ステップS914)。メモリコントローラ300は、不一致が検出されたメモリアドレスを不良アドレスとして登録し、以後のアクセスを制限する(ステップS915)。メモリコントローラ300は、全メモリアドレスを検査したか否かを判断する(ステップS916)。全メモリアドレスを検査していなければ(ステップS916:No)、メモリコントローラ300は、ステップS911に戻る。一方、全メモリアドレスを検査したのであれば(ステップS916:Yes)、メモリコントローラ300は、メモリ検査処理を終了する。
このように、第4の実施の形態によれば、メモリコントローラ300は、リードデータと再リードデータとからランダムテレグラフノイズによる不一致の有無を検出することができる。そして、メモリコントローラ300は、不一致の生じたメモリアドレスを不良なアドレスとして登録することにより、そのアドレスへのアクセスを制限することができる。
<5.第5の実施の形態>
[メモリコントローラの構成例]
第1の実施の形態では、予め設定されたRTNサイクルの値に基づいてデータの誤りを訂正していた。しかし、不一致の検出頻度が最も高くなるサイクルは、不揮発性メモリ400の製品ごとの特性のばらつきや温度条件などにより変動することもあるため、予め設定されたRTNサイクルが、実際のRTNサイクルの値と異なる場合もある。このため、メモリコントローラ300自身が、制御対象の不揮発性メモリ400におけるRTNによる不一致の検出頻度を測定し、その測定値に応じてRTNサイクルを設定することが望ましい。第5の実施の形態のメモリコントローラ300は、制御対象の不揮発性メモリ400のRTNによる不一致の検出頻度を測定して、その測定値に応じてRTNサイクルを設定する点において第1の実施の形態と異なる。
図24は、第5の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。第5の実施の形態のメモリコントローラ300は、RTNサイクル設定部370をさらに備える点において第1の実施の形態と異なる。
RTNサイクル設定部370は、RTNによる不一致の検出頻度に応じてRTNサイクルを求め、そのRTNサイクルをリード処理部320に設定するものである。RTNサイクル設定部370は、例えば、メモリコントローラ300の起動時にRTNサイクルを設定する。なお、RTNサイクル設定部370は、工場出荷時や修理時などにRTNサイクルを設定してもよいし、出荷されたメモリコントローラ300の動作中において、RTNサイクルを設定するための処理を、そのRTNサイクルより長い一定の周期で実行してもよい。
RTNサイクルの設定において、RTNサイクル設定部370は、所定の長さのサイクルを、RTNサイクルの候補である候補サイクルとして設定し、任意のメモリアドレスから符号語をリードデータとして読み出す。そして、RTNサイクル設定部370は、候補サイクルの経過後に同一のメモリアドレスから符号語を再リードデータとして読み出す。RTNサイクル設定部370は、それらのリードデータおよび再リードデータが一致するか否かによりRTNによる不一致の有無を検出する。RTNサイクル設定部370は、この不一致の有無の検出処理を一定回数実行する。そして、RTNサイクル設定部370は、候補サイクルの長さを変更し、同様の手順で不一致の有無の検出を一定回数実行する。
RTNサイクル設定部370は、複数の候補サイクルの中から、不一致の検出回数が最も多かったサイクルをRTNサイクルとし、その値をリード処理部320に設定する。第5の実施の形態のリード処理部320は、RTNサイクル設定部370によりRTNサイクルが設定されると、その値に基づいて再リードデータを読み出す。
なお、RTNサイクル設定部370をメモリコントローラ300の内部に設ける構成としているが、メモリコントローラ300の外部に設けてもよい。また、RTNサイクル設定部370は、特許請求の範囲に記載の不一致検出装置の一例である。
[RTNサイクル設定部の構成例]
図25は、第5の実施の形態におけるRTNサイクル設定部370の一構成例を示すブロック図である。このRTNサイクル設定部370は、リードコマンド発行部371、リードコマンドバッファ372、候補サイクルカウンタ373、候補サイクル設定部374および符号語リード部375を備える。また、RTNサイクル設定部370は、リードデータバッファ376、不一致検出部377、不一致数計数部378およびRTNサイクル設定回路379を備える。
リードコマンド発行部371は、任意のメモリアドレスを指定するリードコマンドを発行するものである。リードコマンド発行部371は、発行したリードコマンドをリードコマンドバッファ372に保持させる。
リードコマンドバッファ372およびリードデータバッファ376の構成は、第1の実施の形態におけるリードコマンドバッファ321およびリードデータバッファ324と同様である。
候補サイクルカウンタ373は、候補サイクルを計数するものである。候補サイクル設定部374は、長さの異なる複数の時間のいずれかを候補サイクルとして設定するものである。候補サイクル設定部374は、設定した候補サイクルを符号語リード部375に供給する。
符号語リード部375は、指定されたメモリアドレスからリードデータおよび再リードデータを読み出すものである。この符号語リード部375は、候補サイクルが設定されるたびに、その候補サイクルに基づいてリードデータおよび再リードデータを読み出す処理を一定回数実行する。
不一致検出部377は、リードデータおよび再リードデータが読み出されるたびに、それらが一致するか否かによりRTNによる不一致の有無を検出するものである。不一致検出部377は、不一致の検出結果を不一致数計数部378に供給する。
不一致数計数部378は、候補サイクルごとに不一致の発生回数を計数するものである。不一致数計数部378は、計数した結果をRTNサイクル設定回路379に供給する。
RTNサイクル設定回路379は、複数の候補サイクルの中から、不一致の検出回数が最も多かったサイクルをRTNサイクルとして設定するものである。RTNサイクル設定回路379は、設定したRTNサイクルの値をリード処理部320におけるRTNサイクルカウンタ322に供給する。
なお、不一致検出部377は、リードデータおよび再リードデータにおいてビット単位で不一致を検出していないが、ビット単位で不一致を検出してもよい。この場合、不一致検出部377は、第1の実施の形態と同様に消失位置データを生成して、不一致数計数部378に供給する。そして、不一致数計数部378は、消失位置の数を1回当たりの不一致数として計数する。不一致の検出回数が複数回である場合、不一致数計数部378は、それぞれの検出における不一致数の総数を計数結果としてRTNサイクル設定回路379に出力する。
図26は、第5の実施の形態におけるRTNサイクルごとの不一致数の計数結果を示すヒストグラムの一例である。縦軸は不一致の検出回数を示し、横軸は、候補サイクルを示す。長さの異なるT乃至Tのサイクルのうち、Tのサイクルにおける不一致の検出回数が最も多かったものとする。この場合、TのサイクルがRTNサイクルとして用いられる。
[メモリコントローラの動作例]
図27は、第5の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。第5の実施の形態のメモリコントローラ300の動作はステップS920をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、RTNサイクルを設定するためのRTNサイクル設定処理を最初に実行し(ステップS920)、その後にステップS931乃至S933およびS940を実行する。
図28は、第5の実施の形態におけるRTNサイクル設定処理の一例を示すフローチャートである。メモリコントローラ300は、任意のメモリアドレスからリードデータを読み出す(ステップS921)。メモリコントローラ300は、リードデータを読み出したときから候補サイクルが経過したか否かを判断する(ステップS922)。候補サイクルが経過していなければ(ステップS922:No)、メモリコントローラ300は、ステップS922に戻る。候補サイクルが経過したのであれば(ステップS922:Yes)、メモリコントローラ300は、メモリアドレスから再リードデータを読み出す(ステップS923)。メモリコントローラ300は、リードデータおよび再リードデータが一致するか否かによりRTNによる不一致の有無を検出する(ステップS924)。メモリコントローラ300は、不一致が検出されたのであれば、その候補サイクルにおける不一致の検出回数をカウントアップする(ステップS925)。
そして、メモリコントローラ300は、候補サイクルにおけるリードデータおよび再リードデータの読出し回数が一定回数に達したか否かを判断する(ステップS926)。読出し回数が一定回数に達していなければ(ステップS926:No)、メモリコントローラ300は、ステップS921に戻る。読出し回数が一定回数に達したのであれば(ステップS926:Yes)、メモリコントローラ300は、候補サイクルを変更する(ステップS927)。
メモリコントローラ300は、長さの異なる複数の候補サイクルの全てにおいて不一致の検出回数の算出を行ったか否かを判断する(ステップS928)。全てのサイクルで不一致の検出回数を算出していなければ(ステップS928:No)、メモリコントローラ300は、ステップS921に戻る。全てのサイクルで不一致の検出回数を算出したのであれば(ステップS928:Yes)、メモリコントローラ300は、不一致の検出回数(検出頻度)が最も多い候補サイクルをRTNサイクルとして設定する(ステップS929)。ステップS929の後、メモリコントローラ300は、RTNサイクル設定処理を終了する。
このように、第5の実施の形態によれば、メモリコントローラ300は、制御対象の不揮発性メモリ400のRTNによる不一致の検出頻度を測定して、その測定値に応じてRTNサイクルを設定することができる。これにより、メモリコントローラ300は、データの誤りをより正確に訂正することができる。
<6.第6の実施の形態>
[メモリコントローラの構成例]
第1の実施の形態では、メモリコントローラ300は、一定のRTNサイクルに基づいて消失位置を検出していた。しかし、RTNサイクルの長さは、温度に応じて変わる場合がある。第6の実施の形態のメモリコントローラ300は温度に応じてRTNサイクルの長さを変更する点において第1の実施の形態と異なる。
図29は、第6の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。第6の実施の形態のメモリコントローラ300は、温度取得部380およびRTNサイクル決定部390をさらに備える点において第1の実施の形態と異なる。
温度取得部380は、不揮発性メモリ400内の温度センサにより測定された温度を取得するものである。温度取得部380は、取得した温度をRTNサイクル決定部390に供給する。
RTNサイクル決定部390は、温度に応じてRTNサイクルの長さを決定するものである。RTNサイクル決定部390は、例えば、RTNサイクルより長い一定の周期でRTNサイクルの長さを決定する。
一般に、温度が高いほど、不揮発性メモリ400においてランダムテレグラフノイズ等の各種のノイズの発生率が増加するため、RTNサイクル決定部390は、温度が高いほど、RTNサイクルを短くする。RTNサイクル決定部390は、長さを決定したRTNサイクルをリード処理部320に供給する。
第6の実施の形態のリード処理部320は、RTNサイクル決定部390からRTNサイクルの値を受け取り、その値に基づいて再リードデータを読み出す。
なお、温度取得部380およびRTNサイクル決定部390をメモリコントローラ300の内部に設ける構成としているが、これらの一方または両方をメモリコントローラ300の外部に設ける構成とすることもできる。
このように、第6の実施の形態によれば、メモリコントローラ300は、温度に応じてRTNサイクルの長さを変更することができる。これにより、メモリコントローラ300は、温度が変動した場合であっても、現在の温度に応じたRTNサイクルによりデータを正確に訂正することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disk)、メモリカード、ブルーレイディスク(Blu-ray Disc(登録商標))等を用いることができる。
なお、本技術は以下のような構成もとることができる。
(1)消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出部と、
前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正部と
を具備する誤り検出訂正装置。
(2)前記誤り訂正部は、前記検出された消失位置の総数が前記誤り訂正能力に応じた所定数より多い場合には前記検出された消失位置のうち前記消失位置の総数と前記所定数との差分に該当する個数の位置を消失位置でないものとして誤りを訂正する
前記(1)記載の誤り検出訂正装置。
(3)前記検出された消失位置の総数が前記所定数より多い場合には前記差分に該当する個数の前記消失位置において前記符号要素を特定の値のデータに置き換えて前記誤り訂正部に供給するデータ置換部をさらに具備し、
前記誤り訂正部は、前記特定の値のデータに置き換られた位置は前記消失位置でないものとして誤りを訂正する
前記(2)記載の誤り検出訂正装置。
(4)前記特定の値は、2値のうちの一方の値の前記符号要素が他方の値に反転する確率と前記他方の値の前記符号要素が前記一方の値に反転する確率とに基づいて決定された値である
前記(3)記載の誤り検出装置。
(5)前記メモリアドレスに保持された前記符号要素の値が2値のうちのいずれであるかを判断するための閾値を第1の値に制御して前記メモリアドレスから前記符号語を第1のデータとして読み出し、前記閾値を前記第1の値とは異なる第2の値に制御して前記メモリアドレスから前記符号語を第2のデータとして読み出す閾値制御読出部と、
前記第1および第2のデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出する閾値制御消失位置検出部と
をさらに具備し、
前記誤り訂正部は、前記タイミング制御消失位置検出部により前記消失位置が検出された前記符号語と前記閾値制御消失位置検出部により前記消失位置が検出された前記符号語との各々において誤りを訂正する
前記(1)乃至(4)のいずれかに記載の誤り検出訂正装置。
(6)前記符号語読出部により前記リード処理が実行されると前記リードデータにおける誤りの有無を検出するリードデータ誤り検出部をさらに具備し、
前記符号語読出部は、前記リードデータ誤り検出部により前記誤りが検出されると前記再リード処理を実行する
前記(1)乃至(5)のいずれかに記載の誤り検出訂正装置。
(7)温度を取得する温度取得部と、
前記リード処理が実行される前に前記温度に応じて前記所定時間の長さを決定する決定部と
をさらに具備し、
前記符号語読出部は、前記所定時間の長さが決定されると前記リード処理を実行する
前記(1)乃至(6)のいずれかに記載の誤り検出訂正装置。
(8) 複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
前記リードデータと前記再リードデータとが不一致であるか否かを検出する不一致検出部と、
前記不一致であることが検出された場合には前記メモリアドレスをアクセスが禁止されるアドレスである不良アドレスとして登録する登録部と
具備する不一致検出装置。
(9)前記不一致検出部は、前記符号要素ごとに値が不一致であるか否かを判断し、
前記登録部は、前記不一致であると判断された前記符号要素の数が所定の閾値を超えた場合には前記メモリアドレスを前記不良アドレスとして登録する
前記(8)記載の不一致検出装置。
(10)長さの異なる複数の時間を候補時間として順に供給する供給部と、
複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理と前記リードデータを読み出したときから前記候補時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理とのそれぞれを前記候補時間が設定されるたびに一定回数実行する符号語読出部と、
前記リード処理および前記再リード処理が実行されるたびに前記リードデータと前記再リードデータとが不一致であるか否かを検出する不一致検出部と、
前記複数の時間の各々について前記不一致であると検出された回数を計数する計数部と、
前記検出回数に基づいて前記複数の時間のうち前記不一致であると検出された頻度が最も高い時間を設定する設定部と
を具備する不一致検出装置。
(11)消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をメモリアドレスに記憶するメモリと、
前記符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出部と、
前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正部と
を具備するメモリシステム。
(12)符号語読出部が、消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出手順と、
タイミング制御消失位置検出部が、前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出手順と、
誤り訂正部が、前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正手順と
を具備する誤り検出訂正方法。
100 ホストシステム
200 ストレージシステム
300 メモリコントローラ
301 RAM
302 CPU
303 ECC処理部
304 ROM
305 ホストインターフェース
306 バス
307 不揮発性メモリインターフェース
310 ライト処理部
320 リード処理部
321、352、372 リードコマンドバッファ
322、353 RTNサイクルカウンタ
323、330、354、375 符号語リード部
324、355、376 リードデータバッファ
325 誤り訂正部
326 リードデータ誤り検出訂正部
327 消失訂正部
328、340 消失位置検出部
329 データ置換部
331 送信タイミング制御部
332 閾値制御部
341 閾値制御消失位置検出部
342 タイミング制御消失位置検出部
350 メモリ検査部
351、371 リードコマンド発行部
356、377 不一致検出部
357 不良アドレス通知部
360 アクセス制御部
370 RTNサイクル設定部
373 候補サイクルカウンタ
374 候補サイクル設定部
378 不一致数計数部
379 RTNサイクル設定回路
380 温度取得部
390 RTNサイクル決定部
400 不揮発性メモリ

Claims (12)

  1. 消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
    前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出部と、
    前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正部と
    を具備する誤り検出訂正装置であって、
    前記所定時間は、ランダムテレグラフノイズによりデータの値が変動する周期である
    誤り検出訂正装置。
  2. 前記誤り訂正部は、前記検出された消失位置の総数が前記誤り訂正能力に応じた所定数より多い場合には前記検出された消失位置のうち前記消失位置の総数と前記所定数との差分に該当する個数の位置を消失位置でないものとして誤りを訂正する
    請求項1記載の誤り検出訂正装置。
  3. 前記検出された消失位置の総数が前記所定数より多い場合には前記差分に該当する個数の前記消失位置において前記符号要素を特定の値のデータに置き換えて前記誤り訂正部に供給するデータ置換部をさらに具備し、
    前記誤り訂正部は、前記特定の値のデータに置き換られた位置は前記消失位置でないものとして誤りを訂正する
    請求項2記載の誤り検出訂正装置。
  4. 前記特定の値は、2値のうちの一方の値の前記符号要素が他方の値に反転する確率と前記他方の値の前記符号要素が前記一方の値に反転する確率とに基づいて決定された値である
    請求項3記載の誤り検出訂正装置。
  5. 前記メモリアドレスに保持された前記符号要素の値が2値のうちのいずれであるかを判断するための閾値を第1の値に制御して前記メモリアドレスから前記符号語を第1のデータとして読み出し、前記閾値を前記第1の値とは異なる第2の値に制御して前記メモリアドレスから前記符号語を第2のデータとして読み出す閾値制御読出部と、
    前記第1および第2のデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出する閾値制御消失位置検出部と
    をさらに具備し、
    前記誤り訂正部は、前記タイミング制御消失位置検出部により前記消失位置が検出された前記符号語と前記閾値制御消失位置検出部により前記消失位置が検出された前記符号語との各々において誤りを訂正する
    請求項1記載の誤り検出訂正装置。
  6. 前記符号語読出部により前記リード処理が実行されると前記リードデータにおける誤りの有無を検出するリードデータ誤り検出部をさらに具備し、
    前記符号語読出部は、前記リードデータ誤り検出部により前記誤りが検出されると前記再リード処理を実行する
    請求項1記載の誤り検出訂正装置。
  7. 温度を取得する温度取得部と、
    前記リード処理が実行される前に前記温度に応じて前記所定時間の長さを決定する決定部と
    をさらに具備し、
    前記符号語読出部は、前記所定時間の長さが決定されると前記リード処理を実行する
    請求項1記載の誤り検出訂正装置。
  8. 複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
    前記リードデータと前記再リードデータとが不一致であるか否かを検出する不一致検出部と、
    前記不一致であることが検出された場合には前記メモリアドレスをアクセスが禁止されるアドレスである不良アドレスとして登録する登録部と
    具備する不一致検出装置であって、
    前記所定時間は、ランダムテレグラフノイズによりデータの値が変動する周期である
    不一致検出装置。
  9. 前記不一致検出部は、前記符号要素ごとに値が不一致であるか否かを判断し、
    前記登録部は、前記不一致であると判断された前記符号要素の数が所定の閾値を超えた場合には前記メモリアドレスを前記不良アドレスとして登録する
    請求項8記載の不一致検出装置。
  10. 長さの異なる複数の時間をランダムテレグラフノイズによりデータの値が変動する周期に等しい所定時間の候補時間として順に供給する供給部と、
    複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理と前記リードデータを読み出したときから前記候補時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理とのそれぞれを前記候補時間が設定されるたびに一定回数実行する符号語読出部と、
    前記リード処理および前記再リード処理が実行されるたびに前記リードデータと前記再リードデータとが不一致であるか否かを検出する不一致検出部と、
    前記複数の時間の各々について前記不一致であると検出された回数を計数する計数部と、
    前記検出回数に基づいて前記複数の時間のうち前記不一致であると検出された頻度が最も高い時間を前記所定時間として設定する設定部と
    を具備する不一致検出装置。
  11. 消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をメモリアドレスに記憶するメモリと、
    前記符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出部と、
    前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出部と、
    前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正部と
    を具備するメモリシステムであって
    前記所定時間は、ランダムテレグラフノイズによりデータの値が変動する周期である
    メモリシステム。
  12. 符号語読出部が、消失位置の検出により誤り訂正能力が向上する複数の符号要素からなる符号語をリードデータとしてメモリアドレスから読み出すリード処理を実行し、前記リードデータを読み出したときから所定時間が経過したときに前記符号語を再リードデータとして前記メモリアドレスから読み出す再リード処理を実行する符号語読出手順と、
    タイミング制御消失位置検出部が、前記リードデータおよび前記再リードデータにおいて前記符号要素ごとに値が一致するか否かを判断して値が一致しない前記符号要素の位置を前記符号語における前記消失位置として検出するタイミング制御消失位置検出手順と、
    誤り訂正部が、前記消失位置が検出された前記符号語において前記消失位置に基づいて誤りを訂正する誤り訂正手順と
    を具備する誤り検出訂正方法であって
    前記所定時間は、ランダムテレグラフノイズによりデータの値が変動する周期である
    誤り検出訂正方法。
JP2012242975A 2012-11-02 2012-11-02 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法 Active JP5870901B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2012242975A JP5870901B2 (ja) 2012-11-02 2012-11-02 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法
US14/049,248 US9110827B2 (en) 2012-11-02 2013-10-09 Error detection and correction apparatus, mismatch detection apparatus, memory system and error detection and correction method
CN201310513810.2A CN103811075B (zh) 2012-11-02 2013-10-25 错误检测和纠正装置及方法、失配检测装置及存储器***

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2012242975A JP5870901B2 (ja) 2012-11-02 2012-11-02 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法

Publications (2)

Publication Number Publication Date
JP2014093654A JP2014093654A (ja) 2014-05-19
JP5870901B2 true JP5870901B2 (ja) 2016-03-01

Family

ID=50623536

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2012242975A Active JP5870901B2 (ja) 2012-11-02 2012-11-02 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法

Country Status (3)

Country Link
US (1) US9110827B2 (ja)
JP (1) JP5870901B2 (ja)
CN (1) CN103811075B (ja)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489243B2 (en) 2017-03-13 2019-11-26 Toshiba Memory Corporation Memory controller and memory system
US10666467B2 (en) 2017-11-17 2020-05-26 Samsung Electronics Co., Ltd. Memory device and operation method thereof
US11074171B2 (en) 2017-11-02 2021-07-27 Samsung Electronics Co., Ltd. Data storage device for recovering read errors

Families Citing this family (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR102089532B1 (ko) * 2013-02-06 2020-03-16 삼성전자주식회사 메모리 컨트롤러, 메모리 시스템 및 메모리 시스템의 동작 방법
US9489252B1 (en) 2013-11-08 2016-11-08 Amazon Technologies, Inc. File recovery using diverse erasure encoded fragments
US9753807B1 (en) 2014-06-17 2017-09-05 Amazon Technologies, Inc. Generation and verification of erasure encoded fragments
KR102318561B1 (ko) 2014-08-19 2021-11-01 삼성전자주식회사 스토리지 장치, 스토리지 장치의 동작 방법
US9489254B1 (en) * 2014-09-29 2016-11-08 Amazon Technologies, Inc. Verification of erasure encoded fragments
US9552254B1 (en) 2014-09-29 2017-01-24 Amazon Technologies, Inc. Verification of erasure encoded fragments
GB201710839D0 (en) * 2017-07-05 2017-08-16 Irdeto Bv Data protection
KR102370278B1 (ko) * 2017-11-30 2022-03-07 에스케이하이닉스 주식회사 메모리 컨트롤러, 이를 포함하는 메모리 시스템, 및 그의 동작방법
JP7213130B2 (ja) * 2019-04-24 2023-01-26 株式会社メガチップス 不揮発性記憶装置、データ読み出し方法、および、プログラム
CN113656218A (zh) * 2021-07-23 2021-11-16 深圳市宏旺微电子有限公司 闪存数据重读方法、装置及计算机可读存储介质
US11861175B2 (en) * 2022-03-10 2024-01-02 International Business Machines Corporation Latency in data storage systems
US11761057B1 (en) * 2022-03-28 2023-09-19 Lyten, Inc. Method for refining one or more critical minerals

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3708619B2 (ja) * 1996-03-25 2005-10-19 株式会社東芝 消失フラグを用いたエラー訂正システム
JP4824936B2 (ja) * 2005-03-10 2011-11-30 株式会社日立製作所 ダイナミック・ランダム・アクセス・メモリ装置の検査方法
KR101466270B1 (ko) * 2008-09-19 2014-11-28 삼성전자주식회사 비휘발성 메모리 시스템 및 그것의 데이터 처리 방법
JP2010108029A (ja) * 2008-10-28 2010-05-13 Panasonic Corp 不揮発性メモリコントローラ、不揮発性記憶装置、及び不揮発性記憶システム
CN102141944B (zh) * 2010-02-02 2012-12-12 慧荣科技股份有限公司 用来减少无法更正的错误的方法以及记忆装置及其控制器
JP2012089085A (ja) * 2010-10-22 2012-05-10 Toshiba Corp 半導体メモリ装置および半導体メモリシステム

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US10489243B2 (en) 2017-03-13 2019-11-26 Toshiba Memory Corporation Memory controller and memory system
US11074171B2 (en) 2017-11-02 2021-07-27 Samsung Electronics Co., Ltd. Data storage device for recovering read errors
US10666467B2 (en) 2017-11-17 2020-05-26 Samsung Electronics Co., Ltd. Memory device and operation method thereof

Also Published As

Publication number Publication date
CN103811075B (zh) 2018-02-02
US20140129904A1 (en) 2014-05-08
JP2014093654A (ja) 2014-05-19
US9110827B2 (en) 2015-08-18
CN103811075A (zh) 2014-05-21

Similar Documents

Publication Publication Date Title
JP5870901B2 (ja) 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法
JP6686892B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
US8887032B1 (en) Defect detection and correction via monitoring of syndromes and bit flips in decoder
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
JP5043562B2 (ja) エラー訂正回路、その方法及び前記回路を備える半導体メモリ装置
JP6540703B2 (ja) メモリコントローラおよびメモリコントローラの制御方法
JP6339137B2 (ja) メモリデバイス、および記憶されているビットシーケンスを訂正するための方法
US10333558B2 (en) Decoding device and decoding method
CN105788648B (zh) 基于异构混合内存的nvm坏块识别处理及纠错方法和***
US8225175B2 (en) Two-plane error correction method for a memory device and the memory device thereof
US8332727B2 (en) Error correction circuit, flash memory system including the error correction circuit, and operating method of the error correction circuit
KR100905712B1 (ko) 에러 정정 코드를 이용한 병렬 비트 테스트 장치
US8738989B2 (en) Method and apparatus for detecting free page and a method and apparatus for decoding error correction code using the method and apparatus for detecting free page
KR101527690B1 (ko) 낸드 플래시 메모리 테스트 인터페이스 장치 및 그 운용방법
US10025652B2 (en) Error location pointers for non volatile memory
US20170322842A1 (en) Memory controller, memory system, and method of controlling memory controller
US11424765B2 (en) ECC decoders having low latency
JP2008305451A (ja) フラッシュメモリの状態検出方法
JP2020150515A (ja) 誤り訂正回路及びメモリシステム
JP2015106872A (ja) 誤り訂正装置、誤り訂正方法およびプログラム
JP2019028952A (ja) 記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20150121

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20150721

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150728

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20150901

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20150929

A521 Written amendment

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20151030

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: 20151215

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20151228

R151 Written notification of patent or utility model registration

Ref document number: 5870901

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250