JP6149598B2 - 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 - Google Patents

記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 Download PDF

Info

Publication number
JP6149598B2
JP6149598B2 JP2013169503A JP2013169503A JP6149598B2 JP 6149598 B2 JP6149598 B2 JP 6149598B2 JP 2013169503 A JP2013169503 A JP 2013169503A JP 2013169503 A JP2013169503 A JP 2013169503A JP 6149598 B2 JP6149598 B2 JP 6149598B2
Authority
JP
Japan
Prior art keywords
memory cell
memory
refresh
cell array
request
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.)
Expired - Fee Related
Application number
JP2013169503A
Other languages
English (en)
Other versions
JP2015038794A (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 JP2013169503A priority Critical patent/JP6149598B2/ja
Priority to US14/454,214 priority patent/US9449684B2/en
Priority to CN201410397194.3A priority patent/CN104423896B/zh
Publication of JP2015038794A publication Critical patent/JP2015038794A/ja
Application granted granted Critical
Publication of JP6149598B2 publication Critical patent/JP6149598B2/ja
Expired - Fee Related legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • 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/004Reading or sensing circuits or methods
    • 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
    • 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/0007Digital stores characterised by the use of storage elements not covered by groups G11C11/00, G11C23/00, or G11C25/00 using resistive RAM [RRAM] elements comprising metal oxide memory material, e.g. perovskites
    • 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/0033Disturbance prevention or evaluation; Refreshing of disturbed memory data
    • 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
    • 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/0069Writing or programming circuits or methods
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/04Detection or location of defective memory elements, e.g. cell constructio details, timing of test signals
    • G11C29/08Functional testing, e.g. testing during refresh, power-on self testing [POST] or distributed testing
    • G11C29/12Built-in arrangements for testing, e.g. built-in self testing [BIST] or interconnection details
    • G11C29/38Response verification devices
    • G11C29/42Response verification devices using error correcting codes [ECC] or parity check
    • GPHYSICS
    • G11INFORMATION STORAGE
    • G11CSTATIC STORES
    • G11C29/00Checking stores for correct operation ; Subsequent repair; Testing stores during standby or offline operation
    • G11C29/56External testing equipment for static stores, e.g. automatic test equipment [ATE]; Interfaces therefor
    • 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/0069Writing or programming circuits or methods
    • G11C2013/0076Write operation performed depending on read result

Landscapes

  • Chemical & Material Sciences (AREA)
  • Engineering & Computer Science (AREA)
  • Materials Engineering (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Read Only Memory (AREA)

Description

本技術は、記憶制御装置に関する。詳しくは、不揮発性メモリのための記憶制御装置、記憶装置、情報処理システム、および、これらにおける処理方法ならびに当該方法をコンピュータに実行させるプログラムに関する。
情報処理システムにおいては、ワークメモリとしてDRAM(Dynamic Random Access Memory)等が用いられる。このDRAMは、通常、揮発性メモリであり、電源の供給が停止するとその記憶内容は消失する。一方、近年、不揮発性メモリ(NVM:Non-Volatile Memory)が用いられるようになっている。この不揮発性メモリとしては、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ(NVRAM:Non-Volatile RAM)とに大別される。ここで、フラッシュメモリの代表例としては、NAND型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ReRAM(Resistance RAM)、PCRAM(Phase-Change RAM)、MRAM(Magnetoresistive RAM)などが挙げられる。
一般に、不揮発性メモリでは、メモリセルに対して電圧を印することにより、データの読出しが実現される。データが読み出されることにより、メモリセルは電圧によりストレスを受けることになる。データの読出しの繰り返し、すなわちメモリセルに対して繰り返し電圧によるストレスを掛けることにより、書き込まれたデータが破壊され、メモリセルから誤った値が読み出されるおそれがある。これに対し、読み出されたデータから誤りが検出された場合に、エラー訂正コードを用いてデータの訂正を行い、この訂正されたデータを不揮発性メモリに書き直すことによってデータ破壊を防ぐ技術が提案されている(例えば、特許文献1参照。)。
特開平06−110793号公報
上述の従来技術では、訂正されたデータを不揮発性メモリに書き直す、いわゆるリフレッシュ処理を用いることにより、データ破壊を防いでいる。しかしながら、上述の従来技術では、エラーが発生したメモリセルを含め、少なくとも同じ物理ページに属する全てのメモリセルに対して、消去および書込みが行われてしまう。データの書き換えが不要なメモリセルのデータ消去および書込みは、処理にかかる時間を引き延ばす要因となり得る。また、データの書換えが不要なメモリセルのデータ消去および書込みにより、メモリセルにかかるストレスが多くなり、不揮発性メモリの寿命を短くする要因となる。
本技術はこのような状況に鑑みて生み出されたものであり、メモリの書き直しを行う処理を簡潔にすることを目的とする。
本技術は、上述の問題点を解消するためになされたものであり、その第1の側面は、各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイにおいて、上記第1の動作および上記第2の動作のうち上記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、上記第1のタイミングが検出された場合には上記第1の書直し処理のリクエストを上記メモリセルアレイに対して要求する要求部とを具備する記憶制御装置またはその方法である。これにより、例えば第1の記憶状態にあるべきビットの劣化が多い場合に、第1の動作のみを行う書直し処理を利用することにより、メモリセルアレイに対する書直し処理を簡潔にするという作用をもたらす。
また、この第1の側面において、上記第1の記憶状態にあるべきビットについて上記第2の記憶状態であると読み出されたビット数が所定のビット数よりも多い場合に、上記第1のタイミングを検出するようにしてもよい。これにより、例えば劣化した第1の記憶状態にあるべきビットのエラー数に基づいて書直し処理を切り替えるという作用をもたらす。また、この場合において、上記検出部は、上記メモリセルアレイにおいて検出されたエラー数が所定のエラー数よりも多い場合に、上記第1のタイミングの検出を開始するようにしてもよい。
また、この第1の側面において、上記検出部は、所定のデータを上記メモリセルアレイに書き込んだ際の上記第2の記憶状態のビット数と、上記書き込まれた所定のデータを上記メモリセルアレイから読み出した際の上記第2の記憶状態のビット数とを比較して、上記読み出した際の上記第2の記憶状態のビット数の方が多い場合に、上記第1のタイミングを検出するようにしてもよい。これにより、書込み前後の第2の記憶状態のビット数に基づいて書直し処理を切り替えるという作用をもたらす。また、この場合において、上記検出部は、上記書き込んだ際の上記第2の記憶状態のビット数と上記読み出した際の上記第2の記憶状態のビット数と差が所定の数よりも多い場合に、上記第1のタイミングの検出を開始するようにしてもよい。
また、この第1の側面において、上記メモリセルアレイについて物理アドレス毎にリード回数を記録する情報管理部をさらに具備し、上記検出部は、上記リード回数が所定回数に達した物理アドレスについて上記第1のタイミングを検出するようにしてもよい。これにより、リード回数に基づいて書直し処理を切り替えるという作用をもたらす。また、この場合において、上記情報管理部は、上記第1の動作および上記第2の動作の両者を行う書直し処理のリクエストを上記メモリセルアレイに対して要求した後に上記メモリセルアレイの電源がオンになった電源オン回数をさらに記録し、上記検出部は、上記電源オン回数が所定回数に達すると、上記第1の動作および上記第2の動作の両者を行う書直し処理のリクエストを上記メモリセルアレイに対して要求するようにしてもよい。
また、この第1の側面において、上記検出部は、上記メモリセルアレイからの読出しを行うためのリードコマンドの実行中に上記第1のタイミングの検出を行うようにしてもよい。これにより、リードコマンドの実行のたびに、書直し処理を行うという作用をもたらす。
また、この第1の側面において、上記検出部は、上記メモリセルアレイに対するアクセスを行うためのコマンドを実行していない状態において自発的に上記第1のタイミングの検出を行うようにしてもよい。これにより、記憶制御装置が自発的なタイミングで書直し処理を行うという作用をもたらす。
また、この第1の側面において、上記検出部は、上記メモリセルアレイにおいて第1の書直し処理を行った後に所定期間を経過した場合に、上記第1のタイミングを検出するようにしてもよい。これにより、書直し処理が行われた最終時点からの経過期間に応じて書直し処理を行うという作用をもたらす。
また、この第1の側面において、上記検出部は、上記第1の動作および上記第2の動作の両者を行う第2の書直し処理を行う第2のタイミングをさらに検出し、上記要求部は、上記第2のタイミングが検出された場合には上記第2の書直し処理のリクエストを上記メモリセルアレイに対して要求するようにしてもよい。これにより、第1の書直し処理では不十分な場合に第2の書直し処理を行うという作用をもたらす。
また、本技術の第2の側面は、各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、上記メモリセルアレイにおいて上記第1の動作および上記第2の動作のうち上記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、上記第1のタイミングが検出された場合には上記第1の書直し処理のリクエストを上記メモリセルアレイに対して要求する要求部とを具備する記憶装置である。これにより、例えば第1の記憶状態にあるべきビットの劣化が多い場合に、第1の動作のみを行う書直し処理を利用することにより、メモリセルアレイにおける書直し処理を簡潔にするという作用をもたらす。
また、この第2の側面において、上記メモリセルアレイの各ビットは可変抵抗素子からなり、上記第1の記憶状態は低抵抗状態であり、上記第2の記憶状態は高抵抗状態であり、上記第1の動作は、上記低抵抗状態に遷移させるセット動作であり、上記第2の動作は、上記高抵抗状態に遷移させるリセット動作であるようにしてもよい。
また、本技術の第3の側面は、各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、上記メモリセルアレイに対してリードコマンドを発行するホストコンピュータと、上記リードコマンドの実行に関連して上記第1の動作および上記第2の動作のうち上記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、上記第1のタイミングが検出された場合には上記第1の書直し処理のリクエストを上記メモリセルアレイに対して要求する要求部とを具備する情報処理システムである。これにより、ホストコンピュータがメモリセルアレイに対して発行したリードコマンドの実行に関連して、例えば第1の記憶状態にあるべきビットの劣化が多い場合に、第1の動作のみを行う書直し処理を利用することにより、メモリセルアレイにおける書直し処理を簡潔にするという作用をもたらす。
本技術によれば、メモリの書き直しを行う処理を簡潔にすることができるという優れた効果を奏し得る。
本技術の実施の形態における情報処理システムの構成例を示す図である。 本技術の実施の形態におけるメモリ300の一構成例を示す図である。 本技術の実施の形態におけるメモリセルアレイ310の構造の一例を示す図である。 本技術の実施の形態におけるメモリセル313の回路例を示す図である。 本技術の実施の形態におけるメモリセル313の通常状態における抵抗分布を示す図である。 本技術の実施の形態におけるメモリセル313の変化した抵抗分布を示す図である。 本技術の実施の形態におけるメモリセルアレイ310に記憶されるデータの構造の一例を示す図である。 本技術の第1の実施の形態におけるメモリセルアレイ310に記憶される物理ページの構造の一例を示す図である。 本技術の実施の形態におけるバッファ340に保持される各バッファの例を示す図である。 本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。 本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。 本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。 本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。 本技術の第1の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。 本技術の第1の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS820)の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300の第1リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300の第2リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300のセット処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるメモリ300のリセット処理の処理手順の一例を示す流れ図である。 本技術の実施の形態におけるリードリクエスト処理の処理手順の一例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。 本技術の第2の実施の形態におけるメモリコントローラ200のリフレッシュ処理の処理手順の一例を示す流れ図である。 本技術の第3の実施の形態におけるメモリセルアレイ310に記憶される物理ページの構造の一例を示す図である。 本技術の第3の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。 本技術の第3の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS850)の処理手順の一例を示す流れ図である。 本技術の第4の実施の形態におけるリフレッシュ情報管理テーブルの構成例を示す図である。 本技術の第4の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。 本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS860)の処理手順の一例を示す流れ図である。 本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の一例を示す流れ図である。 本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS880)の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるリフレッシュ情報管理テーブルの構成例を示す図である。 本技術の第5の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリコントローラ200の第1リフレッシュ処理(ステップS720)の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリコントローラ200の第2リフレッシュ処理(ステップS730)の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の変形例を示す流れ図である。 本技術の第5の実施の形態におけるメモリコントローラ200の第3リフレッシュ処理(ステップS740)の処理手順の一例を示す流れ図である。 本技術の第5の実施の形態におけるメモリ300の第3リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。 本技術の実施の形態の変形例におけるメモリセル313の抵抗分布と閾値との関係を示す図である。 本技術の実施の形態の変形例における4つの状態を記憶するための抵抗分布図を示す図である。
以下、本技術を実施するための形態(以下、実施の形態と称する)について説明する。説明は以下の順序により行う。
1.第1の実施の形態(劣化した低抵抗状態のエラー数に基づく制御:リードコマンド実行時)
2.第2の実施の形態(劣化した低抵抗状態のエラー数に基づく制御:自発的)
3.第3の実施の形態(ライト前後の高抵抗状態のビット数に基づく制御)
4.第4の実施の形態(リード回数等に基づく制御)
5.第5の実施の形態(リフレッシュ後の経過期間に基づく制御)
6.その他の変形例
<1.第1の実施の形態>
[情報処理システムの構成]
図1は、本技術の実施の形態における情報処理システムの構成例を示す図である。この情報処理システムは、ホストコンピュータ100と、メモリコントローラ200と、メモリ300とから構成される。メモリコントローラ200およびメモリ300はストレージシステムを構成する。
ホストコンピュータ100は、メモリ300に対してデータのリード処理、ライト処理またはリフレッシュ処理等を要求するコマンドを発行するものである。
メモリコントローラ200は、ホストコンピュータ100と通信してコマンドを受信し、メモリ300へのデータ書込みおよびメモリ300からのデータ読出しを実行するものである。メモリコントローラ200は、ライトコマンドを受信した場合、ホストコンピュータ100から受信したデータを、メモリ300に書き込むよう指示する。また、メモリコントローラ200は、リードコマンドを受信した場合、メモリ300からデータを読み出してホストコンピュータ100に転送する。また、メモリコントローラ200は、リフレッシュコマンドを受信した場合、メモリ300からデータを読み出して、その読み出したデータを再びメモリ300に書き直すよう指示する。
ホストコンピュータ100がライトコマンド、リードコマンド、リフレッシュコマンドを実行するとき、メモリコントローラ200内で、データの位置情報を表すアドレスとして論理アドレスが用いられる。1つの論理アドレスにより示される領域は、512バイトのサイズであると想定する。一方、メモリコントローラ200がライトリクエストやリードリクエストを要求する際、メモリ300内のデータの位置情報を表すアドレスとしては物理アドレスが用いられる。1つの物理アドレスで示される領域は、528バイト(4224ビット)のサイズであると想定する。
メモリコントローラ200は、プロセッサ210と、RAM220と、ROM230と、ECC処理部240と、リフレッシュ情報管理部250と、ホストインターフェース201と、メモリインターフェース203とを備える。
プロセッサ210は、メモリコントローラ200全体の制御を行うものである。このプロセッサ210は、ROM230に格納されたソフトウェアを実行する。このプロセッサ210は、ホストコンピュータ100から発行されたコマンドを解釈して、メモリ300に対して必要なリクエストを要求する。なお、プロセッサ210は、特許請求の範囲に記載の要求部の一例である。
RAM220は、揮発性のメモリであり、プロセッサ210のワーキングメモリや、メモリ300を管理するデータを一時的に保持するための領域として用いられる。また、RAM220は、ホストコンピュータ100とメモリコントローラ200との間で転送されるデータを一時的に保持するための領域や、メモリコントローラ200とメモリ300との間で転送されるデータを一時的に保持するための領域としても用いられる。また、このRAM220は、アドレス変換テーブルを保持する。アドレス変換テーブルは、ホストコンピュータ100がコマンドで指定する論理アドレスを、対応する物理アドレスに変換するためのテーブルである。この実施の形態では、論理アドレスは512バイトでアドレッシングされる。1つの論理アドレスに書き込まれる512バイトのデータは、メモリ300の1つの物理ページにユーザデータとして書き込まれる。したがって、1つの論理アドレスに、1つの物理アドレスが割り当てられる。ROM230は、ストレージシステムを制御するためのソフトウェアプログラムを格納するメモリである。
ECC処理部240は、メモリ300に記録されるデータのエラー訂正コード(ECC:Error Correcting Code)の生成、および、メモリ300から読み出したデータのエラー検出および訂正処理を実行するものである。ECC処理部240は、8ビットの訂正能力を有する。このとき想定する冗長ビット数は13バイト(104ビット)である。なお、ECC処理部240は、特許請求の範囲に記載の検出部の一例である。
リフレッシュ情報管理部250は、リフレッシュ処理の実行の要否を判定する際に必要な情報を管理するものである。
ホストインターフェース201は、ホストコンピュータ100と接続され、ホストコンピュータ100からのコマンドの受信、および、ホストコンピュータ100とのデータの受送信を実行するものである。
メモリインターフェース203は、メモリ300と接続され、メモリ300に対するリクエストの送信、ライトデータの送信、および、リードデータの受信を実行するものである。
[メモリの構成]
図2は、本技術の実施の形態におけるメモリ300の一構成例を示す図である。このメモリ300は、メモリセルアレイ310と、ロウ制御部311と、カラム制御部312と、プレート制御部320とを備える。また、このメモリ300は、ライト制御部331と、リード制御部332と、リフレッシュ制御部333と、バッファ340と、検証処理部350と、リクエスト処理部360とを備える。
また、このメモリ300は、メモリコントローラ200との間のインターフェースである制御インターフェース309を備えている。この制御インターフェース309は、メモリコントローラ200からのリクエストや物理アドレスおよびパラメータの受信、メモリセルアレイ310へのライトデータの受信、メモリセルアレイ310からのリードデータの送信、制御データの受送信などを行う。
メモリセルアレイ310は、複数のメモリセルからなるメモリセルアレイであり、ビット毎に2値の何れかの値を記憶するメモリセルが2次元状(マトリクス状)に多数配列されている。このメモリセルアレイ310にアクセスするメモリコントローラ200からのリクエストの単位は物理ページ単位である。物理ページには物理ページアドレスが割り振られている。なお、メモリセルアレイ310は、特許請求の範囲に記載のメモリセルアレイの一例である。
ロウ制御部311は、リクエスト処理部360からの指示に従って、メモリセルアレイ310のロウアドレスを特定してアクセス制御するものである。カラム制御部312は、リクエスト処理部360からの指示に従って、メモリセルアレイ310のカラムアドレスを特定してアクセス制御するものである。プレート制御部320は、メモリセルアレイ310のメモリセルにセル電流を流すためのプレート電圧を制御するものである。
ライト制御部331は、メモリセルアレイ310に書込みを行うための制御を実行するものである。リード制御部332は、メモリセルアレイ310から読出しを行うための制御を実行するものである。リフレッシュ制御部333は、メモリセルアレイ310に対してリフレッシュを行うための制御を実行するものである。
バッファ340は、各リクエストを処理するために必要なデータを保持するバッファの格納領域である。このバッファ340の構成については後述する。
検証処理部350は、メモリセルアレイ310にデータが正しく書き込まれたか否かを検証(ベリファイ)するものである。
リクエスト処理部360は、メモリコントローラ200からのリクエストを処理するためのものである。このリクエスト処理部360は、メモリコントローラ200からのリクエストがライトリクエストであれば、ライト制御部331に制御を指示する。また、このリクエスト処理部360は、メモリコントローラ200からのリクエストがリードリクエストであれば、リード制御部332に制御を指示する。また、このリクエスト処理部360は、メモリコントローラ200からのリクエストがリフレッシュリクエストであれば、リフレッシュ制御部333に制御を指示する。
図3は、本技術の実施の形態におけるメモリセルアレイ310の構造の一例を示す図である。このメモリセルアレイ310においては、メモリセル313をマトリクス状に、ロウ方向にN行(Nは2以上の整数)、カラム方向に4224列として配置している。メモリセル313は、ワード線WL、ビット線BL、プレート線PLに接続されている。同図において、N本のワード線WLをWL[1]乃至[N]、4224本のビット線BLをBL[1]乃至[4224]、4224本のプレート線PLをPL[1]乃至[4224]と記している。ワード線WLはロウ制御部311に接続され、ビット線BLはカラム制御部312に接続されている。
この例では、メモリセルアレイ310のロウ方向のメモリセルを64個のブロックBLK318に分割している。したがって、ブロックBLK318の各々はN行66列のメモリセルから構成される。同図において、64個のブロックBLK318の各々をBLK[1]乃至[64]と記している。ブロックBLK318の各々は、66本のビット線BLに接続することになる。ブロックBLK318内では、66本のビット線BLをカラム線CLM[1]乃至[66]と記している。
同一のワード線WLに接続された4224個のメモリセルの集合を物理ページと称する。メモリコントローラ200は、物理ページを単位としてメモリ300にアクセスする。物理ページには、固有の物理ページアドレスが割り当てられる。
64個のブロックBLK318の各々から1つずつ選択された64個のメモリセルから構成される集合をグループと称する。ここでは、1つのグループに属するメモリセルの数は、メモリセルアレイ310において許容される電流量に基づいて決定されている。1本のワード線WLに接続された4224個のメモリセルのうち、CLM[1]に接続するメモリセルの集合を第1グループと称し、CLM[2]に接続するメモリセルの集合を第2グループと称する。以下同様にして、CLM[66]に接続するメモリセルの集合を第66グループと称する。
ロウ制御部311は、リクエスト処理部360から入力される物理ページアドレスに基づいて指定されるワード線WLを選択し、所定の期間、所定の電圧により駆動する。ワード線WLの電圧は、ワード線WLに接続されたメモリセルを、ライト、リード、または、リフレッシュ可能な状態にするための電圧である。この電圧はワード線電圧と呼ばれ、ハイレベルでアクティブとなる。ロウ制御部311は、ワード線電圧としての波高値をもつパルスの印加タイミングと持続時間および印加電圧を制御する。
カラム制御部312は、ビット線BLの電位を読み出すセンスアンプを含む。これにより、4224ビット(528バイト)のデータを一括して読み出すことができる。
プレート制御部320は、メモリセルアレイ310のメモリセルにセル電流を流すためのプレート電圧を制御する。このプレート電圧は、ビット線BLの電圧との電圧差によってメモリセル電流の向きが決まる。そのため、プレート制御部320は、プレート電圧のビット線電圧に対する高さを制御して、セット時とリセット時とで電圧印可の方向を反転させるように制御する。リード時に印可される電圧の方向は、リセット時に印可される電圧の方向と同方向となるように制御を行う。
図4は、本技術の実施の形態におけるメモリセル313の回路例を示す図である。ここでは、メモリセル313として可変抵抗素子を想定し、1つのアクセストランジスタ314と、1つの可変セル抵抗315とにより構成されるものとする。可変セル抵抗315の一端はプレート線PLに接続され、他端はアクセストランジスタ314のソース端子に接続される。アクセストランジスタ314のドレイン端子はビット線BLに接続され、ゲート端子はワード線WLに接続される。
可変セル抵抗315は、ビット線BLよりプレート線PLを一定電圧高くすると、低抵抗状態(LRS:Low Resistance State)になる。この可変セル抵抗315を低抵抗状態にする動作を、セット動作と称する。一方、プレート線PLよりもビット線BLの電圧を上げると、可変セル抵抗315は、高抵抗状態(HRS:High Resistance State)になる。この可変セル抵抗315を高抵抗状態にする動作を、リセット動作と称する。
低抵抗状態と高抵抗状態との間で抵抗状態を可逆的に変化させることにより、1つのメモリセルによって1ビットを記憶することが可能なメモリが実現される。電圧の印加を止めた後もデータは保持されるため不揮発性メモリとして機能する。以下では、低抵抗状態のセルから読み出されるデータを「1」とし、高抵抗状態から読み出されるデータを「0」とした例について説明するが、これらは何れに対応付けても構わない。
[メモリの抵抗状態]
図5は、本技術の実施の形態におけるメモリセル313の通常状態における抵抗分布を示す図である。メモリセル313は、セット動作によりLRS(低抵抗状態)に遷移し、リセット動作によりHRS(高抵抗状態)に遷移する。メモリセルアレイ310からデータを読み出す場合、リード閾値で示したリファレンス抵抗値を基準として抵抗状態を判断する。
図6は、本技術の実施の形態におけるメモリセル313の変化した抵抗分布を示す図である。この図は、セット動作によりLRSに遷移させたメモリセルが、HRSとして読み出されてしまう例である。抵抗変化型メモリでは、経年変化や、リード時にメモリセルにかけられる電圧によるストレスにより、メモリセルの分布が変化し、誤ったデータが読み出されてしまう場合がある。この例では、LRSに遷移させたはずの抵抗状態が高抵抗側に変化してしまい、リード閾値を基準とした際に一部の抵抗状態31においてHRSと解釈されてしまう。上述のように、リード時にはリセット動作でかけられる電圧と同方向の電圧がかけられるため、LRSのメモリセルはリードによって状態が劣化しやすい。
そこで、この実施の形態では、リフレッシュ処理によって、劣化した抵抗状態を正しい抵抗状態に書き直すことを想定する。そして、このリフレッシュ処理を高速化することにより、ストレージシステムとしての高速化を図る。なお、この実施の形態ではリード時にかけられる電圧はリセット動作でかけられる電圧と同方向であると想定しているが、リード時に掛けられる電圧がセット動作でかけられる電圧と同方向である場合でも同様の考え方に基づいて適用することが可能である。
[データ構造]
図7は、本技術の実施の形態におけるメモリセルアレイ310に記憶されるデータの構造の一例を示す図である。
上述のように、メモリセルアレイ310は、メモリセル313をマトリクス状に、ロウ方向にN行、カラム方向に4224列として配置している。なお、ここでは、物理アドレスとして、「0x00000000」から「0x01FFFFFF」をN個のアドレスを割り当てている。「0x」はそれに続く数字が16進数であることを表すため、10進数ではNは「33554432」となる。すなわち、メモリセルアレイ310は33554432個の物理ページから構成され、「0」乃至「33554431」の物理アドレスにより特定される。このとき、各物理ページは528バイト(4224ビット)を有する。
図8は、本技術の第1の実施の形態におけるメモリセルアレイ310に記憶される物理ページの構造の一例を示す図である。
物理ページは、512バイト(4096ビット)のデータ601と、3バイトの未使用の領域602と、13バイト(104ビット)の冗長ビット603とから構成される。冗長ビット603は、データ601におけるエラー(誤り)を訂正するエラー訂正符号であり、8ビットの訂正能力を有することを想定する。
[バッファの種類]
図9は、本技術の実施の形態におけるバッファ340に保持される各バッファの例を示す図である。この例では、バッファ340に、ライトデータバッファ341と、リードデータバッファ342と、ベリファイバッファ343とが設けられることを想定している。
ライトデータバッファ341は、メモリセルアレイ310に対するライト対象となるライトデータを保持するバッファである。リードデータバッファ342は、メモリセルアレイ310から読み出されたリードデータを保持するバッファである。ベリファイバッファ343は、検証処理部350による検証(ベリファイ)結果を保持するバッファである。また、ベリファイバッファ343は、セット対象またはリセット対象となるビットを特定するためにも使用される。これら各バッファは、物理ページと同様にそれぞれ528バイト幅を有する。
図10は、本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。以下の例では、各バッファの4224ビットの一部として、対応する8ビットの部分のみを示している。
ライトデータバッファ341はライトデータとして「11110000」を保持しており、リードデータバッファ342はプレリードデータとして「10100000」を保持している。ここでは、セットすべきメモリセル313を特定して、その結果をベリファイバッファ343に保持したことを想定している。すなわち、既に書き込まれているデータが「0」で、書き込もうとするデータが「1」であるメモリセルが、「0」から「1」にセットするべきメモリセルであると特定される。この例では、ベリファイバッファ343は「01010000」を保持し、2番目と4番目のメモリセルがセットするべきメモリセルであると特定される。
図11は、本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。
ライトデータバッファ341はライトデータとして「11110000」を保持しており、リードデータバッファ342は検証のために読み出されたデータとして「11100000」を保持している。ここでは、ライトデータバッファ341の保持内容とリードデータバッファ342の保持内容とを比較することにより検証を行い、その結果をベリファイバッファ343に保持したことを想定している。すなわち、本来のライトデータと実際に書き込まれたデータとで一致していないメモリセルが、書込みに失敗したメモリセルということになる。この例では、ベリファイバッファ343は「00010000」を保持し、4番目のメモリセルが検証の結果として書込みに失敗した旨が示される。
図12は、本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。
ライトデータバッファ341はライトデータとして「11110000」を保持しており、リードデータバッファ342はプレリードデータとして「10101010」を保持している。ここでは、セットすべきメモリセル313を特定して、その結果をベリファイバッファ343に保持したことを想定している。すなわち、既に書き込まれているデータが「1」で、書き込もうとするデータが「0」であるメモリセルが、「1」から「0」にリセットするべきメモリセルであると特定される。この例では、ベリファイバッファ343は「00001010」を保持し、5番目と7番目のメモリセルがリセットするべきメモリセルであると特定される。
図13は、本技術の実施の形態におけるバッファ340に保持される具体例を示す図である。
ライトデータバッファ341はライトデータとして「11110000」を保持しており、リードデータバッファ342は検証のために読み出されたデータとして「10100010」を保持している。ここでは、ライトデータバッファ341の保持内容とリードデータバッファ342の保持内容とを比較することにより検証を行い、その結果をベリファイバッファ343に保持したことを想定している。すなわち、本来のライトデータと実際に書き込まれたデータとで一致していないメモリセルが、書込みに失敗したメモリセルということになる。この例では、ベリファイバッファ343は「00000010」を保持し、7番目のメモリセルが検証の結果として書込みに失敗した旨が示される。
[情報処理システムの動作]
図14は、本技術の第1の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。メモリコントローラ200のプロセッサ210は、ホストコンピュータ100からコマンドを受け取ると、そのコマンドの種別を解釈して、対応する処理を行う。ここでは、そのコマンドがリードコマンドであった場合の手順を示している。
プロセッサ210は、ホストインターフェース201で受信したリード対象の先頭論理アドレスとデータサイズとに基づいて、論理アドレス単位に処理を分割する(ステップS811)。1回の処理で実行されるのは1論理アドレスである。例えば、リード対象の先頭アドレスとして「0」、データサイズとして「1」が指定された場合は、1回の処理が行われる。また、リード対象の先頭論理アドレスとして「0」、データサイズとして「2」が指定された場合には、2回の処理に分割される。
プロセッサ210は、リード対象とする論理アドレスを決定する(ステップS812)。対象となる論理アドレスは、リード対象の先頭論理アドレスから順番に決定される。リード対象の先頭論理アドレスとして「0」、データサイズとして「2」が指定された場合、最初に処理を実行する論理アドレスは「0」に決定される。そして、次に対象となる論理アドレスは「1」に決定される。
プロセッサ210は、リード対象として決定した論理アドレスを、RAM220内に保持しているアドレス変換テーブルを使用して物理アドレスに変換する(ステップS813)。
プロセッサ210は、変換した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS814)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた4224ビット(528バイト)である。
メモリ300から読み出されたデータは、ECC処理部240へ転送されて、ECC処理部240で保持される。ECC処理部240では、528バイトのデータから、エラー検出を行う(ステップS815)。エラーが検出された場合は、ECC処理部240は、エラーとなった全てのビット数(Eall)と、エラーと検出されたビットのうち、本来LRS(「1」)であるべきビットが劣化によりHRS(「0」)として読み出されたビットの数(Ehrs)とをカウントする。すなわち、このビット数Ehrsは、劣化した低抵抗状態のエラー数を示す。エラーが検出されなかった場合は、エラーとなった全ビット数(Eall)を「0」として、ステップS833の処理に移行する(ステップS817:No)。
エラーが検出された場合(ステップS817:Yes)、訂正可能なエラー数でなければ(ステップS818:No)、ホストコンピュータ100に対してコマンドのエラー終了を通知する(ステップS836)。この例では、上述のように訂正可能なエラー数は「8」までであると想定している。訂正可能なエラー数であれば(ステップS818:Yes)、ECC処理部240は、保持されている528バイトのデータのエラー訂正を行い(ステップS819)、リフレッシュ処理を行う(ステップS820)。リフレッシュ処理の内容については後述する。
528バイトのデータのうち512バイトのデータ601が、ECC処理部240からホストインターフェース201を介してホストコンピュータ100に転送される(ステップS833)。ステップS819においてエラー訂正が行われた場合には、転送されるのは訂正後のデータである。
プロセッサ210は、このリードコマンド処理においてホストコンピュータ100に転送されたデータサイズの合計と、このリードコマンドで指定されたデータサイズとが一致するか否かを判定する(ステップS834)。転送されたデータサイズの合計が、指定されたデータサイズよりも少ない場合には(ステップS834:No)、ステップS812以降の処理を繰り返す。転送されたデータサイズの合計が、指定されたデータサイズに達した場合には(ステップS834:Yes)、ホストコンピュータ100に対してコマンドの正常終了を通知する(ステップS835)。
図15は、本技術の第1の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS820)の処理手順の一例を示す流れ図である。
プロセッサ210は、ステップS815でカウントしたエラー数Eall、すなわちエラーとなった全ビット数が、5ビットより多いか否かを判定する(ステップS823)。エラー数が5以下の場合にはリフレッシュ処理を終了する(ステップS823:No)。
プロセッサ210は、ステップS815でカウントしたエラー数Ehrs、すなわちエラーと検出されたビットのうち、劣化により「0」と読み出されたビット数が、2ビットより多いか否かを判定する(ステップS824)。このエラー数Ehrsは、図6に示したように、本来LRSであるべきビットが、劣化によりHRSと判断されてしまった場合に生じるエラーの数である。検出されたエラー数Ehrsが2ビットより多い場合には(ステップS824:Yes)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第1リフレッシュリクエストを要求する(ステップS825)。一方、検出されたエラー数Ehrsが2ビット以下の場合には(ステップS824:No)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第2リフレッシュリクエストを要求する(ステップS826)。
第1リフレッシュリクエストは、セット動作およびリセット動作のうちセット動作のみを行うリフレッシュ処理を要求するものである。第2リフレッシュリクエストは、セット動作およびリセット動作の両者を行うリフレッシュ処理を要求するものである。したがって、本来LRSであるべきビットが劣化によりHRSと判断されてしまったエラー数Ehrsが2ビットより多い場合には、セット動作のみがリフレッシュ処理として実行される。一方、エラー数Ehrsが2ビット以下である場合には、セット動作およびリセット動作の両者がリフレッシュ処理として実行される。これら第1リフレッシュリクエストおよび第2リフレッシュリクエストを要求する際、プロセッサ210はECC処理部240に保持されている528バイトのデータをメモリ300に転送する。また、これら第1リフレッシュリクエストおよび第2リフレッシュリクエストにおいて、ステップS813で取得した物理アドレスが指定される。
プロセッサ210は、第1リフレッシュリクエストまたは第2リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS827)。エラーが発生していなければ(ステップS827:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS827:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS828)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS829)。書き込まれるデータは、ECC処理部240に保持されているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS829−1)。
図16は、本技術の実施の形態におけるメモリ300の第1リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。この第1リフレッシュリクエスト処理は、ステップS825等における要求に応答して開始される。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309を通して、第1リフレッシュリクエストと物理アドレスを受信すると、第1リフレッシュリクエストの処理を開始する。第1リフレッシュリクエストの処理に必要な528バイトのデータは、制御インターフェース309からライトデータバッファ341に転送され、保持されている。物理アドレスは、制御インターフェース309からリクエスト処理部360に転送されて、保持されている。
リクエスト処理部360は、セット処理を実行する(ステップS911)。セット処理の内容については後述する。
セット処理終了後、リクエスト処理部360は、そのセット処理が正常に終了したか否かを判定する(ステップS912)。正常終了した場合には(ステップS912:Yes)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第1リフレッシュリクエストが正常に終了した旨を通知する(ステップS915)。一方、エラー終了した場合には(ステップS912:No)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第1リフレッシュリクエストがエラー終了した旨を通知する(ステップS916)。その後、リクエスト処理部360は、第1リフレッシュリクエスト処理を終了する。
図17は、本技術の実施の形態におけるメモリ300の第2リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。この第2リフレッシュリクエスト処理は、ステップS826等における要求に応答して開始される。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309を通して、第2リフレッシュリクエストと物理アドレスを受信すると、第2リフレッシュリクエストの処理を開始する。第2リフレッシュリクエストの処理に必要な528バイトのデータは、制御インターフェース309からライトデータバッファ341に転送され、保持されている。物理アドレスは、制御インターフェース309からリクエスト処理部360に転送されて、保持されている。
リクエスト処理部360は、セット処理を実行する(ステップS921)。セット処理の内容については後述する。
セット処理終了後、リクエスト処理部360は、そのセット処理が正常に終了したか否かを判定する(ステップS922)。エラー終了した場合には(ステップS922:No)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第2リフレッシュリクエストがエラー終了した旨を通知する(ステップS926)。
セット処理が正常終了した場合には(ステップS922:Yes)、リクエスト処理部360は、リセット処理を実行する(ステップS923)。リセット処理の内容については後述する。
リセット処理終了後、リクエスト処理部360は、そのリセット処理が正常に終了したか否かを判定する(ステップS924)。正常終了した場合には(ステップS924:Yes)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第2リフレッシュリクエストが正常に終了した旨を通知する(ステップS925)。一方、エラー終了した場合には(ステップS924:No)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第2リフレッシュリクエストがエラー終了した旨を通知する(ステップS926)。その後、リクエスト処理部360は、第2リフレッシュリクエスト処理を終了する。
図18は、本技術の実施の形態におけるメモリ300のセット処理の処理手順の一例を示す流れ図である。このセット処理は、ステップS911またはS921の処理内容に相当する。
リクエスト処理部360は、プレート制御部320、ロウ制御部311、リード制御部332に制御信号を供給し、指定された物理ページアドレスからデータを読み出す(ステップS931)。読み出されたデータは、プレリードデータとしてリードデータバッファ342に転送されて保持される。
リクエスト処理部360は、リードデータバッファ342に保持されたプレリードデータと、ライトデータバッファ341に保持されているライトデータとをビット単位で比較し、セット処理を実行するメモリセルを特定する(ステップS932)。セット処理を実行するメモリセルは、ライトデータバッファ341に保持されたデータの値が「1」であり、かつ、リードデータバッファ342に保持されたデータの値が「0」となっているメモリセルである。これは、対応するメモリセルが、「0」(高抵抗状態)から「1」(低抵抗状態)に状態を変化させる必要があることを意味する。セット処理を実行するメモリセルの情報として、セット処理を実行するメモリセルに対応するビットの値に「1」、セット処理を実行する必要のないセルに対応するビットの値に「0」とし、データをベリファイバッファ343に保持する。
リクエスト処理部360は、セットおよび検証の繰返し実行回数をカウントするためのカウンタkの値を「1」に設定する(ステップS933)。
リクエスト処理部360は、セット処理を実行するグループ番号を決定するためのカウンタiの値に「1」に設定する(ステップS934)。
リクエスト処理部360は、プレート制御部320、ロウ制御部311、ライト制御部331に制御信号を供給するとともに、ベリファイバッファ343からセットを実行するセルの特定情報をカラム制御部312に供給する。これにより、メモリセルアレイ310に対してセットパルスを印加して、セット動作を行う(ステップS935)。ここで、セットパルスを印加するメモリセルは、指定された物理ページアドレス内の第iグループに属するメモリセルのうち、セット処理を実行するセルである。
リクエスト処理部360は、セット動作を行ったグループ番号を示すカウンタiの値が「66」であるか否かを判定する(ステップS936)。カウンタiの値が「66」でなければ(ステップS936:No)、カウンタiに「1」を加算した後に(ステップS937)、ステップS935以降の処理を繰り返す。一方、カウンタiの値が「66」となった場合には、グループ毎のセット動作を終了する(ステップS936:Yes)。
リクエスト処理部360は、セット動作を検証するため、プレート制御部320、ロウ制御部311、リード制御部332に制御信号を供給して、セットパルスを印加した物理ページアドレスからデータを読み出す(ステップS941)。読み出したデータは、リードデータバッファ342に転送されて保持される。
リクエスト処理部360は、検証処理部350に制御信号を供給して、リードデータバッファ342に保持されているデータと、ライトデータバッファ341に保持されているライトデータとをビット単位で比較して検証処理を実行する(ステップS942)。検証処理の対象となるビットは、ライトデータバッファ341に保持されたデータの値が「1」を示すビットである。ライトデータバッファ341に保持されたデータの値が「1」で、かつ、リードデータバッファ342に保持された値が「0」のビットは検証の結果として書込み失敗となる。ライトデータバッファ341に保持されたデータの値が「1」で、かつ、リードデータバッファ342に保持された値が「1」のビットは検証の結果として書込み成功となる。その結果、書込み失敗となったビットに「1」、書込み成功となったビットに「0」、それ以外のビットに「0」の値がセットされたものがベリファイバッファ343に保持される。
ベリファイバッファ343に保持されたデータの全てのビットが「0」を示す場合、全体が検証処理の結果として書込みに成功したものとして(ステップS943:Yes)、検証処理部350はその旨をリクエスト処理部360に通知して、物理ページセット処理を正常終了する。
一方、ベリファイバッファ343に保持されたデータの何れかのビットが「1」を示す場合、全体として検証処理の結果において書込みに成功していないものとなり(ステップS943:No)、セット処理のリトライ動作が行われる。その際、カウンタkの値が参照され、カウンタkの値が「4」になっている場合には(ステップS944:Yes)、それ以上のリトライ動作を行わずに物理ページセット処理をエラー終了する。カウンタkの値が「4」になっていない場合には(ステップS944:No)、カウンタkの値に「1」を加算して(ステップS945)、ステップS934以降の処理を繰り返す。
図19は、本技術の実施の形態におけるメモリ300のリセット処理の処理手順の一例を示す流れ図である。このリセット処理は、ステップS923の処理内容に相当する。
このリセット処理は、図18により説明したセット処理と同様の手順となっている。ただし、セット処理ではステップS932においてセット対象となるメモリセルを特定していたが、このリセット処理ではステップS952においてリセット対象となるメモリセルを特定する。そして、その特定されたリセット対象について、ステップS955においてグループ毎のリセット処理が行われる。それ以外の点については、図18により説明したセット処理と同様であるため、詳細な説明は省略する。
図20は、本技術の実施の形態におけるリードリクエスト処理の処理手順の一例を示す流れ図である。このリードリクエスト処理は、ステップS814における要求に応答して開始される。
リクエスト処理部360は、制御インターフェース309からリードリクエストと物理ページアドレスを受信すると、物理ページリード処理を開始する(ステップS971)。すなわち、リクエスト処理部360は、プレート制御部320、ロウ制御部311、ライト制御部331に制御信号を供給して、指定された物理アドレスから528バイトのデータを読み出す。読み出されたデータは、リードデータとしてリードデータバッファ342に転送されて保持される。
リクエスト処理部360は、リードデータバッファ342に保持された528バイトのデータを、制御インターフェース309を介してメモリコントローラ200に転送する(ステップS972)。その後、リクエスト処理部360は、リードリクエスト処理を終了する。
このように、本技術の第1の実施の形態では、本来LRSであるべきビットが劣化によりHRSと判断されてしまったエラー数Ehrsが所定数を超えた場合に、セット動作とリセット動作のうちセット動作のみをリフレッシュ処理として実行する。これにより、全てのメモリセルではなく、劣化したLRSとなっているメモリセルをデータの書換えが必要なメモリセルとして選別して書き直すことができる。
[第1の変形例(データ転送とリフレッシュ処理の順序)]
上述の第1の実施の形態では、ホストコンピュータ100に対してデータ転送(ステップS833)をする前にリフレッシュ処理を行うこととしたが、このデータ転送の後にリフレッシュ処理を行うようにしてもよい。
[第2の変形例(エラー数の基準を可変)]
上述の第1の実施の形態では、全エラー数Eallの基準を「5」、エラー数Ehrsの基準を「2」としたが、これらは固定値ではなく可変にしてもよい。一般的に、不揮発性メモリは、書換え回数が多いほどセルのデータ保持特性は悪くなる。したがって、LRSのセルは書換え回数が多いと、少ないリード回数でデータが正常に読めなくなる可能性がある。一方、HRSのセルはデータが保持できる時間が短くなる可能性がある。そこで、物理アドレス毎にデータの更新回数をカウントし、物理アドレスと更新回数とを対応付けたテーブルをリフレッシュ情報管理部250に保持しておくこととする。そして、ステップS823およびS824において処理を行っている物理アドレスに対応する書換え回数を取得して、その書換え回数に応じた基準をリフレッシュ情報管理部250のテーブルから取得するようにしてもよい。例えば、書換え回数が0回から50000回であれば、上述の実施の形態と同様に、全エラー数Eallの基準を「5」、エラー数Ehrsの基準を「2」とする。また、書換え回数が50001回から100000回であれば、例えば、全エラー数Eallの基準を「4」、エラー数Ehrsの基準を「2」とする。また、書換え回数が10001回を超えた場合には、例えば、全エラー数Eallの基準を「4」、エラー数Ehrsの基準を「3」とする。
[第3の変形例(ホストコンピュータによる通知に基づく制御)]
上述の第1の実施の形態では、検出されたエラー数のみに基づいて、リフレッシュ処理の実行有無の判断や、第1または第2リフレッシュリクエストの切替えを判断したが、ホストコンピュータ100から判断の条件を受け取るようにしてもよい。すなわち、ホストコンピュータ100が無効となったデータの論理アドレスを通知した場合、メモリコントローラ200は通知された論理アドレスのリフレッシュを実行しないように制御してもよい。このような通知として、例えば、SATA Revision 3.1で規定されるTRIMコマンドや、NVM EXPRESS Revision 1.1で規定されるDataset Managementコマンド等を想定することができる。また、ホストコンピュータ100が、データの書換えが頻繁に実行される論理アドレスを通知した場合、メモリコントローラ200は通知された論理アドレスのリフレッシュ処理については、全て第1リフレッシュリクエストとして扱うようにしてもよい。このような通知として、例えば、NVM EXPRESS Revision 1.1で規定されるDataset Managementコマンド等を想定することができる。
<2.第2の実施の形態>
上述の第1の実施の形態では、リードコマンドの実行中にリフレッシュ処理を行っていたが、リードコマンドの実行後にリフレッシュ処理を行うようにしてもよい。この場合、エラー情報を受け渡すための処理が必要になる。以下では、リードコマンドの実行後にリフレッシュ処理を行う例について第2の実施の形態として説明する。なお、情報処理システムとしての構成は第1の実施の形態と同様であるため、詳細な説明は省略する。
[情報処理システムの動作]
図21は、本技術の第2の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。
このリードコマンド処理は、図14により説明した第1の実施の形態と基本的には同様の手順となっている。ただし、第1の実施の形態ではエラー訂正後にリフレッシュ処理(ステップS820)を実行していたが、この第2の実施の形態では全エラー数Eallが「5」より大きいか否かを判断する(ステップS831)。そして、全エラー数Eallが「5」より大きい場合に(ステップS831:Yes)、エラー情報をリフレッシュ情報管理部250に保持する(ステップS832)。このエラー情報は、エラーが発生した物理アドレスと、ステップS815でカウントしたエラー数Ehrsとを対応付けたものである。リフレッシュ情報管理部250は、このエラー情報をFIFO(先入れ先出し)方式によって保持することにより、エラーの発生順にリフレッシュ処理をすることが可能となる。
図22は、本技術の第2の実施の形態におけるメモリコントローラ200のリフレッシュ処理の処理手順の一例を示す流れ図である。上述の第1の実施の形態ではリードコマンド処理の一部(ステップS820)として実行されていたが、この第2の実施の形態ではメモリコントローラ200が任意のタイミングで自発的に行う。例えば、メモリコントローラ200がホストコンピュータ100からコマンドを受け取っていない等、メモリコントローラ200側で処理が何も行われていない状態で、自発的にリフレッシュ処理を行うことが想定される。
プロセッサ210は、リフレッシュ処理対象となる物理アドレスを選択する(ステップS831)。この第2の実施の形態では、プロセッサ210は、リフレッシュ情報管理部250に保持されたエラー情報をFIFOの先頭から順に読み出し、そのエラー情報に含まれる物理アドレスをリフレッシュ処理対象として選択する。
プロセッサ210は、選択した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS832)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた528バイトである。
ECC処理部240は、保持されている528バイトのデータについてエラー訂正を行う(ステップS833)。
プロセッサ210は、ステップS831で選択した物理アドレスに対応するエラー数Ehrsが2ビットより多いか否かを判定する(ステップS834)。エラー数Ehrsが2ビットより多い場合には(ステップS834:Yes)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第1リフレッシュリクエストを要求する(ステップS835)。この第1リフレッシュリクエストの処理は、メモリ300において図16により説明した手順で行われる。一方、エラー数Ehrsが2ビット以下の場合には(ステップS834:No)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第2リフレッシュリクエストを要求する(ステップS836)。この第2リフレッシュリクエストの処理は、メモリ300において図17により説明した手順で行われる。第1リフレッシュリクエストまたは第2リフレッシュリクエストで指定される物理アドレスは、ステップS831で選択された物理アドレスである。
プロセッサ210は、第1リフレッシュリクエストまたは第2リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS837)。エラーが発生していなければ(ステップS837:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS837:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS838)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS839)。書き込まれるデータは、ECC処理部240で保持しているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS839−1)。
プロセッサ210は、ホストコンピュータ100から受信したコマンドであって、未処理のコマンドが存在するか否かを判定する(ステップS841)。受信したコマンドで未処理のコマンドが存在する場合には(ステップS841:Yes)、さらに、リフレッシュ情報管理部250で管理する物理アドレスのなかで未だリフレッシュ処理が実行されていない物理アドレスが存在するか否かを判定する(ステップS842)。そのような物理アドレスが存在する場合には(ステップS842:Yes)、ステップS831以降の処理を繰り返す。そのような物理アドレスが存在しない場合には(ステップS842:No)、このリフレッシュ処理を終了する。
このように、本技術の第2の実施の形態によれば、メモリコントローラ200側で処理が何も行われていない状態で自発的にリフレッシュ処理を行うことにより、リードコマンド処理の性能を低下させることなくリフレッシュ処理を行うことができる。
[第1の変形例(エラー情報の管理方式)]
上述の第2の実施の形態では、物理アドレスとエラー数EhrsとをFIFOにより管理する例を示したが、FIFO以外の方式により管理するようにしてもよい。この場合、ステップS831において物理アドレスを選択する手法として、物理アドレスの値の小さい順または大きい順に選択する等の手法を採用することができる。
また、エラー情報として、RAM220において物理アドレスを保持するようにしてもよい。この場合、リフレッシュ処理では、ステップS833の処理に加えて、エラー訂正実行時に本来「1」であるべきビットが劣化により「0」と読み出されたビット数Ehrsのカウントを行い、ステップS834の判定に使用する。
[第2の変形例(エラー数の基準を可変)]
この第2の実施の形態においても、上述の第1の実施の形態と同様に、全エラー数Eallの基準、および、エラー数Ehrsの基準を、可変にしてもよい。
[第3の変形例(ホストコンピュータによる通知に基づく制御)]
この第2の実施の形態においても、上述の第1の実施の形態と同様に、ホストコンピュータ100から判断の条件を受け取るようにしてもよい。
<3.第3の実施の形態>
上述の第1および第2の実施の形態では、劣化した低抵抗状態のエラー数Ehrsに基づいてリフレッシュ処理の切替えを行っていたが、この第3の実施の形態では、ライト前後の高抵抗状態のビット数に基づいてリフレッシュ処理の切替えを行う。すなわち、この第3の実施の形態では、データ書き込み時に、512バイトのデータに含まれる「0」(HRS)の数をビット単位でカウントして、その値Whrsを保持しておく。そして、読み出したデータに含まれる「0」(HRS)の数をカウントした値Rhrsを生成して値Whrsと比較する。これにより、値Whrsと値Rhrsとの差が所定数を超える場合に第1リフレッシュ処理となるようにリフレッシュ処理の切替えを行う。なお、情報処理システムとしての構成は第1および第2の実施の形態と同様であるため、詳細な説明は省略する。
[データ構造]
図23は、本技術の第3の実施の形態におけるメモリセルアレイ310に記憶される物理ページの構造の一例を示す図である。
上述の第1の実施の形態では、データ601と冗長ビット603との間の3バイトの領域を未使用の領域としていたが、この第3の実施の形態では書込みを行った際の高抵抗状態のビット数Whrsを記憶する領域612として用いる。なお、以下ではこの領域612はECCで保護されていないデータであると想定しているが、ECCでの保護対象としてもよい。
[情報処理システムの動作]
図24は、本技術の第3の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。
このリードコマンド処理は、図14により説明した第1の実施の形態と基本的には同様の手順となっている。ただし、第1の実施の形態ではECC処理部240がステップS815においてエラー数をカウントしていたが、この第3の実施の形態ではこれに代えて、プロセッサ210がデータに含まれる「0」の数をビット単位でカウントする(ステップS816)。ここでカウントされた値をRhrsとする。そして、このカウントされた値Rhrsと、読み出されたデータに含まれる領域612の値Whrsとが参照されて、リフレッシュ処理が行われる(ステップS850)。
図25は、本技術の第3の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS850)の処理手順の一例を示す流れ図である。
プロセッサ210は、値Rhrsから値Whrsを減算した数の絶対値を計算して、その値が「5」より多いか否かを判定する(ステップS853)。その値が「5」以下の場合にはリフレッシュ処理を終了する(ステップS853:No)。
プロセッサ210は、値Rhrsと値Whrsとを比較して大小関係を判定する(ステップS854)。これにより、劣化したLRSのセルの数と、劣化したHRSのセルの数を比較することができる。値Rhrsの方が大きい場合には(ステップS854:Yes)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第1リフレッシュリクエストを要求する(ステップS855)。この第1リフレッシュリクエストの処理は、メモリ300において図16により説明した手順で行われる。一方、値Rhrsの方が大きくない場合には(ステップS854:No)、プロセッサ210はメモリ300に対してそのエラーを発生した物理アドレスについて第2リフレッシュリクエストを要求する(ステップS856)。この第2リフレッシュリクエストの処理は、メモリ300において図17により説明した手順で行われる。
プロセッサ210は、第1リフレッシュリクエストまたは第2リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS857)。エラーが発生していなければ(ステップS857:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS857:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS858)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS859)。書き込まれるデータは、ECC処理部240で保持しているエラー訂正済みの528バイトのデータである。また、このとき、プロセッサ210は、データに含まれる「0」の数をカウントして、領域612に値Whrsとして書き込む。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS859−1)。
このように、本技術の第3の実施の形態によれば、書込みの前後における「0」(HRS)の数をカウントして比較することにより、リフレッシュ処理の切替えを制御することができる。
[変形例(リードコマンドの実行後にリフレッシュ処理を行う例)]
上述の第3の実施の形態では、リードコマンドの実行中にリフレッシュ処理を行っていたが、第2の実施の形態と同様にリードコマンドの実行後にリフレッシュ処理を行うようにしてもよい。これにより、メモリコントローラ200側で処理が何も行われていない状態で自発的にリフレッシュ処理を行って、リードコマンド処理の性能を低下させることなくリフレッシュ処理を行うことができる。
<4.第4の実施の形態>
上述の実施の形態では、劣化した低抵抗状態のエラー数やライト前後の高抵抗状態のビット数といった具体的な値に基づいてリフレッシュ処理の切替えを制御していたが、この第4の実施の形態では測定量に基づいてメモリセルの劣化状態を判断する。不揮発性メモリのメモリセルの状態が劣化する要因として、LRSのメモリセルの場合はリードと経年変化、HRSのメモリセルの場合は経年変化が挙げられる。そこで、リード回数に応じてLRSのメモリセルのリフレッシュを行い、データ書込み後の経過時間に応じてLRSとHRSのメモリセルのリフレッシュを行う方法の適用を検討する。
この第4の実施の形態では、一例として、ストレージシステムとして保証するビットエラーレートUBER(Uncorrectable Bit Error Rate)については、「UBER<10-10」を想定する。すなわち、メモリコントローラ200のECC処理部240は、メモリ300から読み出されるデータのビットエラーレートRBER(Raw Bit Error Rate)が「RBER<10-4」である場合に、「UBER<10-10」を保証する訂正能力があるものとする。ここで、UBERは訂正不可能であるとしてホストコンピュータ100にエラー報告される率であり、RBERはメモリ300から読み出されたエラー訂正前の状態におけるエラー発生率である。不揮発性メモリの特性としては、データ書き込み直後には「RBER<10-5」であるが、10000回のリードを経るとLRSのメモリセルは、「RBER<10-4」となる。また、5年間データを保持したままの状態を継続すると、LRSおよびHRSのメモリセルはともに、「RBER<10-4」となる。
そこで、この第4の実施の形態では、10000回のリード後にLRSのメモリセルについて第1リフレッシュリクエストを要求し、データ書込み後5年した際にLRSとHRSのメモリセルについて第2リフレッシュリクエストを要求するものとする。第1リフレッシュリクエストにより実行されるリフレッシュ処理は、リードコマンド実行中に行うものとする。一方、第2リフレッシュリクエストにより実行されるリフレッシュ処理は、ストレージシステム(メモリコントローラ200およびメモリ300)のパワーオン直後に実行されるものとする。
また、この第4の実施の形態では、ストレージシステムとしては内部に時計を備えず、ホストコンピュータ100からも時間が通知されないという条件における適用を試みる。この第4の実施の形態のストレージシステムのユースケースとしては、定期的に電源のオンとオフが行われるシステムを想定し、一例として、1日に1回、ストレージシステムの電源のオンとオフが行われるケースを想定する。
経過時間を測定するための代替方法として、この第4の実施の形態では、ストレージシステムのパワーがオンされた回数を使用する。この第4の実施の形態のストレージシステムでは、プロセッサ210が、ストレージシステムの製造後に、パワーオンされた回数をカウントして、リフレッシュ情報管理部250に保持する。この「パワーオン回数」は、ストレージシステムのパワーがオンされるたびにインクリメントされ、クリアされない値である。なお、ストレージシステムに時計を備える場合や、ホストコンピュータ100からストレージシステムに時間が通知される場合には、直接更新日時を管理してもよい。
[情報管理テーブル]
図26は、本技術の第4の実施の形態におけるリフレッシュ情報管理テーブルの構成例を示す図である。このリフレッシュ情報管理テーブルは、リフレッシュ情報管理部250に保持される。このリフレッシュ情報管理テーブルでは、物理アドレスごとに、リード回数およびデータ更新時のパワーオン回数を管理する。
「リード回数」は、対応する物理アドレスから読み出しが行われた回数を示すものである。この「リード回数」は、対応する物理アドレスに書き込まれたデータが更新された際、または、第1または第2リフレッシュリクエスト処理が実行された際に、「0」にクリアされる。この「リード回数」は、リードリクエストが発生した際に、インクリメント(「1」加算)される。
「データ更新時のパワーオン回数」は、対応する物理アドレスに書き込まれたデータが更新等された際のパワーオン回数を示すものである。この「データ更新時のパワーオン回数」は、対応する物理アドレスに書き込まれたデータが更新された際、または、第2リフレッシュリクエスト処理が実行された際に、リフレッシュ情報管理部250に保持される「パワーオン回数」に置換される。上述のように、リフレッシュ情報管理部250に保持される「パワーオン回数」はストレージシステムのパワーがオンされるたびにインクリメントされ、クリアされない値である。そのため、回数を単位としたタイムスタンプの役割を果たす。したがって、リフレッシュ情報管理部250に保持される「パワーオン回数」から「データ更新時のパワーオン回数」を減じることにより、データ更新以降にメモリシステムがパワーオンされた回数を取得することができる。
[情報処理システムの動作]
図27は、本技術の第4の実施の形態におけるメモリコントローラ200のリードコマンド処理手順の一例を示す流れ図である。
このリードコマンド処理は、図14により説明した第1の実施の形態と基本的には同様の手順となっている。ただし、以下に説明するように、リフレッシュ処理(ステップS860)の内容が異なっている。
図28は、本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS860)の処理手順の一例を示す流れ図である。
プロセッサ210は、リフレッシュ情報管理テーブル内の、データの読出し要求を行った物理アドレスに対応する「リード回数」をインクリメントする(ステップS861)。
プロセッサ210は、インクリメントした「リード回数」が10000回に達したか否かを判定する(ステップS862)。「リード回数」が10000回に達していない場合には(ステップS862:No)、リフレッシュ処理を行わずに終了する。「リード回数」が10000回に達した場合には(ステップS862:Yes)、プロセッサ210はメモリ300に対してその物理アドレスについて第1リフレッシュリクエストを要求する(ステップS863)。
プロセッサ210は、第1リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS864)。エラーが発生している場合には(ステップS864:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS865)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS866)。書き込まれるデータは、ECC処理部240で保持しているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS866−1)。一方、エラーが発生していなければ(ステップS864:No)、これらの処理は行われない。
プロセッサ210は、第1リフレッシュリクエストを要求した物理アドレスに対応する「リード回数」を「0」にクリアして(ステップS867)、リフレッシュ処理を終了する。
図29は、本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の一例を示す流れ図である。なお、このリフレッシュ実行確認処理は、メモリコントローラ200の電源が投入された直後に実行される。
プロセッサ210は、リフレッシュ情報管理テーブルで管理されている物理アドレスを小さい順に選択して、その選択された物理アドレスの「データ更新時のパワーオン回数」の値を取得する(ステップS871)。
プロセッサ210は、リフレッシュ情報管理部250で保持している「パワーオン回数」から、ステップS871で取得した「データ更新時のパワーオン回数」を減算し、その数が1825回に達したか否かを判断する(ステップS872)。この1825回は、5年分のパワーオン回数に相当するものである。1825回に達した場合には(ステップS872:Yes)、リフレッシュ処理(ステップS880)を実行する。そして、ステップS871で選択された物理アドレスの「データ更新時のパワーオン回数」をリフレッシュ情報管理部250で保持している「パワーオン回数」に更新する(ステップS874)。1825回に達していない場合には(ステップS872:No)、これらの処理は実行されない。
プロセッサ210は、リフレッシュ情報管理テーブルで管理されている全ての物理アドレスについて処理が終了したか否かを判定する(ステップS875)。全ての物理アドレスについて処理が終了していない場合には(ステップS875:No)、ステップS871以降の処理を繰り返す。全ての物理アドレスについて処理が終了している場合には(ステップS875:Yes)、リフレッシュ実行確認処理を終了する。
図30は、本技術の第4の実施の形態におけるメモリコントローラ200のリフレッシュ処理(ステップS880)の処理手順の一例を示す流れ図である。
プロセッサ210は、ステップS871で選択した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS882)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた528バイトである。
メモリ300から読み出された528バイトのデータは、ECC処理部240へ転送される。ECC処理部240は、528バイトのデータのエラー訂正を行い、その訂正結果を保持する(ステップS883)。
プロセッサ210は、メモリ300に対してそのエラーを発生した物理アドレスについて第2リフレッシュリクエストを要求する(ステップS886)。この第2リフレッシュリクエストの処理は、メモリ300において図17により説明した手順で行われる。この第2リフレッシュリクエストで指定される物理アドレスは、ステップS871で選択した物理アドレスであり、転送されるデータはECC処理部240に保持されている訂正後の528バイトのデータである。
プロセッサ210は、第2リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS887)。エラーが発生していなければ(ステップS887:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS887:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS888)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS889)。書き込まれるデータは、ECC処理部240に保持されているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS889−1)。
このように、本技術の第4の実施の形態では、物理アドレス毎に管理されたリード回数に基づいて第1リフレッシュリクエストを要求し、物理アドレス毎に管理されたパワーオン回数に基づいて第2リフレッシュリクエストを要求する。これにより、メモリ300に関する具体的な値を使用せずに、測定量に基づいてメモリセルの劣化状態を判断して、リフレッシュ処理の切替えを制御することができる。
[第1の変形例(リード回数またはパワーオン回数を可変)]
上述の第4の実施の形態では、リード回数の基準を「10000」、パワーオン回数の基準を「1825回(5年)」としたが、これらは固定値ではなく可変にしてもよい。一般的に、不揮発性メモリは、書換え回数が多いほどセルのデータ保持特性は悪くなる。そこで、例えば、書換え回数が0回から50000回であれば、上述の実施の形態と同様に、リード回数の基準を「10000」、パワーオン回数の基準を「1825回(5年)」とする。また、書換え回数が50001回から100000回であれば、例えば、リード回数の基準を「5000」、パワーオン回数の基準を「1095回(3年)」とする。また、書換え回数が10001回を超えた場合には、例えば、リード回数の基準を「3000」、パワーオン回数の基準を「365回(1年)」とする。
[第2の変形例(ホストコンピュータによる通知に基づく制御)]
この第4の実施の形態においても、上述の第1の実施の形態と同様に、ホストコンピュータ100から判断の条件を受け取るようにしてもよい。
<5.第5の実施の形態>
上述の第4の実施の形態では、リード回数を測定量として、これに基づいてメモリセルの劣化状態を判断していた。ここで、LRSとHRSのそれぞれのセルの状態が変化する要因としては、LRSのセルとHRSのセルとがともに経年変化する点が挙げられる。そこで、この第5の実施の形態では、リフレッシュが行われた時点からの経過期間を測定量として、メモリセルの劣化状態を判断する。
上述のように、メモリコントローラ200のECC処理部240は、メモリ300から読み出されるデータのビットエラーレートRBER(Raw Bit Error Rate)が「RBER<10-4」である場合に、「UBER<10-10」を保証する訂正能力があるものとする。この第5の実施の形態で想定する不揮発性メモリの特性としては、データ書き込み直後には「RBER<10-5」であり、2年間データを保持したままの状態を継続すると、LRSのセルは「RBER<10-4」となるものとする。また、5年間データを保持したままの状態を継続した場合、HRSのメモリセルは「RBER<10-4」となるものとする。そこで、この第5の実施の形態では、データ書込み後2年経過ごとにLRSのセルのリフレッシュ(第1リフレッシュ処理)を行い、データ書込み後5年経過ごとにLRSおよびHRSのセルのリフレッシュ(第2リフレッシュ処理)を行う。
この第5の実施の形態では、ストレージシステムは、ストレージシステムへの電源の投入時と、電源が供給されている間は1日1回、ホストコンピュータ100から、日付を通知するためコマンドが発行されることを想定する。また、ストレージシステムは、ホストコンピュータ100から通知された日付のうち最新の日付を、リフレッシュ情報管理部250に保持する。
メモリコントローラ200は、ホストコンピュータ100から日付を通知するためのコマンドを受信すると、リフレッシュ情報管理部250に保持されている日付を更新し、コマンドの実行終了をホストコンピュータ100に通知する。メモリコントローラ200は、日付を通知するためのコマンドの実行終了をホストコンピュータ100に通知した後、リフレッシュ情報管理部250で管理している最新の日付が更新されると、リフレッシュ実行確認処理を開始する。このリフレッシュ実行確認処理では、それぞれの物理ページに対してリフレッシュ処理を実行するか否かが判別される。
[情報管理テーブル]
図31は、本技術の第5の実施の形態におけるリフレッシュ情報管理テーブルの構成例を示す図である。このリフレッシュ情報管理テーブルは、リフレッシュ情報管理部250に保持される。この第5の実施の形態におけるリフレッシュ情報管理テーブルでは、物理アドレスごとに、LRSセル最終リフレッシュ日およびHRSセル最終リフレッシュ日を管理する。
「LRSセル最終リフレッシュ日」は、その物理アドレスに該当するセルのうち、LRSとなっているセルが最後にリフレッシュされた日を示すものである。「HRSセル最終リフレッシュ日」は、その物理アドレスに該当するセルのうち、HRSとなっているセルが最後にリフレッシュされた日を示すものである。
[情報処理システムの動作]
図32は、本技術の第5の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の一例を示す流れ図である。
まず、プロセッサ210は、リフレッシュ情報管理テーブルで管理されているエントリを物理アドレスの小さい順に選択して、「LRSセル最終リフレッシュ日」の値と「HRSセル最終リフレッシュ日」の値とを取得する(ステップS711)。そして、「HRSセル最終リフレッシュ日」とリフレッシュ情報管理部250で保持している最新の日付とによって、「HRSセル最終リフレッシュ日」から5年が経過しているかを判断する(ステップS712)。
「HRSセル最終リフレッシュ日」から5年が経過している場合には(ステップS712:Yes)、第2リフレッシュ処理(ステップS730)を実行する。その後、「LRSセル最終リフレッシュ日」および「HRSセル最終リフレッシュ日」の値を、リフレッシュ情報管理部250で保持している最新の日付に更新する(ステップS718)。
「HRSセル最終リフレッシュ日」から5年が経過していない場合には(ステップS712:No)、「LRSセル最終リフレッシュ日」から2年が経過しているかを判断する(ステップS71)。その際、「LRSセル最終リフレッシュ日」とリフレッシュ情報管理部250で保持している最新の日付とが参照される。「LRSセル最終リフレッシュ日」から2年が経過している場合には(ステップS714:Yes)、第1リフレッシュ処理(ステップS720)を実行する。このとき、第1リフレッシュ処理でエラーが発生した場合には(ステップS715:Yes)、HRSとLRSのセルはリフレッシュが実行されたことになるため、HRSセル最終リフレッシュ日とLRSセル最終リフレッシュ日を更新する(ステップS718)。一方、第1リフレッシュ処理でエラーが発生しなかった場合には(ステップS715:No)、「LRSセル最終リフレッシュ日」の値を、リフレッシュ情報管理部250で保持している最新の日付に更新する(ステップS716)。

一方、「HRSセル最終リフレッシュ日」から5年が経過していなく、「LRSセル最終リフレッシュ日」から2年が経過していない場合には(ステップS714:No)、リフレッシュ処理は行われない。
リフレッシュ情報管理テーブルで管理されている物理アドレスの1つのエントリについて処理が行われると、全てのエントリについて処理されるまで物理アドレスの小さい順に各エントリが選択されて処理されていく(ステップS719)。
図33は、本技術の第5の実施の形態におけるメモリコントローラ200の第1リフレッシュ処理(ステップS720)の処理手順の一例を示す流れ図である。
プロセッサ210は、ステップS711で選択した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS722)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた528バイトである。
メモリ300から読み出された528バイトのデータは、ECC処理部240へ転送される。ECC処理部240は、528バイトのデータのエラー訂正を行い、その訂正結果を保持する(ステップS723)。
プロセッサ210は、メモリ300に対してそのエラーを発生した物理アドレスについて第1リフレッシュリクエストを要求する(ステップS726)。この第1リフレッシュリクエストの処理は、メモリ300において図16により説明した手順で行われる。この第1リフレッシュリクエストで指定される物理アドレスは、ステップS711で選択した物理アドレスであり、転送されるデータはECC処理部240に保持されている訂正後の528バイトのデータである。
プロセッサ210は、第1リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS727)。エラーが発生していなければ(ステップS727:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS727:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS728)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS729)。書き込まれるデータは、ECC処理部240に保持されているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS729−1)。
図34は、本技術の第5の実施の形態におけるメモリコントローラ200の第2リフレッシュ処理(ステップS730)の処理手順の一例を示す流れ図である。
プロセッサ210は、ステップS711で選択した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS732)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた528バイトである。
メモリ300から読み出された528バイトのデータは、ECC処理部240へ転送される。ECC処理部240は、528バイトのデータのエラー訂正を行い、その訂正結果を保持する(ステップS733)。
プロセッサ210は、メモリ300に対してそのエラーを発生した物理アドレスについて第2リフレッシュリクエストを要求する(ステップS736)。この第2リフレッシュリクエストの処理は、メモリ300において図17により説明した手順で行われる。この第2リフレッシュリクエストで指定される物理アドレスは、ステップS711で選択した物理アドレスであり、転送されるデータはECC処理部240に保持されている訂正後の528バイトのデータである。
プロセッサ210は、第2リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS737)。エラーが発生していなければ(ステップS737:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS737:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS738)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS739)。書き込まれるデータは、ECC処理部240に保持されているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS739−1)。
[第1の変形例]
上述の第5の実施の形態では、メモリコントローラ200がホストコンピュータ100から日付の通知を受けていたが、メモリコントローラ200に時計を備えている場合には、日付の通知を受けずにリフレッシュを行うことが可能である。この場合、ストレージシステムの電源の投入時と、電源が供給されている間は時計で管理している日付が変わった場合とにおいて、それぞれの物理ページに対してリフレッシュ処理を実行するか否かを判別するために、上述のリフレッシュ実行確認処理を開始する。
[第2の変形例]
上述の第5の実施の形態では、セットのみを行う第1リフレッシュ処理と、セットおよびリセットを行う第2リフレッシュ処理とを用いる例を示したが、他の組合せであっても同様の内容を実現することができる。以下では、リセットのみを行う第3リフレッシュ処理と、セットのみを行う第1リフレッシュ処理とを用いる例を第2の変形例として説明する。
図35は、本技術の第5の実施の形態におけるメモリコントローラ200のリフレッシュ実行確認処理手順の変形例を示す流れ図である。この変形例は、図32において説明したものとは、ステップS712の分岐先とステップS740およびS713とが異なっているが、その他の点については同様である。
「HRSセル最終リフレッシュ日」から5年が経過していない場合には(ステップS712:No)、図32の例と同様にステップS714以降の処理を行う。一方、「HRSセル最終リフレッシュ日」から5年が経過している場合には(ステップS712:Yes)、第3リフレッシュ処理(ステップS740)を実行する。このとき、第3リフレッシュ処理でエラーが発生した場合には(ステップS712−1:Yes)、HRSとLRSのセルはリフレッシュが実行されたことになるため、HRSセル最終リフレッシュ日とLRSセル最終リフレッシュ日を更新する(ステップS717)。一方、第3リフレッシュ処理でエラーが発生しなかった場合には(ステップS712−1:No)、「HRSセル最終リフレッシュ日」の値を、リフレッシュ情報管理部250で保持している最新の日付に更新する(ステップS713)。
図36は、本技術の第5の実施の形態におけるメモリコントローラ200の第3リフレッシュ処理(ステップS740)の処理手順の一例を示す流れ図である。
プロセッサ210は、ステップS711で選択した物理アドレスを指定して、メモリ300に対してリードリクエストを要求する(ステップS742)。メモリ300から読み出されるデータは、未使用領域と冗長ビットを含めた528バイトである。
メモリ300から読み出された528バイトのデータは、ECC処理部240へ転送される。ECC処理部240は、528バイトのデータのエラー訂正を行い、その訂正結果を保持する(ステップS743)。
プロセッサ210は、メモリ300に対してそのエラーを発生した物理アドレスについて第3リフレッシュリクエストを要求する(ステップS746)。この第3リフレッシュリクエストのメモリ300における処理については後述する。この第3リフレッシュリクエストで指定される物理アドレスは、ステップS711で選択した物理アドレスであり、転送されるデータはECC処理部240に保持されている訂正後の528バイトのデータである。
プロセッサ210は、第3リフレッシュリクエストに対する処理においてエラーが発生したか否かを判定する(ステップS747)。エラーが発生していなければ(ステップS747:No)、リフレッシュ処理を終了する。エラーが発生している場合には(ステップS747:Yes)、プロセッサ210は、論理アドレスに割り当てられていないメモリ300の物理アドレスを取得する(ステップS748)。そして、その取得した物理アドレスを指定してメモリ300にライトリクエストを要求し、データの書込みを行う(ステップS749)。書き込まれるデータは、ECC処理部240に保持されているエラー訂正済みの528バイトのデータである。そして、アドレス変換テーブル中の、リフレッシュ処理を行った論理アドレスに対応する物理アドレスの値を、書込みを行った物理アドレスの値に更新する(ステップS749−1)。
図37は、本技術の第5の実施の形態におけるメモリ300の第3リフレッシュリクエスト処理の処理手順の一例を示す流れ図である。この第3リフレッシュリクエスト処理は、ステップS746における要求に応答して開始される。
リクエスト処理部360は、メモリコントローラ200から制御インターフェース309を通して、第3リフレッシュリクエストと物理アドレスを受信すると、第3リフレッシュリクエストの処理を開始する。第3リフレッシュリクエストの処理に必要な528バイトのデータは、制御インターフェース309からライトデータバッファ341に転送され、保持されている。物理アドレスは、制御インターフェース309からリクエスト処理部360に転送されて、保持されている。
リクエスト処理部360は、リセット処理を実行する(ステップS751)。このリセット処理は、図19において説明したものと同様である。
リセット処理終了後、リクエスト処理部360は、そのリセット処理が正常に終了したか否かを判定する(ステップS752)。正常終了した場合には(ステップS752:Yes)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第3リフレッシュリクエストが正常に終了した旨を通知する(ステップS755)。一方、エラー終了した場合には(ステップS752:No)、リクエスト処理部360は制御インターフェース309を介してメモリコントローラ200に、第3リフレッシュリクエストがエラー終了した旨を通知する(ステップS756)。その後、リクエスト処理部360は、第3リフレッシュリクエスト処理を終了する。
<6.その他の変形例>
[第1の変形例(リセット閾値とセット閾値)]
上述の第1乃至第4の実施の形態では、図5に示したように、LRSとHRSの中間位置にあるリード閾値を用いてリードを行っていた。これに対し、リフレッシュの際には、通常の場合より厳しい閾値を用いることにより、抵抗状態の分布を以下のように改善することができる。
図38は、本技術の実施の形態の変形例におけるメモリセル313の抵抗分布と閾値との関係を示す図である。この図にはLRSとHRSの中間位置にあるリード閾値に加えて、HRS寄りに設けられたリセット閾値と、LRS寄りに設けられたセット閾値とが示されている。
第1リフレッシュリクエスト処理のセット動作において、セット閾値を使ってデータを読み出すと、LRSのセルのうち、HRSの状態に近いセルもパルスを印可する対象とするセルとして検出される。したがって、リード閾値付近のLRSのセルも高いLRSの状態に戻されるため、強力なリフレッシュが実行される。
さらに、第2リフレッシュリクエスト処理のセット動作においてセット閾値を使用することに加えて、リセット処理においてもリセット閾値を用いることで、第2リフレッシュリクエスト処理においても、強力なリフレッシュ処理が実行される。
[第2の変形例(複数の状態)]
上述の実施の形態では、LRSとHRSの2つの状態により記憶状態を表すメモリセルを想定した。しかし、本技術は、2つの状態よりも多くの状態をとり得るメモリセルで構成されたメモリにも適用可能である。そのようなメモリセルにより構成されたメモリの例として、1つのメモリセルに2ビットのデータを記憶することが可能なメモリが挙げられる。そのようなメモリのメモリセルの抵抗分布図を図39に示す。この図39は、本技術の実施の形態の変形例における4つの状態を記憶するための抵抗分布図を示す図である。
状態Aの範囲の抵抗値のメモリセルは"11"を記憶状態として有することを意味する。状態Bの範囲の抵抗値のメモリセルは"01"を記憶状態として有することを意味する。状態Cの範囲の抵抗値のメモリセルは"00"を記憶状態として有することを意味する。状態Dの範囲の抵抗値のメモリセルは"10"を記憶状態として有することを意味する。リードによってメモリセルの状態が劣化した場合、状態Aのメモリセルは状態Bに、状態Bのメモリセルは状態Cに、状態Cのメモリセルは状態Dに、それぞれ遷移する。
本技術を適用することにより、劣化した状態Aのメモリセルが、状態Bとして検出された場合は、第1リフレッシュリクエスト処理により状態Aに遷移し、メモリセルに記録されたデータの訂正を行うことが可能である。また、劣化した状態Bのメモリセルが、状態Aとして検出された場合は、第2リフレッシュリクエスト処理により状態Bに遷移し、メモリセルに記録されたデータの訂正を行うことが可能である。
[まとめ]
このように、上述の実施の形態では、メモリセルの劣化状態に応じて、セット動作およびリセット動作のうちセット動作のみを行う第1リフレッシュリクエストを要求する。これにより、多くのケースにおいて第1リフレッシュリクエスト処理が実行され、第2リフレッシュリクエスト処理よりも、高速な処理を実現することができる。また、第1リフレッシュリクエスト処理では、劣化したLRSのセルにのみパルスが印可によるデータの書込みが行われる。全てのメモリセルに対してデータの書込みが行われる通常のリフレッシュ処理と比較すると、1回のリフレッシュ処理でストレスがかけられるメモリセルの数が低減されるため、例えば不揮発性メモリの長寿命化にも効果がある。
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
なお、本技術は以下のような構成もとることができる。
(1)各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイにおいて、前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
を具備する記憶制御装置。
(2)前記検出部は、前記第1の記憶状態にあるべきビットについて前記第2の記憶状態であると読み出されたビット数が所定のビット数よりも多い場合に、前記第1のタイミングを検出する
前記(1)に記載の記憶制御装置。
(3)前記検出部は、前記メモリセルアレイにおいて検出されたエラー数が所定のエラー数よりも多い場合に、前記第1のタイミングの検出を開始する
前記(1)または(2)に記載の記憶制御装置。
(4)前記検出部は、所定のデータを前記メモリセルアレイに書き込んだ際の前記第2の記憶状態のビット数と、前記書き込まれた所定のデータを前記メモリセルアレイから読み出した際の前記第2の記憶状態のビット数とを比較して、前記読み出した際の前記第2の記憶状態のビット数の方が多い場合に、前記第1のタイミングを検出する
前記(1)に記載の記憶制御装置。
(5)前記検出部は、前記書き込んだ際の前記第2の記憶状態のビット数と前記読み出した際の前記第2の記憶状態のビット数と差が所定の数よりも多い場合に、前記第1のタイミングの検出を開始する
前記(3)または(4)に記載の記憶制御装置。
(6)前記メモリセルアレイについて物理アドレス毎にリード回数を記録する情報管理部をさらに具備し、
前記検出部は、前記リード回数が所定回数に達した物理アドレスについて前記第1のタイミングを検出する
前記(1)に記載の記憶制御装置。
(7)前記情報管理部は、前記第1の動作および前記第2の動作の両者を行う書直し処理のリクエストを前記メモリセルアレイに対して要求した後に前記メモリセルアレイの電源がオンになった電源オン回数をさらに記録し、
前記検出部は、前記電源オン回数が所定回数に達すると、前記第1の動作および前記第2の動作の両者を行う書直し処理のリクエストを前記メモリセルアレイに対して要求する
前記(6)に記載の記憶制御装置。
(8)前記検出部は、前記メモリセルアレイからの読出しを行うためのリードコマンドの実行中に前記第1のタイミングの検出を行う
前記(1)から(7)のいずれかに記載の記憶制御装置。
(9)前記検出部は、前記メモリセルアレイに対するアクセスを行うためのコマンドを実行していない状態において自発的に前記第1のタイミングの検出を行う
前記(1)から(8)のいずれかに記載の記憶制御装置。
(10)前記検出部は、前記メモリセルアレイにおいて第1の書直し処理を行った後に所定期間を経過した場合に、前記第1のタイミングを検出する
前記(1)から(9)のいずれかに記載の記憶制御装置。
(11)前記検出部は、前記第1の動作および前記第2の動作の両者を行う第2の書直し処理を行う第2のタイミングをさらに検出し、
前記要求部は、前記第2のタイミングが検出された場合には前記第2の書直し処理のリクエストを前記メモリセルアレイに対して要求する
前記(1)から(10)のいずれかに記載の記憶制御装置。
(12)各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、
前記メモリセルアレイにおいて前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
を具備する記憶装置。
(13)前記メモリセルアレイの各ビットは可変抵抗素子からなり、
前記第1の記憶状態は低抵抗状態であり、
前記第2の記憶状態は高抵抗状態であり、
前記第1の動作は、前記低抵抗状態に遷移させるセット動作であり、
前記第2の動作は、前記高抵抗状態に遷移させるリセット動作である
前記(12)に記載の記憶装置。
(14)各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、
前記メモリセルアレイに対してリードコマンドを発行するホストコンピュータと、
前記リードコマンドの実行に関連して前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
を具備する情報処理システム。
(15)各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイにおいて、前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出手順と、
前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求手順と
を具備する記憶制御方法。
100 ホストコンピュータ
200 メモリコントローラ
201 ホストインターフェース
203 メモリインターフェース
210 プロセッサ
220 RAM
230 ROM
240 ECC処理部
250 リフレッシュ情報管理部
300 メモリ
309 制御インターフェース
310 メモリセルアレイ
311 ロウ制御部
312 カラム制御部
313 メモリセル
314 アクセストランジスタ
315 可変セル抵抗
320 プレート制御部
331 ライト制御部
332 リード制御部
333 リフレッシュ制御部
340 バッファ
341 ライトデータバッファ
342 リードデータバッファ
343 ベリファイバッファ
350 検証処理部
360 リクエスト処理部

Claims (12)

  1. 各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイにおいて、前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
    前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
    を具備し、
    前記検出部は、所定のデータを前記メモリセルアレイに書き込んだ際の前記第2の記憶状態のビット数と、前記書き込まれた所定のデータを前記メモリセルアレイから読み出した際の前記第2の記憶状態のビット数とを比較して、前記読み出した際の前記第2の記憶状態のビット数の方が多い場合に、前記第1のタイミングを検出する
    記憶制御装置。
  2. 前記検出部は、前記書き込んだ際の前記第2の記憶状態のビット数と前記読み出した際の前記第2の記憶状態のビット数と差が所定の数よりも多い場合に、前記第1のタイミングの検出を開始する
    請求項記載の記憶制御装置。
  3. 前記検出部は、前記メモリセルアレイからの読出しを行うためのリードコマンドの実行中に前記第1のタイミングの検出を行う
    請求項1記載の記憶制御装置。
  4. 前記検出部は、前記メモリセルアレイに対するアクセスを行うためのコマンドを実行していない状態において自発的に前記第1のタイミングの検出を行う
    請求項1記載の記憶制御装置。
  5. 前記検出部は、前記第1の動作および前記第2の動作の両者を行う第2の書直し処理を行う第2のタイミングをさらに検出し、
    前記要求部は、前記第2のタイミングが検出された場合には前記第2の書直し処理のリクエストを前記メモリセルアレイに対して要求する
    請求項1記載の記憶制御装置。
  6. 各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、
    前記メモリセルアレイにおいて前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
    前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
    を具備し、
    前記検出部は、所定のデータを前記メモリセルアレイに書き込んだ際の前記第2の記憶状態のビット数と、前記書き込まれた所定のデータを前記メモリセルアレイから読み出した際の前記第2の記憶状態のビット数とを比較して、前記読み出した際の前記第2の記憶状態のビット数の方が多い場合に、前記第1のタイミングを検出する
    記憶装置。
  7. 前記検出部は、前記書き込んだ際の前記第2の記憶状態のビット数と前記読み出した際の前記第2の記憶状態のビット数との差が所定の数よりも多い場合に、前記第1のタイミングの検出を開始する
    請求項6記載の記憶装置。
  8. 前記メモリセルアレイの各ビットは可変抵抗素子からなり、
    前記第1の記憶状態は低抵抗状態であり、
    前記第2の記憶状態は高抵抗状態であり、
    前記第1の動作は、前記低抵抗状態に遷移させるセット動作であり、
    前記第2の動作は、前記高抵抗状態に遷移させるリセット動作である
    請求項記載の記憶装置。
  9. 各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイと、
    前記メモリセルアレイに対してリードコマンドを発行するホストコンピュータと、
    前記リードコマンドの実行に関連して前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出部と、
    前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求部と
    を具備し、
    前記検出部は、所定のデータを前記メモリセルアレイに書き込んだ際の前記第2の記憶状態のビット数と、前記書き込まれた所定のデータを前記メモリセルアレイから読み出した際の前記第2の記憶状態のビット数とを比較して、前記読み出した際の前記第2の記憶状態のビット数の方が多い場合に、前記第1のタイミングを検出する
    情報処理システム。
  10. 前記検出部は、前記書き込んだ際の前記第2の記憶状態のビット数と前記読み出した際の前記第2の記憶状態のビット数との差が所定の数よりも多い場合に、前記第1のタイミングの検出を開始する
    請求項9記載の情報処理システム。
  11. 各ビットが第1の動作によって第1の記憶状態に遷移し、第2の動作によって第2の記憶状態に遷移するメモリセルアレイにおいて、前記第1の動作および前記第2の動作のうち前記第1の動作のみを行う第1の書直し処理を行う第1のタイミングを検出する検出手順と、
    前記第1のタイミングが検出された場合には前記第1の書直し処理のリクエストを前記メモリセルアレイに対して要求する要求手順と
    を具備し、
    前記検出手順において、所定のデータを前記メモリセルアレイに書き込んだ際の前記第2の記憶状態のビット数と、前記書き込まれた所定のデータを前記メモリセルアレイから読み出した際の前記第2の記憶状態のビット数とを比較して、前記読み出した際の前記第2の記憶状態のビット数の方が多い場合に、前記第1のタイミングを検出する
    記憶制御方法。
  12. 前記検出手順において、前記書き込んだ際の前記第2の記憶状態のビット数と前記読み出した際の前記第2の記憶状態のビット数との差が所定の数よりも多い場合に、前記第1のタイミングの検出を開始する
    請求項11記載の記憶制御方法。
JP2013169503A 2013-08-19 2013-08-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法 Expired - Fee Related JP6149598B2 (ja)

Priority Applications (3)

Application Number Priority Date Filing Date Title
JP2013169503A JP6149598B2 (ja) 2013-08-19 2013-08-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US14/454,214 US9449684B2 (en) 2013-08-19 2014-08-07 Storage control device, storage device, information processing system, and storage control method
CN201410397194.3A CN104423896B (zh) 2013-08-19 2014-08-12 存储控制装置、存储装置、信息处理***和存储控制方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2013169503A JP6149598B2 (ja) 2013-08-19 2013-08-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法

Publications (2)

Publication Number Publication Date
JP2015038794A JP2015038794A (ja) 2015-02-26
JP6149598B2 true JP6149598B2 (ja) 2017-06-21

Family

ID=52466722

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2013169503A Expired - Fee Related JP6149598B2 (ja) 2013-08-19 2013-08-19 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法

Country Status (3)

Country Link
US (1) US9449684B2 (ja)
JP (1) JP6149598B2 (ja)
CN (1) CN104423896B (ja)

Families Citing this family (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
KR20150043800A (ko) * 2013-10-15 2015-04-23 에스케이하이닉스 주식회사 전자 장치 및 그의 구동방법
JP6426940B2 (ja) * 2014-08-19 2018-11-21 ルネサスエレクトロニクス株式会社 半導体装置及びフォーミング方法
US9563505B2 (en) 2015-05-26 2017-02-07 Winbond Electronics Corp. Methods and systems for nonvolatile memory data management
US9836349B2 (en) * 2015-05-29 2017-12-05 Winbond Electronics Corp. Methods and systems for detecting and correcting errors in nonvolatile memory
US20180150233A1 (en) * 2015-06-03 2018-05-31 Hitachi, Ltd. Storage system
US10579290B2 (en) 2016-03-23 2020-03-03 Winbond Electronics Corp. Option code providing circuit and providing method thereof
JP6783564B2 (ja) * 2016-06-24 2020-11-11 蛇の目ミシン工業株式会社 ログ収集装置、産業用ロボット及び電動プレス
CN108932175B (zh) * 2017-05-24 2022-01-11 建兴储存科技(广州)有限公司 固态储存装置的控制方法
KR102658230B1 (ko) * 2018-06-01 2024-04-17 삼성전자주식회사 반도체 메모리 장치, 이를 포함하는 메모리 시스템 및 반도체 메모리 장치의 동작 방법
KR20210021462A (ko) 2018-06-22 2021-02-26 소니 세미컨덕터 솔루션즈 가부시키가이샤 기억 제어 장치, 기억 장치 및 기억 제어 방법
KR102575476B1 (ko) * 2018-07-11 2023-09-07 삼성전자주식회사 비휘발성 메모리 장치의 데이터 저장 방법, 데이터 소거 방법 및 이를 수행하는 비휘발성 메모리 장치
CN115443504A (zh) * 2020-03-03 2022-12-06 美光科技公司 用于存储器单元的基于计数器的感测放大器方法
JPWO2021193050A1 (ja) * 2020-03-27 2021-09-30

Family Cites Families (14)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JPH06110793A (ja) 1992-09-30 1994-04-22 Toshiba Corp 不揮発性半導体記憶装置
US5798966A (en) * 1997-03-31 1998-08-25 Intel Corporation Flash memory VDS compensation techiques to reduce programming variability
JP2000045858A (ja) * 1998-07-28 2000-02-15 Denso Corp 電子制御装置及び不揮発性メモリの書換回数記憶方法
US6145069A (en) * 1999-01-29 2000-11-07 Interactive Silicon, Inc. Parallel decompression and compression system and method for improving storage density and access speed for non-volatile memory and embedded memory devices
JP4274523B2 (ja) * 2003-01-24 2009-06-10 株式会社日立製作所 記憶装置システム、及び記憶装置システムの起動方法
US7679980B2 (en) * 2006-11-21 2010-03-16 Qimonda North America Corp. Resistive memory including selective refresh operation
JP2009087509A (ja) * 2007-10-03 2009-04-23 Toshiba Corp 半導体記憶装置
JP5262402B2 (ja) * 2008-08-04 2013-08-14 富士通株式会社 記憶装置及びデータ保持方法
JP5204868B2 (ja) * 2011-04-12 2013-06-05 シャープ株式会社 半導体記憶装置
JP5269151B2 (ja) * 2011-06-09 2013-08-21 シャープ株式会社 半導体記憶装置
JP5768654B2 (ja) * 2011-10-25 2015-08-26 ソニー株式会社 記憶制御装置、記憶装置、情報処理システム、および、記憶制御方法
CN104040634A (zh) * 2012-01-12 2014-09-10 索尼公司 存储控制装置、存储装置、信息处理***及其处理方法
JP5853906B2 (ja) * 2012-08-24 2016-02-09 ソニー株式会社 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
JP6497394B2 (ja) * 2014-11-26 2019-04-10 ソニー株式会社 メモリシステム、記憶装置、および、メモリシステムの制御方法

Also Published As

Publication number Publication date
CN104423896A (zh) 2015-03-18
US20150049538A1 (en) 2015-02-19
JP2015038794A (ja) 2015-02-26
US9449684B2 (en) 2016-09-20
CN104423896B (zh) 2018-12-07

Similar Documents

Publication Publication Date Title
JP6149598B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
US9189325B2 (en) Memory system and operation method thereof
EP2778888B1 (en) Selecting between non-volatile memory units having different minimum addressable data unit sizes
JP5853906B2 (ja) 記憶制御装置、記憶装置、情報処理システムおよび記憶制御方法
KR101677531B1 (ko) 데이터 저장 디바이스 및 그 에러 정정 방법
JP2019169217A (ja) メモリシステム、その制御方法及びプログラム
US20150261444A1 (en) Memory system and information processing device
US20190095276A1 (en) Method for Processing Data Stored in a Memory Device and a Data Storage Device Utilizing the Same
US20140068378A1 (en) Semiconductor storage device and memory controller
US9507710B2 (en) Command execution using existing address information
JP2020047353A (ja) メモリシステム
JP2015011421A (ja) 記憶制御装置、記憶装置、および、その記憶制御方法
US7836243B2 (en) Nonvolatile semiconductor memory apparatus and memory system
US10811070B2 (en) Memory system and control method to perform patrol read operation
US20130219244A1 (en) Storage device
JP6711281B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよびメモリの制御方法
JPWO2013108456A1 (ja) 記憶制御装置、記憶装置、情報処理システム、および、それらにおける処理方法
WO2016035451A1 (ja) 記憶制御装置、記憶装置、および、記憶制御方法
JP2010061705A (ja) 記憶装置の制御方法および記憶装置
JP6497395B2 (ja) メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法
JP6481691B2 (ja) メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法
KR20180087494A (ko) 메모리 장치, 메모리 시스템 및 메모리 시스템의 동작 방법
US9104596B2 (en) Memory system
TWI500036B (zh) 非揮發性儲存裝置及其控制方法
KR20150122493A (ko) 데이터 저장 장치 및 그것의 동작 방법

Legal Events

Date Code Title Description
A621 Written request for application examination

Free format text: JAPANESE INTERMEDIATE CODE: A621

Effective date: 20151228

A977 Report on retrieval

Free format text: JAPANESE INTERMEDIATE CODE: A971007

Effective date: 20160921

A131 Notification of reasons for refusal

Free format text: JAPANESE INTERMEDIATE CODE: A131

Effective date: 20161025

A521 Request for written amendment filed

Free format text: JAPANESE INTERMEDIATE CODE: A523

Effective date: 20161212

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

A61 First payment of annual fees (during grant procedure)

Free format text: JAPANESE INTERMEDIATE CODE: A61

Effective date: 20170508

R151 Written notification of patent or utility model registration

Ref document number: 6149598

Country of ref document: JP

Free format text: JAPANESE INTERMEDIATE CODE: R151

R250 Receipt of annual fees

Free format text: JAPANESE INTERMEDIATE CODE: R250

LAPS Cancellation because of no payment of annual fees