JPWO2016088448A1 - メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法 - Google Patents

メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法 Download PDF

Info

Publication number
JPWO2016088448A1
JPWO2016088448A1 JP2016562333A JP2016562333A JPWO2016088448A1 JP WO2016088448 A1 JPWO2016088448 A1 JP WO2016088448A1 JP 2016562333 A JP2016562333 A JP 2016562333A JP 2016562333 A JP2016562333 A JP 2016562333A JP WO2016088448 A1 JPWO2016088448 A1 JP WO2016088448A1
Authority
JP
Japan
Prior art keywords
read
data
address
elapsed time
unit
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.)
Granted
Application number
JP2016562333A
Other languages
English (en)
Other versions
JP6497395B2 (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
Publication of JPWO2016088448A1 publication Critical patent/JPWO2016088448A1/ja
Application granted granted Critical
Publication of JP6497395B2 publication Critical patent/JP6497395B2/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/1048Adding 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 arrangements adapted for a specific error detection or correction feature
    • 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
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C13/00Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00
    • G11C13/0002Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements
    • G11C13/0021Auxiliary circuits
    • G11C13/0035Evaluating degradation, retention or wearout, e.g. by counting writing cycles
    • 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/6325Error control coding in combination with demodulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/10Address translation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2212/00Indexing scheme relating to accessing, addressing or allocation within memory systems or architectures
    • G06F2212/65Details of virtual memory and virtual address translation
    • 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
    • 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

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Quality & Reliability (AREA)
  • Probability & Statistics with Applications (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)

Abstract

不揮発性メモリにおいてメモリセルの劣化を抑制する。メモリコントローラは、計時部、経過時間判定部およびリード部を備える。計時部が、データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する。経過時間判定部が、アドレスからのデータの読出しが指示されると経過時間が一定時間を超えているか否かを判定する。経過時間が前記一定時間を超えていないと判定された場合には、リード制御部は、アドレスからのデータの読出しを休止する。

Description

本技術は、メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法に関する。詳しくは、エラーを検出するメモリコントローラ、メモリシステム、および、メモリコントローラの制御方法に関する。
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ(NVM:Non-Volatile memory)が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistive RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
これらの不揮発性メモリにおいては、メモリセル内の電流の揺らぎにより、メモリセルの特性値(抵抗値など)が、一定期間に亘って不連続に変化する現象が生じることが知られている。この現象は、ランダムテレグラフノイズと呼ばれ、書き込んだデータにエラーが生じる原因となりうる。このエラーを誤り検出訂正符号(ECC:Error detection and Correction Code)によって検出して訂正するメモリコントローラが提案されている(例えば、特許文献1参照。)。このメモリコントローラは、訂正に失敗した際に、メモリセルの特性値と比較するための閾値を変更して再度リードデータを読み出し、誤り検出および誤り訂正を行っている。
特開平6−110793号公報
上述のメモリコントローラでは、ランダムテレグラフノイズによる特性値の変動が比較的小さければ、閾値を変更することにより、エラーが解消して正しいデータが読み出される。しかしながら、ランダムテレグラフノイズにより特性値が大きく変動した場合には、閾値を変えてもエラーが解消しないおそれがある。この結果、誤り訂正の失敗と再度のデータの読出しとが繰り返されて、その読出しの繰り返しによりメモリセルの劣化が進行してしまうという問題がある。
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリにおいてメモリセルの劣化を抑制することを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する計時部と、上記アドレスからの上記データの読出しが指示されると上記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、上記経過時間が上記一定時間を超えていないと判定された場合には上記アドレスからの上記データの読出しを休止するリード制御部とを具備するメモリコントローラ、および、その制御方法である。これにより、経過時間が一定時間を超えていないと判定された場合にアドレスからのデータの読出しが休止されるという作用をもたらす。
また、この第1の側面において、上記アドレスおよび上記経過時間を保持する保持部をさらに具備し、上記計時部は、上記経過時間を計時するとともに上記アドレスおよび上記経過時間を上記保持部に保持させ、上記経過時間判定部は、上記保持部から上記アドレスおよび上記経過時間を読み出してもよい。これにより、アドレスおよび経過時間が保持部に保持されて読み出されるという作用をもたらす。
また、この第1の側面において、上記計時部は、上記アドレスに上記データが書き込まれたタイミングを上記所定のタイミングとして上記経過時間を計時してもよい。これにより、アドレスにデータが書き込まれたタイミングからの経過時間が計時されるという作用をもたらす。
また、この第1の側面において、上記アドレスから読み出された上記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、上記計時部は、上記経過時間が上記一定時間を超えると上記アドレスからの上記データの読出しを指示し、上記リード制御部は、上記経過時間が上記一定時間を超えていると判定された場合または上記計時部により上記データの読出しが指示された場合には上記アドレスから上記データを読み出し、上記計時部は、上記アドレスに上記データが書き込まれたタイミングまたは上記誤りの訂正に失敗したタイミングを上記所定のタイミングとして上記経過時間を計時してもよい。これにより、経過時間が一定時間を超えるとアドレスからのデータの読出しが指示されるという作用をもたらす。
また、この第1の側面において、上記アドレスから読み出された上記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、上記計時部は、上記誤りの訂正に失敗した上記タイミングを上記所定のタイミングとして上記経過時間を計時してもよい。これにより、誤りの訂正に失敗したタイミングからの経過時間が計時されるという作用をもたらす。
また、この第1の側面において、上記計時部は、上記経過時間が上記一定時間を超えると上記アドレスからの上記データの読出しを指示し、上記リード制御部は、上記経過時間が上記一定時間を超えていると判定された場合または上記計時部により上記データの読出しが指示された場合には上記アドレスから上記データを読み出してもよい。これにより、経過時間が一定時間を超えるとアドレスからのデータの読出しが指示されるという作用をもたらす。
また、この第1の側面において、上記経過時間が上記一定時間を超えていないと判定された場合にはリードエラーを出力するリードエラー出力部をさらに具備してもよい。これにより、上記経過時間が一定時間を超えていないと判定された場合にリードエラーが出力されるという作用をもたらす。
また、本技術の第2の側面は、アドレスが割り当てられたメモリセルと、データが書き込まれた上記アドレスについて所定のタイミングから経過した経過時間を計時する計時部と、上記アドレスからの上記データの読出しが指示されると上記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、上記経過時間が上記一定時間を超えていないと判定された場合には上記アドレスからの上記データの読出しを休止するリード制御部とを具備するメモリシステムである。これにより、経過時間が一定時間を超えていないと判定された場合にアドレスからのデータの読出しが休止されるという作用をもたらす。
本技術によれば、不揮発性メモリにおいてメモリセルの劣化を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
第1の実施の形態におけるメモリシステムの一構成例を示す全体図である。 第1の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。 第1の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第1の実施の形態におけるリード制御部の一構成例を示すブロック図である。 第1の実施の形態における読出し休止リストの一例を示す図である。 第1の実施の形態における不揮発性メモリの一構成例を示すブロック図である。 第1の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。 第1の実施の形態における時間の経過に伴うメモリセルの抵抗値および劣化の度合いの変化の一例を示すグラフである。 第1の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第1の実施の形態におけるライト処理の一例を示すフローチャートである。 第1の実施の形態におけるリード処理の一例を示すフローチャートである。 第1の実施の形態における計時処理の一例を示すフローチャートである。 第1の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。 第2の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第2の実施の形態における計時処理の一例を示すフローチャートである。 第2の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。 第2の実施の形態におけるリード処理の一例を示すフローチャートである。 第2の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。 第3の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第3の実施の形態におけるライト処理の一例を示すフローチャートである。 第3の実施の形態におけるリード処理の一例を示すフローチャートである。 第3の実施の形態における時間の経過に伴うメモリセルの抵抗値および劣化の度合いの変化の一例を示すグラフである。 第3の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。 第4の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。 第4の実施の形態におけるリード処理の一例を示すフローチャートである。 第4の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(書込みから一定時間経過後にデータを読み出す例)
2.第2の実施の形態(書込みから一定時間経過後にコマンドを発行してデータを読み出す例)
3.第3の実施の形態(リードエラー発生から一定時間経過後にデータを読み出す例)
4.第4の実施の形態(リードエラー発生から一定時間経過後にコマンドを発行してデータを読み出す例)
<1.第1の実施の形態>
[メモリシステムの構成例]
図1は、本技術の実施の形態におけるメモリシステムの一構成例を示す全体図である。このメモリシステムは、ホストコンピュータ100およびストレージ200を備える。
ホストコンピュータ100は、情報処理システム全体を制御するものである。このホストコンピュータ100は、コマンドおよびデータを生成してストレージ200に信号線109を介して供給する。また、ホストコンピュータ100は、ストレージ200から、読み出されたデータを受け取る。ここで、コマンドは、ストレージ200を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読出しを指示するリードコマンドを含む。
ストレージ200は、メモリコントローラ300および不揮発性メモリ400を備える。このメモリコントローラ300は、不揮発性メモリ400を制御するものである。メモリコントローラ300は、ホストコンピュータ100からライトコマンドおよびデータを受け取った場合には、そのデータからECCを生成する。具体的には、メモリコントローラ300は、符号化対象のデータを、そのデータとパリティとを含む符号語に変換(すなわち、符号化)する。メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化したデータをライトデータとして書き込む。
また、ホストコンピュータ100からリードコマンドを受け取った場合、メモリコントローラ300は、不揮発性メモリ400に信号線309を介してアクセスして符号化されたリードデータを読み出す。そして、メモリコントローラ300は、そのリードデータを、符号化前の元のデータに変換(すなわち、復号)する。また、復号の際にメモリコントローラ300は、ECCに基づいてリードデータにおける誤りの検出および訂正を行う。メモリコントローラ300は、訂正した元のデータをホストコンピュータ100に供給する。
不揮発性メモリ400は、メモリコントローラ300の制御に従って、データを記憶するものである。例えば、ReRAMが不揮発性メモリ400として用いられる。この不揮発性メモリ400は、複数のメモリセルを備え、これらのメモリセルは、複数のブロックに分けられている。ここで、ブロックは、不揮発性メモリ400のアクセス単位であり、セクタとも呼ばれる。ブロックのそれぞれには物理アドレスが割り当てられている。なお、ReRAMの代わりに、フラッシュメモリ、PCRAM、および、MRAMなどを不揮発性メモリ400として用いてもよい。
[メモリコントローラの構成例]
図2は、第1の実施の形態におけるメモリコントローラ300の一構成例を示すブロック図である。このメモリコントローラ300は、ホストインターフェース301、RAM(Random Access Memory)302、CPU(Central Processing Unit)303およびECC処理部304を備える。また、メモリコントローラ300は、ROM(Read Only Memory)305、バス306およびメモリインターフェース307を備える。
ホストインターフェース301は、ホストコンピュータ100との間でデータやコマンドを相互に交換するものである。RAM302は、CPU303が実行する処理において必要となるデータを一時的に保持するものである。CPU303は、メモリコントローラ300全体を制御するものである。ROM305は、CPU303が実行するプログラム等を記憶するものである。バス306は、RAM302、CPU303、ECC処理部304、ROM305、ホストインターフェース301およびメモリインターフェース307が相互にデータを交換するための共通の経路である。メモリインターフェース307は、不揮発性メモリ400との間でデータやコマンドを相互に交換するものである。
ECC処理部304は、データを符号化し、また、リードデータを復号するものである。データの符号化においてECC処理部304は、符号化対象のデータにパリティを付加することにより所定の単位で符号化する。そして、ECC処理部304は、符号化したデータをライトデータとして不揮発性メモリ400にバス306を介して供給する。
また、ECC処理部304は、符号化されたリードデータを元のデータに復号する。この復号において、ECC処理部304は、パリティを使用してリードデータの誤りの有無を検出して訂正する。ECC処理部304は、復号した元のデータをホストコンピュータ100にバス306を介して供給する。
図3は、第1の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。このメモリコントローラ300は、ライト制御部310、リード制御部320、ステータス生成部330、符号化部340、読出し休止リスト保持部350、読出し休止リスト管理部360および誤り検出訂正部370を備える。ライト制御部310は、図2におけるホストインターフェース301、RAM302、CPU303、ROM305、バス306およびメモリインターフェース307などにより実現される。リード制御部320、ステータス生成部330および読出し休止リスト管理部360についても同様である。また、符号化部340および誤り検出訂正部370は、図2におけるECC処理部304により実現される。また、読出し休止リスト保持部350は、図2におけるRAM302などにより実現される。
ライト制御部310は、ライトコマンドに従って不揮発性メモリ400にライトデータを書き込ませるものである。このライト制御部310は、まず、ライトコマンドの指定する論理アドレスを物理アドレスに変換する。
ここで、論理アドレスは、ホストコンピュータ100が定義するアドレス空間において、ホストコンピュータ100がストレージ200にアクセスする際のアクセス単位の領域ごとに割り振られたアドレスである。この論理アドレスは、ページアドレスとも呼ばれる。また、物理アドレスは、前述したように不揮発性メモリ400においてアクセス単位ごとに割り当てられたアドレスである。
また、ライト制御部310は、ホストコンピュータ100と不揮発性メモリ400とのアクセス単位が異なる場合に、ライトコマンドを分割する。ライト制御部310は、アドレスを論物変換し、必要に応じて分割したライトコマンドのそれぞれをライトリクエストとして不揮発性メモリ400に供給する。
符号化部340は、ホストコンピュータ100からデータを符号化対象データとして受け取ると、その符号化対象データを符号語に符号化するものである。符号化において符号化対象データは、例えば、2元のBCH符号に符号化される。符号化部340は、その符号語をライトデータとして不揮発性メモリ400に供給する。
なお、符号化部340は、符号化対象データを2元のBCH符号に符号化しているが、誤り訂正能力を持つ符号であれば、BCH符号以外の符号に符号化してもよい。符号化部340は、例えば、RS(Reed-Solomon)符号や畳込み符号に符号化してもよい。また、符号化部340は、2元より高い次元の符号に符号化してもよい。
読出し休止リスト管理部360は、アドレスにデータが書き込まれたタイミングから経過した経過時間を計時するものである。この読出し休止リスト管理部360は、ライトコマンドにより指定された論理アドレス(ページアドレス)のそれぞれについて、データが書き込まれたタイミングからの経過時間を計時する。そして、読出し休止リスト管理部360は、データが書き込まれたアドレスと、アドレスごとの経過時間とを含むリストを「読出し休止リスト」として、読出し休止リスト保持部350に保持させる。また、経過時間が一定時間を超えると、読出し休止リスト管理部360は、その経過時間に対応する論理アドレスを読出し休止リストにおいて削除する。ここで、一定時間には、データが書き込まれてから、RTNエラーが生じなくなると予想される時間Tr以上の所定の時間Tpが設定される。なお、読出し休止リスト管理部360は、特許請求の範囲に記載の計時部の一例である。また、読出し休止リスト保持部350は、特許請求の範囲に記載の保持部の一例である。
なお、読出し休止リスト管理部360は、論理アドレス(ページアドレス)ごとの経過時間を読出し休止リスト保持部350に保持させているが、物理アドレスごとの経過時間を保持させてもよい。また、読出し休止リスト管理部360は、アドレスごとに経過時間を保持させているが、複数のアドレスからなるグループごとに経過時間を保持させてもよい。例えば、1つの論理アドレスに複数の物理アドレスが対応する場合には、それらの物理アドレスに同一の計時時間が対応付けて保持される。
リード制御部320は、リードコマンドに従って不揮発性メモリ400にリードデータを読み出させるものである。このリード制御部320は、リードコマンドにより指定された論理アドレスが読出し休止リスト保持部350に保持されているか否かを判断する。論理アドレスが休止リストに保持されていない(すなわち、経過時間が一定時間Tpを超える)場合には、リード制御部320は、リードコマンドからリードリクエストを発行して不揮発性メモリ400に供給する。一方、経過時間が一定時間Tp以下である場合には、リード制御部320は、そのアドレスからのデータの読出しを休止する。また、リード制御部320は、経過時間が一定時間Tp以下であるか否かを判定した判定結果をステータス生成部330に通知する。
誤り検出訂正部370は、符号語に対応する受信語をリードデータとして不揮発性メモリ400から受け取り、そのリードデータを復号するものである。この誤り検出訂正部370は、復号においてリードデータの誤り検出および誤り訂正を行い、誤り訂正に成功したか否かを示す復号成否通知をステータス生成部330に供給する。また、誤り検出訂正部370は、復号した元のデータをホストコンピュータ100に供給する。
ステータス生成部330は、ストレージ200の状態を通知するステータス情報を生成するものである。このステータス生成部330は、不揮発性メモリ400からライトエラーを受け取ると、ライトエラーを記載したステータス情報を生成する。また、ステータス生成部330は、誤り検出訂正部370から誤り訂正の失敗を示す復号成否通知を受け取ると、リードエラーを記載したステータス情報を生成する。さらに、ステータス生成部330は、経過時間が一定時間Tp以下である旨の判定結果をリード制御部320から受け取った場合にもリードエラーを記載したステータス情報を生成する。ステータス生成部330は、生成したステータス情報をホストコンピュータ100に供給する。なお、ステータス生成部330は、特許請求の範囲に記載のリードエラー出力部の一例である。
なお、ステータス生成部330は、経過時間が一定時間Tp以下である場合にリードエラーを記載したステータス情報を生成しているが、この構成に限定されない。例えば、ステータス生成部330は、経過時間が一定時間Tp以下である場合にビジーを記載したステータス情報を生成してもよい。
また、ステータス生成部330は、誤り訂正の失敗に応じて生成したリードエラーと、誤り訂正を行わずに生成したリードエラーとを区別せずに出力しているが、これらのリードエラーの種別をステータスに記載して出力してもよい。この場合、例えば、前者のリードエラーはECCエラーとして、後者のリードエラーは非ECCエラーとして出力される。また、ホストコンピュータ100は、非ECCエラーの場合に、リードコマンドの再発行までの時間をECCエラーの場合よりも長くする。
図4は、第1の実施の形態におけるリード制御部320の一構成例を示すブロック図である。このリード制御部320は、経過時間判定部321およびリードリクエスト発行部322を備える。
経過時間判定部321は、データの読出しが指定されたアドレスに対応する経過時間が一定時間Tpを超えているか否かを判定するものである。この経過時間判定部321は、リードコマンドにより指定された論理アドレスが休止リスト保持部350に保持されている(すなわち、経過時間が一定時間Tpを超えている)か否かを判定する。経過時間判定部321は、判定結果をリードリクエスト発行部322およびステータス生成部330に供給する。
リードリクエスト発行部322は、経過時間が一定時間Tpを超えている場合に、リードコマンドの指定する論理アドレスを物理アドレスに変換し、必要に応じて分割してライトリクエストを発行する。一方、経過時間が一定時間Tp以下であれば、リードリクエスト発行部322は、リードリクエストを発行しない。すなわち、リードリクエストの発行が休止される。一定時間Tpを経過していない場合は、RTNエラーが生じるおそれがあり、無駄なリードアクセスによりメモリセルの劣化が進行するおそれがあるためである。なお、リードリクエスト発行部322は、特許請求の範囲に記載のリード部の一例である。
[読出し休止リストの例]
図5は、第1の実施の形態における読出し休止リストの一例を示す図である。この読出し休止リストには、有効フラグ、ページアドレスおよび経過時間を各々が含む所定数のエントリが設けられる。有効フラグは、対応するページアドレスが有効であるか否かを示すフラグである。例えば、ページアドレスが有効な場合には有効フラグに「1」が設定され、無効な場合には有効フラグに「0」が設定される。
また、経過時間は、対応するページアドレスにデータが書き込まれたタイミングから経過した時間である。経過時間の単位は、例えば、一定周波数のクロック信号のサイクル数である。読出し休止リスト管理部360は、ライトコマンドが発行されると、読出し休止リストにおいて、有効フラグが「0」の空いているエントリに、ライトコマンドにより指定されたページアドレスを登録する。この登録されたページアドレスの有効フラグは、「1」に更新される。また、読出し休止リスト管理部360は、登録したページアドレスの経過時間を初期値にリセットし、所定のクロック信号に同期して、その値をインクリメントする。そして、読出し休止リスト管理部360は、経過時間が一定時間Tpを超えると、その経過時間に対応するページアドレスの有効フラグを「0」に更新して、そのアドレスを無効にする。
なお、読出し休止リスト管理部360は、データが書き込まれたタイミングからの経過時間を計時する構成としているが、そのタイミングから一定時間Tpが経過するまでの残り時間を計時してもよい。この場合には、一定時間Tpに対応するサイクル数が残り時間の初期値として設定され、クロック信号に同期して、そのサイクル数がデクリメントされる。
[不揮発性メモリの構成例]
図6は、第1の実施の形態における不揮発性メモリ400の一構成例を示すブロック図である。この不揮発性メモリ400は、データバッファ410、メモリセルアレイ420、ドライバ430、アドレスデコーダ440、バス450、制御インターフェース460、および、メモリ制御部470を備える。
データバッファ410は、メモリ制御部470の制御に従って、ライトデータやリードデータをアクセス単位で保持するものである。メモリセルアレイ420は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、不揮発性の記憶素子が用いられる。具体的には、NAND型やNOR型のフラッシュメモリ、ReRAM、PCRAM、または、MRAMなどが記憶素子として用いられる。
ドライバ430は、アドレスデコーダ440により選択されたメモリセルに対してデータの書込み、または、データの読出しを行うものである。アドレスデコーダ440は、コマンドにより指定されたアドレスを解析して、そのアドレスに対応するメモリセルを選択するものである。バス450は、データバッファ410、メモリセルアレイ420、アドレスデコーダ440、メモリ制御部470および制御インターフェース460が相互にデータを交換するための共通の経路である。制御インターフェース460は、メモリコントローラ300と不揮発性メモリ400とがデータやコマンドを相互に交換するためのインターフェースである。
メモリ制御部470は、ドライバ430およびアドレスデコーダ440を制御して、データの書込み、または、読出しを行わせるものである。メモリ制御部470は、ライトコマンドおよびライトデータを受け取った場合には、そのコマンドの指定するライトアドレスにライトデータを書き込む。書込みの後、メモリ制御部470は、ライトアドレスからデータをベリファイリードデータとして読み出し、そのベリファイリードデータとライトデータとをビット単位で比較するベリファイ処理を行う。ベリファイリードデータおよびライトデータのいずれかのビットが一致しなかった場合にメモリ制御部470は、ベリファイエラーを検出してライトデータの書込みを再度行い、再度のベリファイ処理を行う。そして、一定回数のベリファイ処理によってもベリファイエラーが解消しなかった場合にメモリ制御部470は、ライトエラーをメモリコントローラ300に出力する。
また、メモリ制御部470は、リードコマンドを受け取ると、アドレスデコーダ440およびドライバ430を制御して、指定された物理アドレスのデータをメモリコントローラ300へリードデータとして出力させる。
図7は、第1の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。同図における横軸は、抵抗値Rを示しており、縦軸は、セルの数の相対的な分布を相対値により示している。可変抵抗素子の抵抗状態は、所定の閾値を境に、大きく2つの分布に分かれている。閾値と比較して抵抗値が低い状態は、低抵抗状態(LRS:Low-Resistance State)と呼ばれ、閾値と比較して抵抗値が高い状態は、高抵抗状態(HRS:High-Resistance State)と呼ばれる。
可変抵抗素子の高抵抗状態および低抵抗状態をそれぞれ論理0値または論理1値の何れかに対応付けることにより、可変抵抗素子はメモリセルとして機能する。論理0値または論理1値の何れに対応付けるかは任意である。例えば、高抵抗状態が論理0値に対応付けられ、低抵抗状態が論理1値に対応付けられる。また、リードアクセスのたびにメモリセルの劣化が進行し、その抵抗値が若干変化する。例えば、劣化が進行するほど、抵抗値が高くなる。このようにアクセスの繰り返しにより、メモリセルが劣化する現象はリードディスターブと呼ばれる。
図8は、第1の実施の形態における時間の経過に伴うメモリセルの抵抗値および劣化の度合いの変化の一例を示すグラフである。同図におけるaは、時間の経過に伴うメモリセルの抵抗値の変化の一例を示すグラフである。同図のaにおける縦軸はメモリセルの抵抗値を示し、横軸は時間を示す。
例えば、タイミングT1において、「1」の値がメモリセルに書き込まれた場合を考える。LRSに「1」を割り当てる構成では、書込みにより、メモリセルの抵抗値は、閾値より低い値になる。しかし、書込みから、一定時間が経過するまでの間においては、メモリセル内の電流の揺らぎによって、その抵抗値が不規則に変動する。この現象は、ランダムテレグラフノイズと呼ばれる。このランダムテレグラフノイズが生じている期間においては、抵抗値が不連続に変化するため、リードデータの値を正常に読み出すことができないおそれがある。
ここで、ランダムテレグラフノイズは、一般に所定時間Trが経過すると解消し、メモリセルの抵抗値は、一定の期待値となる。その時間Tr以上の時間がTpに設定される。タイミングT1からの経過時間がTpを超える前にリードコマンドを受け取ると、メモリコントローラ300は、メモリセルへのリードアクセスを行わずにリードエラーのステータスをホストコンピュータ100に返す。
一方、経過時間がTpを超えたタイミングT5においてリードコマンドを受け取ると、メモリコントローラ300は、メモリセルからリードデータを読み出して復号を行う。タイミングT5では、ランダムテレグラフノイズが消失しているため、エラーが検出されない。
図8におけるbは、第1の実施の形態における時間の経過に伴うメモリセルの劣化の度合いの変化の一例を示すグラフである。同図のbにおける縦軸はメモリセルの劣化の度合いを示し、横軸は時間を示す。Tpを経過したタイミングT5においてリードデータが読み出されると、劣化が進行して、劣化の度合いが高くなる。タイミングT1からT5までの間は、リードアクセスが行われていないため、劣化は進行していない。
図8におけるcは、比較例における時間の経過に伴うメモリセルの劣化の度合いの変化の一例を示すグラフである。同図のcにおける縦軸はメモリセルの劣化の度合いを示し、横軸は時間を示す。この比較例では、データが書き込まれたタイミングT1からの経過時間がTpを超える前であっても、メモリコントローラ300がリードデータを読み出す構成であるものとする。この比較例では、タイミングT1からTpが経過するまでの間のタイミングT2、T3およびT4においてリードデータが再度読み出される。
これらのタイミングT2、T3およびT4では、ランダムテレグラフノイズが解消していないため、メモリセルの抵抗値は期待値とならず、閾値を超えてエラーが検出されることが多い。このエラーにより、誤り訂正に失敗するおそれがある。最終的には、メモリコントローラ300は、タイミングT5においてデータを正常に読み出すことができるが、それまでにエラーの解消しない不要なリードアクセスが繰り返されるおそれがある。これらの不要なリードアクセスにより、メモリセルの劣化の度合いは、同図のbと比較して高くなってしまう。
図8におけるcに例示したように、ランダムテレグラフノイズが生じている期間内であってもリードアクセスを行う構成では、正常なデータを最終的に読み出すまでに必要以上にリードアクセスが繰り返されてしまう。この結果、リードディスターブによりメモリセルの寿命が短くなってしまう。これに対して、同図におけるbに例示したように、ランダムテレグラフノイズが生じている期間内はリードアクセスを休止するメモリコントローラ300では、リードディスターブによるメモリセルの劣化の進行を抑制することができる。これにより、メモリセルの寿命を長くすることができる。
[メモリコントローラの動作例]
図9は、第1の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。この動作は、例えば、メモリコントローラ300に電源が投入されたときや、不揮発性メモリ400の初期化が指示されたときなどに開始する。
メモリコントローラ300は、不揮発性メモリ400を初期化し(ステップS901)、ホストコンピュータ100からのコマンドをデコードする(ステップS902)。メモリコントローラ300は、コマンドがライトコマンドであるか否かを判断する(ステップS903)。コマンドがライトコマンドである場合(ステップS903:Yes)、メモリコントローラ300は、データを書き込むライト処理を行う(ステップS910)。一方、コマンドがリードコマンドである場合(ステップS903:No)、メモリコントローラ300は、データを読み出すリード処理を行う(ステップS920)。ステップS910またはS920の後、メモリコントローラ300は、アドレス毎の経過時間を計時する計時処理を行い(ステップS940)、ステップS902に戻る。
図10は、第1の実施の形態におけるライト処理の一例を示すフローチャートである。メモリコントローラ300は、データを符号化してライトデータを生成し(ステップS911)、そのライトデータを不揮発性メモリ400に書き込ませる(ステップS912)。メモリコントローラ300は、不揮発性メモリ400が書込み(すなわち、ベリファイ)に成功したか否かを判断する(ステップS913)。書込みに成功した場合に(ステップS913:Yes)、メモリコントローラ300は、ライトアドレスを読出し休止リストに登録する(ステップS914)。また、メモリコントローラ300は、書込み成功のステータスをホストコンピュータ100に出力する(ステップS915)。
一方、書込みに失敗した場合に(ステップS913:No)、メモリコントローラ300は、ライトエラーのステータスをホストコンピュータ100に出力する(ステップS916)。ステップS915またはS916の後、メモリコントローラ300は、ライト処理を終了する。
図11は、第1の実施の形態におけるリード処理の一例を示すフローチャートである。メモリコントローラ300は、リードアドレスが読出し休止リストにあるか否かを判断する(ステップS921)。リードアドレスが読出し休止リストにない場合に(ステップS921:No)、メモリコントローラ300は、リードリクエストを発行して不揮発性メモリ400に供給する(ステップS922)。そして、メモリコントローラ300は、リードデータを不揮発性メモリ400から読み出して復号し(ステップS923)、復号に成功したか否かを判断する(ステップS924)。復号に成功した場合に(ステップS924:Yes)、メモリコントローラ300は、復号した元のデータをホストコンピュータ100に出力する(ステップS925)。
リードアドレスが読出し休止リストにある場合(ステップS921:Yes)、または、復号に失敗した場合に(ステップS924:No)、メモリコントローラ300は、リードエラーのステータスをホストコンピュータ100に出力する(ステップS927)。ステップS925またはS927の後、メモリコントローラ300は、リード処理を終了する。
図12は、第1の実施の形態における計時処理の一例を示すフローチャートである。メモリコントローラ300は、読出し休止リスト内の各アドレスの経過時間をインクリメントする(ステップS941)。そして、メモリコントローラ300は、経過時間がTpを超えたアドレスが読出し休止リスト内にあるか否かを判断する(ステップS942)。経過時間がTpを超えるアドレスがあれば(ステップS942:Yes)、メモリコントローラ300は、そのアドレスの有効フラグを無効にして読出し休止リストから削除する(ステップS943)。経過時間がTpを超えるアドレスがない場合(ステップS942:No)、または、ステップS943の後、メモリコントローラ300は、計時処理を終了する。
図13は、第1の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。アドレスAを指定したライトコマンドおよびデータがホストコンピュータ100からメモリコントローラ300に供給されると、メモリコントローラ300は、そのデータを符号化する(ステップS911)。そして、メモリコントローラ300は、ライトリクエストを発行してライトデータとともに不揮発性メモリ400に供給する。また、メモリコントローラ300は、そのアドレスAを読出し休止リストに登録する(ステップS914)。
データを書き込んでから一定期間内に、アドレスAを指定したリードコマンドがホストコンピュータ100からメモリコントローラ300に供給されると、メモリコントローラ300は、リードアクセスを行わずにリードエラーを返す。
そして、一定期間が経過すると、メモリコントローラ300は、アドレスAを読出し休止リストから削除する(ステップS943)。その後にアドレスAを指定したリードコマンドがホストコンピュータ100からメモリコントローラ300に供給されると、メモリコントローラ300は、リードリクエストを発行してリードデータを不揮発性メモリ400から読み出す。メモリコントローラ300は、そのリードデータを復号し(ステップS923)、復号に成功すると復号したデータをホストコンピュータ100に出力する。
このように、本技術の第1の実施の形態によれば、メモリコントローラ300は、データの読出しが指示された際に、書込みから一定時間以内であれば、リードアクセスを休止するため、エラーが生じうる不要なリードアクセスを抑制することができる。これにより、不要なリードアクセスによってメモリセルの劣化が進行することを抑制することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、データの読出しが指示された際に、ランダムテレグラフノイズが生じると予想される一定時間が経過している場合に限り、リードアクセスを行っていた。しかし、ランダムテレグラフノイズが生じる時間は一定であるとは限らず、一定時間を経過してもエラーが解消しないこともありうる。このため、メモリコントローラ300は、経過時間が一定時間を超えると、リードコマンドが発行されていなくともリードアクセスを行って誤り訂正を行ってもよい。この誤り訂正の成否により、メモリコントローラ300は、一定時間経過時にエラーが解消しているか否かを判断することができる。この第2の実施の形態のメモリコントローラ300は、経過時間が一定時間を超えると、リードコマンドが発行されていなくともリードアクセスを行う点において第1の実施の形態と異なる。
図14は、第2の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。第2の実施の形態のメモリコントローラ300は、リード制御部320の代わりにリード制御部325を備える点において第1の実施の形態と異なる。また、第2の実施の形態のメモリコントローラ300は、読出し休止リスト管理部360および誤り検出訂正部370の代わりに読出し休止リスト管理部361および誤り検出訂正部371を備える点において第1の実施の形態と異なる。
読出し休止リスト管理部361は、対応する経過時間がTpを超えるアドレスがあった場合に、そのアドレスを読出し休止リストから削除し、そのアドレスを指定したリードコマンドを発行してリード制御部325に供給する。また、読出し休止リスト管理部361は、アドレスを削除した際に、復号したデータをホストコンピュータ100に出力しないことを誤り検出訂正部371に指示する。
リード制御部325は、読出し休止リスト管理部361からリードコマンドを受け取ると、リードリクエストを発行して不揮発性メモリ400に供給する。
誤り検出訂正部371は、読出し休止リスト管理部361から指示された場合には、復号したデータをホストコンピュータ100には出力せずに、復号成否の通知のみを行う。
図15は、第2の実施の形態における計時処理の一例を示すフローチャートである。第2の実施の形態の計時処理は、ステップS944をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、読出し休止リストからアドレスを削除した後(ステップS943)、そのアドレスを指定したリードコマンドを発行する(ステップS944)。経過時間がTpを超えるアドレスがない場合(ステップS942:No)、または、ステップS944の後、メモリコントローラ300は、計時処理を終了する。
図16は、第2の実施の形態におけるメモリコントローラ300の動作の一例を示すフローチャートである。第2の実施の形態のメモリコントローラ300の動作は、ステップS904をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、計時処理の後(ステップS940)、計時処理でリードコマンドを発行したか否かを判断する(ステップS904)。リードコマンドを発行した場合に(ステップS904:Yes)、メモリコントローラ300は、リード処理を実行する(ステップS920)。一方、リードコマンドを発行していない場合に(ステップS904:No)、メモリコントローラ300は、ステップS902に戻る。
図17は、第2の実施の形態におけるリード処理の一例を示すフローチャートである。第2の実施の形態のリード処理は、ステップS931乃至S935をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、リードコマンドがメモリコントローラ300自身が発行したコマンドであるか否かを判断する(ステップS931)。自身で発行したコマンドでない場合に(ステップS931:No)、メモリコントローラ300は、ステップS921乃至S925およびステップS927を実行する。
一方、自身で発行したコマンドである場合に(ステップS931:Yes)、メモリコントローラ300は、リードリクエストを発行し(ステップS932)、リードデータを読み出して復号する(ステップS933)。そして、メモリコントローラ300は、復号に成功したか否かを判断する(ステップS934)。復号に失敗した場合に(ステップS934:No)、メモリコントローラ300は、リードアドレスを読出し休止リストに登録する(ステップS935)。復号に成功した場合(ステップS934:Yes)、または、ステップS935の後、メモリコントローラ300は、リード処理を終了する。
図18は、第2の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。メモリコントローラ300は、一定期間経過後にアドレスAを読出し休止リストから削除すると(ステップS943)、自らリードコマンドを発行する(ステップS944。メモリコントローラ300は、リードリクエストを発行してリードデータを不揮発性メモリ400から読み出す。そして、メモリコントローラ300は、そのリードデータを復号し(ステップS933)、復号に失敗すると、そのアドレスを読出し休止リストに再度登録する(ステップS935)。
このように、本技術の第2の実施の形態によれば、メモリコントローラ300は、書込みからの経過時間が一定時間を超えると、リードデータを読み出して誤り訂正を行うため、一定時間経過後にエラーが解消しているか否かを判断することができる。
<3.第3の実施の形態>
上述の第1の実施の形態では、メモリコントローラ300は、データが書き込まれたタイミングで計時を開始していた。しかし、符号語においてランダムテレグラフノイズにより生じるエラーの個数は一定ではなく、誤り訂正に失敗しない程度の数のエラーしか生じない場合もある。この場合には、リードアクセスを休止する必要性に乏しい。このため、メモリコントローラ300は、誤り訂正に成功した時点では計時を開始せず、誤り訂正に失敗してリードエラーが生じたタイミングで計時を開始してもよい。これにより、誤り訂正に失敗しない程度の数のエラーしか生じない場合には、リードアクセスが休止されないため、アクセス効率を向上させることができる。この第3の実施の形態のメモリコントローラ300は、リードエラーが生じたタイミングで計時を開始する点において第1の実施の形態と異なる。
図19は、第3の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。第3の実施の形態のメモリコントローラ300は、読出し休止リスト管理部360の代わりに読出し休止リスト管理部362を備える点において第1の実施の形態と異なる。
読出し休止リスト管理部362は、リードデータの誤り訂正に失敗した場合に、リードコマンドにより指定されたアドレスを読出し休止リストに登録する点において第1の実施の形態と異なる。これにより、リードエラーが生じたタイミングで計時が開始される。
なお、読出し休止リスト管理部362は、誤り訂正に失敗したタイミングで計時を開始しているが、誤り訂正の成否に関わらず、誤りを検出したタイミングで計時を開始してもよい。ただし、誤り訂正に成功しても計時を開始する構成では、リードアクセスを一定時間に亘って休止する制御を行う頻度が高くなり、アクセス効率が低下するおそれがある。このため、メモリコントローラ300は、誤り訂正に失敗したタイミングで計時を開始するのが望ましい。
図20は、第3の実施の形態におけるライト処理の一例を示すフローチャートである。第3の実施の形態のライト処理は、ライトアドレスの読出し休止リストへの登録(ステップS915)を実行しない点において第1の実施の形態と異なる。
図21は、第3の実施の形態におけるリード処理の一例を示すフローチャートである。第3の実施の形態のリード処理は、ステップS926をさらに実行する点において第1の実施の形態と異なる。
メモリコントローラ300は、復号に失敗すると(ステップS924:No)、リードアドレスを読出し休止リストに登録する(ステップS926)。また、リードアドレスが読出し休止リストにない場合(ステップS921:No)、または、ステップS926の後、メモリコントローラ300は、リードエラーを出力する(ステップS927)。
図22は、第3の実施の形態における時間の経過に伴うメモリセルの抵抗値および劣化の度合いの変化の一例を示すグラフである。同図におけるaは、時間の経過に伴うメモリセルの抵抗値の変化の一例を示すグラフである。同図のaにおける縦軸はメモリセルの抵抗値を示し、横軸は時間を示す。
書込みが行われたタイミングT1の後のタイミングT2において、ランダムテレグラフノイズによりリードエラーが生じたものとする。この場合、メモリコントローラ300は、タイミングT2からの経過時間を計時する。この経過時間がTpを超える前にリードコマンドを受け取ると、メモリコントローラ300は、メモリセルへのリードアクセスを行わずにリードエラーのステータスをホストコンピュータ100に返す。
一方、経過時間がTpを超えたタイミングT5においてリードコマンドを受け取ると、メモリコントローラ300は、メモリセルからリードデータを読み出して復号を行う。タイミングT5では、ランダムテレグラフノイズが消失しているため、エラーが検出されない。
図22におけるbは、第1の実施の形態における時間の経過に伴うメモリセルの劣化の度合いの変化の一例を示すグラフである。同図のbにおける縦軸はメモリセルの劣化の度合いを示し、横軸は時間を示す。タイミングT2およびT5のそれぞれにおいてリードアクセスが行われたため、メモリセルの劣化の度合いが高くなっている。
図23は、第3の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。
メモリコントローラ300は、アドレスAを指定したリードコマンドに応じてリードコマンドを発行し、リードデータを読み出す。そして、メモリコントローラ300は、そのリードデータを復号し(ステップS923)、復号に失敗すると、そのリードアドレスを読出し休止リストに登録する(ステップS926)。また、メモリコントローラ300は、リードエラーを出力する。
このように、本技術の第3の実施の形態によれば、メモリコントローラ300は、誤り訂正に失敗したタイミングで計時を開始するため、エラー数が少なければリードアクセスが休止されず、アクセス効率が向上する。
<4.第4の実施の形態>
上述の第3の実施の形態では、メモリコントローラ300は、データの読出しが指示された際に、書込みから一定時間が経過している場合に限り、リードアクセスを行っていた。しかし、第3の実施の形態においても、第2の実施の形態と同様に一定時間経過後にリードコマンドが発行されていなくともリードアクセスを行ってもよい。この第4の実施の形態のメモリコントローラ300は、経過時間が一定時間を超えると、リードコマンドが発行されていなくともリードアクセスを行う点において第3の実施の形態と異なる。
図24は、第4の実施の形態におけるメモリコントローラ300の機能構成例を示すブロック図である。第4の実施の形態のメモリコントローラ300は、読出し休止リスト管理部360の代わりに読出し休止リスト管理部363を備える点において第3の実施の形態と異なる。
読出し休止リスト管理部363は、リードデータの誤り訂正に失敗した場合に、リードコマンドにより指定されたアドレスを読出し休止リストに登録する点において第3の実施の形態の読出し休止リスト管理部362と異なる。
図25は、第4の実施の形態におけるリード処理の一例を示すフローチャートである。第4の実施の形態のリード処理は、ステップS931乃至S935をさらに実行する点において第3の実施の形態と異なる。
図26は、第4の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。メモリコントローラ300は、一定期間経過後にアドレスAを読出し休止リストから削除すると(ステップS943)、自らリードコマンドを発行する(ステップS944。メモリコントローラ300は、リードリクエストを発行してリードデータを不揮発性メモリ400から読み出す。そして、メモリコントローラ300は、そのリードデータを復号し(ステップS933)、復号に失敗すると、そのアドレスを読出し休止リストに再度登録する(ステップS935)。
このように、本技術の第4の実施の形態によれば、メモリコントローラ300は、誤り訂正失敗からの経過時間が一定時間を超えると、リードデータを読み出して誤り訂正を行うため、一定時間経過後にエラーが解消しているか否かを判断することができる。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、CD(Compact Disc)、MD(MiniDisc)、DVD(Digital Versatile Disc)、メモリカード、ブルーレイディスク(Blu-ray(登録商標)Disc)等を用いることができる。
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
なお、本技術は以下のような構成もとることができる。
(1)データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する計時部と、
前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、
前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御部と
を具備するメモリコントローラ。
(2)前記アドレスおよび前記経過時間を保持する保持部をさらに具備し、
前記計時部は、前記経過時間を計時するとともに前記アドレスおよび前記経過時間を前記保持部に保持させ、
前記経過時間判定部は、前記保持部から前記アドレスおよび前記経過時間を読み出す
前記(1)記載のメモリコントローラ。
(3)前記計時部は、前記アドレスに前記データが書き込まれたタイミングを前記所定のタイミングとして前記経過時間を計時する
前記(1)または(2)記載のメモリコントローラ。
(4)前記アドレスから読み出された前記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、
前記計時部は、前記経過時間が前記一定時間を超えると前記アドレスからの前記データの読出しを指示し、
前記リード制御部は、前記経過時間が前記一定時間を超えていると判定された場合または前記計時部により前記データの読出しが指示された場合には前記アドレスから前記データを読み出し、
前記計時部は、前記アドレスに前記データが書き込まれたタイミングまたは前記誤りの訂正に失敗したタイミングを前記所定のタイミングとして前記経過時間を計時する
前記(3)記載のメモリコントローラ。
(5)前記アドレスから読み出された前記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、
前記計時部は、前記誤りの訂正に失敗したタイミングを前記所定のタイミングとして前記経過時間を計時する
前記(1)記載のメモリコントローラ。
(6)前記計時部は、前記経過時間が前記一定時間を超えると前記アドレスからの前記データの読出しを指示し、
前記リード制御部は、前記経過時間が前記一定時間を超えていると判定された場合または前記計時部により前記データの読出しが指示された場合には前記アドレスから前記データを読み出す
前記(5)記載のメモリコントローラ。
(7)前記経過時間が前記一定時間を超えていないと判定された場合にはリードエラーを出力するリードエラー出力部をさらに具備する
前記(1)から(6)のいずれかに記載のメモリコントローラ。
(8)アドレスが割り当てられたメモリセルと、
データが書き込まれた前記アドレスについて所定のタイミングから経過した経過時間を計時する計時部と、
前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、
前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御部と
を具備するメモリシステム。
(9)計時部が、データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する計時手順と、
経過時間判定部が、前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定手順と、
前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御手順と
を具備するメモリコントローラの制御方法。
100 ホストコンピュータ
200 ストレージ
300 メモリコントローラ
301 ホストインターフェース
302 RAM
303 CPU
304 ECC処理部
305 ROM
306、450 バス
307 メモリインターフェース
310 ライト制御部
320、325 リード制御部
321 経過時間判定部
322 リードリクエスト発行部
330 ステータス生成部
340 符号化部
350 読出し休止リスト保持部
360、361、362、363 読出し休止リスト管理部
370、371 誤り検出訂正部
400 不揮発性メモリ
410 データバッファ
420 メモリセルアレイ
430 ドライバ
440 アドレスデコーダ
460 制御インターフェース
470 メモリ制御部

Claims (9)

  1. データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する計時部と、
    前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、
    前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御部と
    を具備するメモリコントローラ。
  2. 前記アドレスおよび前記経過時間を保持する保持部をさらに具備し、
    前記計時部は、前記経過時間を計時するとともに前記アドレスおよび前記経過時間を前記保持部に保持させ、
    前記経過時間判定部は、前記保持部から前記アドレスおよび前記経過時間を読み出す
    請求項1記載のメモリコントローラ。
  3. 前記計時部は、前記アドレスに前記データが書き込まれたタイミングを前記所定のタイミングとして前記経過時間を計時する
    請求項1記載のメモリコントローラ。
  4. 前記アドレスから読み出された前記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、
    前記計時部は、前記経過時間が前記一定時間を超えると前記アドレスからの前記データの読出しを指示し、
    前記リード制御部は、前記経過時間が前記一定時間を超えていると判定された場合または前記計時部により前記データの読出しが指示された場合には前記アドレスから前記データを読み出し、
    前記計時部は、前記アドレスに前記データが書き込まれたタイミングまたは前記誤りの訂正に失敗したタイミングを前記所定のタイミングとして前記経過時間を計時する
    請求項3記載のメモリコントローラ。
  5. 前記アドレスから読み出された前記データの誤りを検出して訂正する誤り検出訂正部をさらに具備し、
    前記計時部は、前記誤りの訂正に失敗したタイミングを前記所定のタイミングとして前記経過時間を計時する
    請求項1記載のメモリコントローラ。
  6. 前記計時部は、前記経過時間が前記一定時間を超えると前記アドレスからの前記データの読出しを指示し、
    前記リード制御部は、前記経過時間が前記一定時間を超えていると判定された場合または前記計時部により前記データの読出しが指示された場合には前記アドレスから前記データを読み出す
    請求項5記載のメモリコントローラ。
  7. 前記経過時間が前記一定時間を超えていないと判定された場合にはリードエラーを出力するリードエラー出力部をさらに具備する
    請求項1記載のメモリコントローラ。
  8. アドレスが割り当てられたメモリセルと、
    データが書き込まれた前記アドレスについて所定のタイミングから経過した経過時間を計時する計時部と、
    前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定部と、
    前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御部と
    を具備するメモリシステム。
  9. 計時部が、データが書き込まれたアドレスについて所定のタイミングから経過した経過時間を計時する計時手順と、
    経過時間判定部が、前記アドレスからの前記データの読出しが指示されると前記経過時間が一定時間を超えているか否かを判定する経過時間判定手順と、
    前記経過時間が前記一定時間を超えていないと判定された場合には前記アドレスからの前記データの読出しを休止するリード制御手順と
    を具備するメモリコントローラの制御方法。
JP2016562333A 2014-12-05 2015-10-08 メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法 Active JP6497395B2 (ja)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
JP2014246567 2014-12-05
JP2014246567 2014-12-05
PCT/JP2015/078609 WO2016088448A1 (ja) 2014-12-05 2015-10-08 メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法

Publications (2)

Publication Number Publication Date
JPWO2016088448A1 true JPWO2016088448A1 (ja) 2017-09-14
JP6497395B2 JP6497395B2 (ja) 2019-04-10

Family

ID=56091404

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2016562333A Active JP6497395B2 (ja) 2014-12-05 2015-10-08 メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法

Country Status (3)

Country Link
US (1) US20170322842A1 (ja)
JP (1) JP6497395B2 (ja)
WO (1) WO2016088448A1 (ja)

Families Citing this family (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
FR3077655A1 (fr) * 2018-02-05 2019-08-09 Proton World International N.V. Gestion d'une memoire non volatile
US11487610B2 (en) * 2018-05-09 2022-11-01 Micron Technology, Inc. Methods for parity error alert timing interlock and memory devices and systems employing the same
JP2021039810A (ja) 2019-09-04 2021-03-11 キオクシア株式会社 メモリシステム

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005108395A (ja) * 2003-09-12 2005-04-21 Renesas Technology Corp 記憶装置
JP2009295264A (ja) * 2008-06-04 2009-12-17 Samsung Electronics Co Ltd 相変化メモリ装置及びその読み出し方法
JP2011181134A (ja) * 2010-02-26 2011-09-15 Elpida Memory Inc 不揮発性半導体装置の制御方法
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7797480B2 (en) * 2007-03-29 2010-09-14 Sandisk Corporation Method for reading non-volatile storage using pre-conditioning waveforms and modified reliability metrics
JP5204868B2 (ja) * 2011-04-12 2013-06-05 シャープ株式会社 半導体記憶装置
US9811457B2 (en) * 2014-01-16 2017-11-07 Pure Storage, Inc. Data placement based on data retention in a tiered storage device system

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2005108395A (ja) * 2003-09-12 2005-04-21 Renesas Technology Corp 記憶装置
JP2009295264A (ja) * 2008-06-04 2009-12-17 Samsung Electronics Co Ltd 相変化メモリ装置及びその読み出し方法
JP2011181134A (ja) * 2010-02-26 2011-09-15 Elpida Memory Inc 不揮発性半導体装置の制御方法
US20120294104A1 (en) * 2011-05-17 2012-11-22 Samsung Electronics Co., Ltd. Nonvolatile memory systems using time-dependent read voltages and methods of operating the same

Also Published As

Publication number Publication date
US20170322842A1 (en) 2017-11-09
JP6497395B2 (ja) 2019-04-10
WO2016088448A1 (ja) 2016-06-09

Similar Documents

Publication Publication Date Title
JP6686892B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
KR101750662B1 (ko) 데이터 에러 교정용 회로, 장치, 및 방법
KR100842680B1 (ko) 플래시 메모리 장치의 오류 정정 컨트롤러 및 그것을포함하는 메모리 시스템
JP6497394B2 (ja) メモリシステム、記憶装置、および、メモリシステムの制御方法
JP5870901B2 (ja) 誤り検出訂正装置、不一致検出装置、メモリシステム、および、誤り検出訂正方法
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US10489246B2 (en) Data storage device and data maintenance method thereof
US9917601B2 (en) Adaptive error correction in a memory system
WO2016013285A1 (ja) メモリコントローラおよびメモリコントローラの制御方法
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
JP5867264B2 (ja) 記憶制御装置、メモリシステム、情報処理システム、および、記憶制御方法
JP2008310896A (ja) 不揮発性記憶装置、不揮発性記憶システムおよび不揮発性記憶装置の制御方法
US20230197183A1 (en) Storage controller including parity management module, storage device including the same, and operating method of storage device
US9104596B2 (en) Memory system
US20170109099A1 (en) Storage device, storage system, and method of controlling storage device
WO2020031435A1 (ja) 記憶制御装置、記憶装置および記憶制御方法
CN107093458B (zh) 固态储存装置及其数据处理方法
JP2017055254A (ja) データ復元回路、半導体記憶装置およびデータ復元方法
JP6267497B2 (ja) 半導体メモリの制御装置及び不安定メモリ領域の検出方法
WO2022158120A1 (ja) コントローラ、不揮発性記憶装置、および、制御方法
CN108877861B (zh) 存储器系统及其操作方法
WO2017043149A1 (ja) メモリコントローラ、メモリおよびメモリシステム
JP2013143118A (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
JP2019028952A (ja) 記憶装置

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20180824

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20190225

R151 Written notification of patent or utility model registration

Ref document number: 6497395

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151