(57)【要約】【課題】不揮発メモリにおけるデータの劣化によるデータの破壊を防止するためのリフレッシュを行うタイミングを簡便な処理により取得する。【解決手段】不揮発メモリは、データセルおよびリファレンスセルを備える。この不揮発メモリにおいて、データセルは、書き込まれたデータを記憶する。リファレンスセルは、データセルと同一チップに形成されてデータと略同時に所定の値をリファレンスデータとして記憶してデータの劣化を検出するためにリファレンスデータを出力する。【選択図】図３
2017021877.tif 000002
【特許請求の範囲】
【請求項１】
書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと
を具備する不揮発メモリ。
【請求項２】
前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部をさらに具備する請求項１記載の不揮発メモリ。
【請求項３】
前記劣化検出部における前記検出の際に前記データセルのデータを書直すリフレッシュの制御と前記リファレンスデータの書直しの制御とを略同時に行う書込み制御部をさらに具備する請求項２記載の不揮発メモリ。
【請求項４】
前記書込み制御部は、前記データセルへの書込みと前記劣化が早い前記所定の値を前記リファレンスデータとする前記リファレンスセルへの書込みとをさらに行う請求項３記載の不揮発メモリ。
【請求項５】
前記データセルおよび前記リファレンスセルは、書込み電圧を印加することにより書込みが行われ、
前記書込み制御部は、前記データセルへの前記書込み電圧とは異なる第２の書込み電圧を印加することにより前記リファレンスデータを前記リファレンスセルに書き込む
請求項４記載の不揮発メモリ。
【請求項６】
前記データセルおよび前記リファレンスセルは、読出し電圧が印加された際に流れる電流である読出し電流を閾値に基づいて判別することにより読出しが行われ、
前記データセルからの読出しと当該データセルからの読出しの際の前記閾値とは異なる第２の閾値に基づく判別による前記リファレンスセルからの読出しとを行う読出し制御部をさらに具備し、
前記書込み制御部は、前記第２の閾値により近い値の前記読出し電流となる前記所定の値を前記リファレンスデータとして書き込む
請求項４記載の不揮発メモリ。
【請求項７】
前記書込み制御部は、前記データセルに記憶された値を反転させた後に前記データを書き込むことにより前記リフレッシュを行う請求項３記載の不揮発メモリ。
【請求項８】
前記書込み制御部は、前記所定の値とは異なる値を書き込んだ後に前記所定の値をリファレンスデータとして書き込むことにより前記リファレンスデータの書直しを行う請求項３記載の不揮発メモリ。
【請求項９】
前記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、
前記リファレンスセルは、前記ページ毎に配置され、
前記劣化検出部は、前記ページ毎に前記検出を行う
請求項２記載の不揮発メモリ。
【請求項１０】
前記リファレンスセルは、前記ページ毎に複数配置される請求項９記載の不揮発メモリ。
【請求項１１】
前記劣化検出部は、前記複数のリファレンスセルから読み出された複数の前記リファレンスデータの多数決演算に基づいて前記検出を行う請求項１０記載の不揮発メモリ。
【請求項１２】
前記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、
前記リファレンスセルは、複数の前記ページからなるブロック毎に配置され、
前記劣化検出部は、前記ブロック毎に前記検出を行う
請求項２記載の不揮発メモリ。
【請求項１３】
書き込まれたデータを記憶するデータセルと前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルとを備える不揮発メモリの前記リファレンスセルから前記所定の値とは異なる値が読み出された際に前記データの劣化を検出する劣化検出部を具備するメモリコントローラ。
【請求項１４】
書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと、
前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部と
を具備する記憶装置。
【請求項１５】
書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと、
前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
【請求項１６】
書き込まれたデータを記憶するデータセルと前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスデータ出力手順を具備する不揮発メモリの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、不揮発メモリ、メモリコントローラ、記憶装置、情報処理システムおよび不揮発メモリの制御方法に関する。詳しくは、不揮発メモリおよび不揮発メモリに対してデータの書込みを行うメモリコントローラ、記憶装置、情報処理システムおよびこれらにおける制御方法に関する。
【背景技術】
【０００２】
従来、情報処理装置の記憶装置として不揮発メモリが使用されている。この不揮発メモリは、電源の供給の有無に関わらずデータの記憶が可能であり、データストレージ等の用途に広く使用されている。このような不揮発メモリの例として、ＥＥＰＲＯＭ（Electrically Erasable and Programmable Read Only Memory）およびＮＡＮＤ型フラッシュメモリ等を挙げることができる。また、このような不揮発メモリの他の例として、ＭＲＡＭ（Magnetoresistive RAM）およびＲｅＲＡＭ（Resistance RAM）等を挙げることができる。これらの不揮発メモリにおいて、データを長期間記憶した場合には、データの記憶状態が徐々に変化する、いわゆるデータの劣化を生じることが知られている。このデータの劣化が進行すると、当初記憶させたデータとは異なるデータが読み出される状態になり、記憶データが破壊される。これを防ぐために、例えば、データの劣化による記憶データの破壊に至る前に、データの書直しであるリフレッシュを行い、データの記憶状態を元に戻すシステムが提案されている（例えば、特許文献１参照。）。
【先行技術文献】
【特許文献】
【０００３】
【特許文献１】米国特許出願公開第２０１２／０２７８５３３号明細書
【発明の概要】
【発明が解決しようとする課題】
【０００４】
上述の従来技術では、ＮＡＮＤ型フラッシュメモリを用いた半導体記憶装置において、アクセスの単位であるブロック毎の劣化度およびデータ読出しの頻度であるリード頻度に基づいて信頼性維持期間を取得する。次に、この信頼性維持期間に応じて、ブロック毎にリフレッシュを行う。すなわち、ブロックに記憶されたデータの信頼性維持期間が経過する前にリフレッシュを行う。これにより、記憶データの破壊を防止する。しかし、信頼性維持期間を取得するためには、ブロック毎の劣化度やリード頻度を記録しておく必要がある。このため、上述の従来技術には、リフレッシュを行うタイミングを取得するための処理が複雑になるという問題がある。
【０００５】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発メモリにおいて、リフレッシュを行うタイミングを簡便な処理により取得することを目的とする。
【課題を解決するための手段】
【０００６】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、書き込まれたデータを記憶するデータセルと、上記データセルと同一チップに形成されて上記データと略同時に所定の値をリファレンスデータとして記憶して上記データの劣化を検出するために上記リファレンスデータを出力するリファレンスセルとを具備する不揮発メモリおよび不揮発メモリの制御方法である。これにより、リファレンスセルからデータの劣化を検出するためのリファレンスデータが出力されるという作用をもたらす。
【０００７】
また、この第１の側面において、上記所定の値とは異なる値が上記リファレンスセルから読み出された際に上記データの劣化の検出を行う劣化検出部をさらに具備してもよい。これにより、所定の値とは異なる値がリファレンスセルから読み出された際に劣化検出部によりデータの劣化が検出されるという作用をもたらす。
【０００８】
また、この第１の側面において、上記劣化検出部における上記検出の際に上記データセルのデータを書直すリフレッシュの制御と上記リファレンスデータの書直しの制御とを略同時に行う書込み制御部をさらに具備してもよい。これにより、リフレッシュとリファレンスデータの書直しが略同時に行われるという作用をもたらす。
【０００９】
また、この第１の側面において、上記書込み制御部は、上記データセルへの書込みと上記劣化が早い上記所定の値を上記リファレンスデータとする上記リファレンスセルへの書込みとをさらに行ってもよい。これにより、劣化が早いリファレンスデータによりデータの劣化の検出が行われるという作用をもたらす。
【００１０】
また、この第１の側面において、上記データセルおよび上記リファレンスセルは、書込み電圧を印加することにより書込みが行われ、上記書込み制御部は、上記データセルへの上記書込み電圧とは異なる第２の書込み電圧を印加することにより上記リファレンスデータを上記リファレンスセルに書き込んでもよい。これにより、リファレンスデータの書込みの際に第２の書込み電圧がリファレンスセルに印加されるという作用をもたらす。
【００１１】
また、この第１の側面において、上記データセルおよび上記リファレンスセルは、読出し電圧が印加された際に流れる電流である読出し電流を閾値に基づいて判別することにより読出しが行われ、上記データセルからの読出しと当該データセルからの読出しの際の上記閾値とは異なる第２の閾値に基づく判別による上記リファレンスセルからの読出しとを行う読出し制御部をさらに具備し、上記書込み制御部は、上記第２の閾値により近い値の上記読出し電流となる上記所定の値を上記リファレンスデータとして書き込んでもよい。これにより、第２の閾値に近い値の読出し電流となる値がリファレンスデータとしてリファレンスセルに書き込まれ、この第２の閾値に基づいてリファレンスセルからの読出しが行われるという作用をもたらす。
【００１２】
また、この第１の側面において、上記書込み制御部は、上記データセルに記憶された値を反転させた後に上記データを書き込むことにより上記リフレッシュを行ってもよい。これにより、リフレッシュの際にデータセルのデータが反転されるという作用をもたらす。
【００１３】
また、この第１の側面において、上記書込み制御部は、上記所定の値とは異なる値を書き込んだ後に上記所定の値をリファレンスデータとして書き込むことにより上記リファレンスデータの書直しを行ってもよい。これにより、リファレンスデータの書直しの際にリファレンスセルの値が反転されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、上記リファレンスセルは、上記ページ毎に配置され、上記劣化検出部は、上記ページ毎に上記検出を行ってもよい。これにより、ページ毎にデータの劣化が検出されるという作用をもたらす。
【００１５】
また、この第１の側面において、上記リファレンスセルは、上記ページ毎に複数配置されてもよい。これにより、複数のリファレンスセルによりページ毎にデータの劣化が検出されるという作用をもたらす。
【００１６】
また、この第１の側面において、上記劣化検出部は、上記複数のリファレンスセルから読み出された複数の上記リファレンスデータの多数決演算に基づいて上記検出を行ってもよい。これにより、複数のリファレンスセルの多数決演算の結果に基づいてデータの劣化が検出されるという作用をもたらす。
【００１７】
また、この第１の側面において、上記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、上記リファレンスセルは、複数の上記ページからなるブロック毎に配置され、上記劣化検出部は、上記ブロック毎に上記検出を行ってもよい。これにより、複数のページにより構成されたブロック毎にデータの劣化が検出されるという作用をもたらす。
【００１８】
また、本技術の第２の側面は、書き込まれたデータを記憶するデータセルと上記データセルと同一チップに形成されて上記データと略同時に所定の値をリファレンスデータとして記憶して上記データの劣化を検出するために上記リファレンスデータを出力するリファレンスセルとを備える不揮発メモリの上記リファレンスセルから上記所定の値とは異なる値が読み出された際に上記データの劣化を検出する劣化検出部を具備するメモリコントローラである。これにより、リファレンスセルから出力されたリファレンスデータに基づいてデータの劣化が検出されるという作用をもたらす。
【００１９】
また、本技術の第３の側面は、書き込まれたデータを記憶するデータセルと、上記データセルと同一チップに形成されて上記データと略同時に所定の値をリファレンスデータとして記憶して上記データの劣化を検出するために上記リファレンスデータを出力するリファレンスセルと、上記所定の値とは異なる値が上記リファレンスセルから読み出された際に上記データの劣化の検出を行う劣化検出部とを具備する記憶装置である。これにより、リファレンスセルから出力されたリファレンスデータに基づいてデータの劣化が検出されるという作用をもたらす。
【００２０】
また、本技術の第４の側面は、書き込まれたデータを記憶するデータセルと、上記データセルと同一チップに形成されて上記データと略同時に所定の値をリファレンスデータとして記憶して上記データの劣化を検出するために上記リファレンスデータを出力するリファレンスセルと、上記所定の値とは異なる値が上記リファレンスセルから読み出された際に上記データの劣化の検出を行う劣化検出部とを備える記憶装置と、上記記憶装置にアクセスするホストコンピュータとを具備する情報処理システムである。これにより、リファレンスセルから出力されたリファレンスデータに基づいてデータの劣化が検出されるという作用をもたらす。
【発明の効果】
【００２１】
本技術によれば、不揮発メモリにおいて、リフレッシュを行うタイミングを簡便な処理により取得するという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２２】
【図１】本技術の実施の形態における情報処理装置の構成例を示す図である。
【図２】本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図３】本技術の第１の実施の形態におけるメモリ３００の構成例を示す図である。
【図４】本技術の実施の形態におけるメモリセルの構成例を示す図である。
【図５】本技術の実施の形態における記憶素子３５１の特性を示す図である。
【図６】本技術の実施の形態におけるデータの書込みを示す図である。
【図７】本技術の第１の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。
【図８】本技術の第１の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。
【図９】本技術の第１の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ９１０）の処理手順（メモリコントローラ）の一例を示す図である。
【図１０】本技術の第１の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。
【図１１】本技術の第１の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。
【図１２】本技術の第１の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。
【図１３】本技術の第１の実施の形態におけるリファレンスデータ書直し処理の処理手順（メモリ）の一例を示す図である。
【図１４】本技術の第１の実施の形態におけるリフレッシュ処理の処理手順（メモリ）の一例を示す図である。
【図１５】本技術の第２の実施の形態におけるリフレッシュ処理の処理手順（メモリ）の一例を示す図である。
【図１６】本技術の第３の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理の処理手順の一例を示す図である。
【図１７】本技術の第４の実施の形態における記憶素子３５１の特性を示す図である。
【図１８】本技術の第５の実施の形態における記憶素子３５１の特性を示す図である。
【図１９】本技術の第６の実施の形態におけるメモリコントローラ２００の構成例を示す図である。
【図２０】本技術の第６の実施の形態におけるメモリ３００の構成例を示す図である。
【図２１】本技術の第６の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２２】本技術の第６の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ８１０）の処理手順（メモリコントローラ）の一例を示す図である。
【図２３】本技術の第６の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２４】本技術の第６の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。
【図２５】本技術の第６の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。
【図２６】本技術の第７の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。
【図２７】本技術の第７の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。
【図２８】本技術の第７の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ７５０）の処理手順（メモリ）の一例を示す図である。
【図２９】本技術の第７の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。
【図３０】本技術の第８の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。
【図３１】本技術の第９の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。
【発明を実施するための形態】
【００２３】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（メモリがデータの劣化の検出を行う場合の例）
２．第２の実施の形態（１度の書込みによりリフレッシュを行う場合の例）
３．第３の実施の形態（１度のリクエストによりリファレンスデータの書直しおよびリフレッシュ処理を行う場合の例）
４．第４の実施の形態（データセルとは異なる書込み電圧をリファレンスセルに印加する場合の例）
５．第５の実施の形態（データセルとは異なる閾値に基づいてリファレンスセルからの読出しを行う場合の例）
６．第６の実施の形態（メモリコントローラがデータの劣化を検出する場合の例）
７．第７の実施の形態（メモリがデータの劣化の検出、リファレンスデータ書直しおよびリフレッシュの処理を行う場合の例）
８．第８の実施の形態（ページ毎に複数のリファレンスセルが配置された場合の例）
９．第９の実施の形態（ブロック毎にリファレンスセルが配置された場合の例）
【００２４】
＜１．第１の実施の形態＞
図１は、本技術の実施の形態における情報処理装置の構成例を示す図である。同図の情報処理装置は、ホストコンピュータ１００と、メモリコントローラ２００と、メモリ３００とを備える。なお、メモリコントローラ２００およびメモリ３００は、記憶装置を構成する。
【００２５】
ホストコンピュータ１００は、情報処理システムにおける各種の処理を行うものである。このホストコンピュータ１００は、メモリコントローラ２００を介して、メモリ３００に対して書込みまたは読出し等のコマンドを発行してアクセスを行う。信号線１０９は、ホストコンピュータ１００とメモリコントローラ２００とを電気的に接続する信号線である。
【００２６】
また、ホストコンピュータ１００は、プロセッサ１１０と、メモリコントローラインターフェース１２０とを備える。プロセッサ１１０は、ホストコンピュータ１００の全体を制御するものである。このプロセッサ１１０は、図示しないＲＯＭ（Read Only Memory）に記憶されたプログラムに基づいて動作し、書込みコマンドの生成等の処理を行う。
【００２７】
メモリコントローラインターフェース１２０は、メモリコントローラ２００とのやり取りを行うインターフェースである。生成された書込みコマンド等は、メモリコントローラインターフェース１２０を介してメモリコントローラ２００に発行される。
【００２８】
メモリコントローラ２００は、メモリ３００を制御するものである。このメモリコントローラ２００は、ホストコンピュータ１００から発行された書込みおよび読出しコマンドを解釈し、これに基づく書込みおよび読出しリクエストをメモリ３００に対して要求する。信号線２０９は、メモリコントローラ２００とメモリ３００とを電気的に接続する信号線である。
【００２９】
メモリ３００は、データを記憶するものである。このメモリ３００は、内部に記憶領域を有しており、メモリコントローラ２００から要求されたリクエストに基づいて、この記憶領域に対するアクセスを行う。この際、メモリ３００とメモリコントローラ２００との間でデータの転送が行われる。このメモリ３００には不揮発メモリを想定する。なお、メモリ３００は、特許請求の範囲に記載の不揮発メモリの一例である。
【００３０】
ホストコンピュータ１００は、読出しを行う際に、読出しコマンドとこれに付随する読出し先アドレスおよび読出しデータ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００がこのコマンドを解釈して、これに付随する読出し先アドレスおよび読出しデータ数に基づいてメモリ３００に対して読出しリクエストを要求する。メモリ３００は、このリクエストに基づいて読出しを行い、読み出したデータをメモリコントローラ２００に対して出力する。また、メモリ３００は、読出し処理の結果をレスポンスとしてメモリコントローラ２００に出力する。その後、メモリコントローラ２００は、読出し処理の結果をホストコンピュータ１００に通知する。また、メモリコントローラ２００は、メモリ３００から出力されたデータを読出しデータとしてホストコンピュータ１００に出力する。
【００３１】
一方、書込みの際には、ホストコンピュータ１００は、書込みコマンドとこれに付随する書込みデータ、書込み先アドレスおよび書込みデータ数をメモリコントローラ２００に対して発行する。メモリコントローラ２００は、発行された書込みコマンドを解釈し、これに付随する書込みデータ、書込み先アドレスおよび書込みデータ数に基づいてメモリ３００に対して書込みリクエストを要求する。メモリ３００は、このリクエストに基づいて書込みを行い、書込み処理の結果をレスポンスとしてメモリコントローラ２００に出力する。最後に、メモリコントローラ２００は、書込み処理の結果をホストコンピュータ１００に対して通知する。
【００３２】
［メモリコントローラの構成］
図２は、本技術の第１の実施の形態におけるメモリコントローラ２００の構成例を示す図である。このメモリコントローラ２００は、プロセッサ２１０と、ＥＣＣ処理部２４０と、アドレス変換部２５０と、代替処理部２６０と、バッファ２８０と、ホストインターフェース２３０と、メモリインターフェース２７０とを備える。
【００３３】
プロセッサ２１０は、メモリコントローラ２００の全体を制御するものである。このプロセッサ２１０は、ホストコンピュータ１００が発行したコマンドの解釈、メモリ３００に要求するリクエストの生成等の処理を行う。プロセッサ２１０が生成するリクエストには、前述の書込みリクエストおよび読出しリクエストのほかにリファレンスデータ書直しリクエスト、リフレッシュリクエストおよび代替書込みリクエストが存在する。これらのリクエストについては、後述する。なお、プロセッサ２１０は、ＲＯＭ（不図示）に記憶されたファームウェアに基づいて処理を行う。
【００３４】
ホストインターフェース２３０は、ホストコンピュータ１００とのやり取りを行うインターフェースである。ホストコンピュータ１００が発行した読出しコマンド等は、ホストインターフェース２３０を介してメモリコントローラ２００に入力される。また、読出しコマンドに基づく読出しデータ等は、ホストインターフェース２３０を介してホストコンピュータ１００に出力される。
【００３５】
メモリインターフェース２７０は、メモリ３００とのやり取りを行うインターフェースである。メモリコントローラ２００において生成されたリクエスト等は、メモリインターフェース２７０を介してメモリ３００に出力される。また、メモリ３００が出力した読出しデータ等は、メモリインターフェース２７０を介してメモリコントローラ２００に入力される。
【００３６】
ＥＣＣ処理部２４０は、ホストコンピュータ１００から発行された書込みコマンドに付随する書込みデータのＥＣＣ符号化およびメモリ３００から出力された読出しデータのＥＣＣ復号を行うものである。ここで、ＥＣＣ符号化とは、書込みデータにパリティを付加してＥＣＣ符号にする処理である。このパリティには、例えば、ＢＣＨ（Bose Chaudhuri Hocquenghem）符号を使って生成されたパリティを使用することができる。また、ＥＣＣ復号とは、ＥＣＣ符号から元のデータを取り出す処理である。この復号の際、データの誤り検出および誤り訂正が行われる。
【００３７】
アドレス変換部２５０は、ホストコンピュータ１００により発行されたコマンドに含まれるアドレスである論理アドレスをメモリ３００におけるアドレスである物理アドレスに変換するものである。このアドレス変換部２５０は、論理アドレスと物理アドレスとの対応を示すアドレス変換テーブルを有しており、このアドレス変換テーブルに基づいて上述の変換を行う。後述するようにメモリ３００は、ページを単位としてページアドレスによりアクセスされる。このため、アドレス変換部２５０は、論理アドレスをページアドレスからなる物理アドレスに変換する。
【００３８】
代替処理部２６０は、代替処理を行うものである。ここで、代替処理とは、書込みが可能でないページを未使用のページと置き換える処理である。この代替処理部２６０は、アドレス変換部２５０に保持されたアドレス変換テーブルを変更することより、代替を行う。なお、未使用のページが存在しない場合には、代替処理が不可能となる。
【００３９】
バッファ２８０は、ホストコンピュータから発行された書込みコマンドに付随する書込みデータおよびメモリ３００から出力された読出しデータを一時的に保持するバッファである。また、バス２０１は、メモリコントローラ２００内の各部を相互に接続するバスである。
【００４０】
［メモリの構成］
図３は、本技術の第１の実施の形態におけるメモリ３００の構成例を示す図である。このメモリ３００は、書込制御部３１０と、読出制御部３４０と、劣化検出部３２０と、メモリコントローラインターフェース３３０と、ページバッファ３８０と、メモリセルアレイ３５０とを備える。
【００４１】
メモリセルアレイ３５０は、メモリセルが２次元アレイ状に配置されて構成されたものである。このメモリセルには、データを記憶するメモリセルであるデータセルとリファレンスデータを記憶するメモリセルであるリファレンスセルとが含まれる。ここで、リファレンスデータとは、データセルに記憶されたデータの劣化を検出するためにリファレンスセルに記憶される所定の値である。データセルにおけるデータの記憶状態は、書込みが行われた当初の状態から時間の経過とともに変化する。この変化が進行すると、記憶されたデータの維持が困難になる。このような、データの記憶状態の変化をデータの劣化と称する。リファレンスセルは、このデータの劣化を検出するためにリファレンスデータを出力する。本技術の実施の形態では、上述した所定の値とリファレンスセルから読み出した値とが異なる場合にデータセルに記憶されたデータの劣化が検出される。なお、データの劣化は、後述する劣化検出部３２０により検出される。
【００４２】
これらデータセルおよびリファレンスセルは、同一のチップに形成されることを想定する。リファレンスセルによりデータセルに記憶されたデータの劣化を検出するため、両者の特性を揃える必要があるためである。
【００４３】
データセルは、ページサイズにより分割されたページを単位としてページアドレスによりアクセスされる。このページは、例えば、４２２３ビットの大きさである。また、リファレンスセルはページ毎に配置することができる。リファレンスデータの書込みはデータの書込みと略同時に行われる。これらの書込み時期が大きく異なった場合、リファレンスデータによるデータの劣化の検出精度が低下するためである。なお、メモリセルアレイ３５０は、不揮発メモリであるＲｅＲＡＭにより構成されることを想定する。メモリセルアレイ３５０の構成の詳細については、後述する。
【００４４】
劣化検出部３２０は、メモリセルアレイ３５０のデータセルに記憶されたデータの劣化を検出するものである。この劣化検出部３２０は、上述したリファレンスデータの所定の値を保持し、リファレンスセルから読み出された値とこの保持した値とを比較して、両者が不一致の場合にデータの劣化を検出する。この際、劣化検出部３２０は、データの劣化をメモリコントローラ２００に通知する。データの劣化の詳細については、後述する。
【００４５】
書込制御部３１０は、メモリセルアレイ３５０に対するデータ等の書込みを制御するものである。この書込制御部３１０は、メモリコントローラ２００が要求した書込みリクエストを解釈し、ページを単位としてデータの書込みを行う。その後、書込みの結果をメモリコントローラ２００に対して出力する。また、書込制御部３１０は、メモリセルアレイ３５０のリフレッシュの制御ならびにリファレンスデータの書込みおよび書直しの制御をさらに行う。ここで、リフレッシュとは、データセルに記憶された値を反転させた後にデータを書き込む処理である。リフレッシュおよびリファレンスデータの書直しは、劣化検出部３２０においてデータの劣化が検出された際に略同時に行われる。データの劣化の検出精度の低下を防ぐためである。書込制御部３１０における書込み、リフレッシュおよびリファレンスデータの書直しの詳細については、後述する。
【００４６】
読出制御部３４０は、メモリセルアレイ３５０に対するデータの読出しを制御するものである。この読出制御部３４０は、メモリコントローラ２００が要求した読出しリクエストを解釈し、ページを単位としてデータの読出しを行う。その後、読み出したデータをメモリコントローラ２００に出力する。読出制御部３４０における読出しの詳細については、後述する。
【００４７】
ページバッファ３８０は、メモリセルアレイ３５０の書込みデータおよび読出しデータを一時的に保持するバッファである。このページバッファ３８０は、ページを単位としてデータを保持する。
【００４８】
メモリコントローラインターフェース３３０は、メモリコントローラ２００とのやり取りを行うインターフェースである。メモリコントローラ２００が要求したリクエストは、メモリコントローラインターフェース３３０を介してメモリ３００に入力される。また、読出しリクエストに基づく読出しデータ等は、メモリコントローラインターフェース３３０を介してメモリコントローラ２００に出力される。また、バス３０１は、メモリ３００内の各部を相互に接続するバスである。なお、書込制御部３１０は、特許請求の範囲に記載の書込み制御部の一例である。読出制御部３４０は、特許請求の範囲に記載の読出し制御部の一例である。
【００４９】
［メモリセルの構成］
図４は、本技術の実施の形態におけるメモリセルの構成例を示す図である。同図は、図３において説明したメモリセルアレイ３５０におけるメモリセルの構成を表したものである。同図に表したように、記憶素子３５１およびＭＯＳ（Metal Oxide Semiconductor）トランジスタ３５２により１ビットのメモリセル３５３が構成される。記憶素子３５１は、データ等を記憶する素子である。ＭＯＳトランジスタ３５２は、記憶素子３５１を駆動するトランジスタである。
【００５０】
記憶素子３５１の一端は共通の信号線であるプレート線に接続され、他端はＭＯＳトランジスタ３５２のドレインに接続されている。ＭＯＳトランジスタ３５２のゲートは複数のワード線のうちの1本に接続され、ソースは複数のビット線のうちの１本に接続されている。ワード線およびビット線は、メモリセル３５３を構成するＭＯＳトランジスタ３５２に対してＸＹマトリクス状に配線されている。これにより、ワード線およびビット線からそれぞれ１本を選択して信号を入力することにより、１個のメモリセル３５３が選択されてデータ等の書込みまたは読出しが行われる。例えば、同図において左端に記載されたメモリセル３５３を選択する場合には、ワード線＃０およびビット線＃０を選択する。
【００５１】
記憶素子３５１は、印加された電圧の極性により抵抗値が変化する。例えば、記憶素子３５１のプレート線に接続された端子を基準として、記憶素子３５１の他の端子に正の極性となる電圧（書込み電圧）を印加することにより記憶素子３５１を高抵抗の状態にすることができる。この高抵抗の状態の記憶素子３５１に逆極性の書込み電圧を印加することにより、記憶素子３５１を低抵抗の状態にすることができる。なお、以後の説明では、高抵抗の状態をＨＲＳ（High Resistance State）、低抵抗の状態をＬＲＳ（Low Resistance State）と称する。
【００５２】
これらＨＲＳおよびＬＲＳを論理値に対応させて、データ等の記憶が行われる。例えば、記憶素子３５１がＨＲＳの場合を値「１」、記憶素子３５１がＬＲＳの場合を値「０」とすることができる。また、記憶素子３５１がＨＲＳの場合を値「０」、記憶素子３５１がＬＲＳの場合を値「１」に対応させることも可能である。本技術の実施の形態では、ＨＲＳの場合を値「０」、ＬＲＳの場合を値「１」に対応させる場合を想定する。このように記憶素子３５１の抵抗値を可逆的に変化させて、メモリセル３５３にデータ等を書き込むことができる。
【００５３】
ここで、メモリセルをＨＲＳからＬＲＳに遷移させる処理をセット処理と称し、ＬＲＳからＨＲＳに遷移させる処理をリセット処理と称する。これらのセット処理およびリセット処理は、複数のメモリセル３５３に対して同時に行われる。セット処理を行う際には、複数のワード線のうちの1本を選択する。例えばワード線＃０を選択し、オン電圧を印加する。これにより、ワード線＃０に接続されたＭＯＳトランジスタ３５２がオン状態になる。次に、セット処理を行うメモリセル３５３に接続されたビット線を選択し、プレート線に対して負の極性となる書込み電圧を印加する。すると、選択されたビット線に接続されたメモリセル３５３の記憶素子３５１は、ＬＲＳになり、値「１」が書き込まれる。リセット処理を行う際には、セット処理と同様にワード線＃０を選択してオン電圧を印加する。次に、リセット処理を行うメモリセル３５３に接続されたビット線を選択し、プレート線に対して正の極性となる書込み電圧を印加する。すると、選択されたビット線に接続されたメモリセル３５３の記憶素子３５１は、ＨＲＳになり、値「０」が書き込まれる。
【００５４】
このようにして、１本のワード線に接続された複数のメモリセルに対して書込みを行うことができる。この１度の書込み操作により書込み可能なメモリセル３５３の数が前述したページサイズに該当する。同図の例では、ページサイズとしてはｍビットを想定する。このような操作により、メモリセルアレイ３５０からのページを単位とするデータの書込みが行われる。
【００５５】
［記憶素子の特性と読出し操作］
図５は、本技術の実施の形態における記憶素子３５１の特性を示す図である。同図は、記憶素子３５１の抵抗値の分布を表したものである。同図のグラフ４０１はＬＲＳの場合の特性を表し、グラフ４０２はＨＲＳの場合の特性を表している。また、同図の破線は、ＨＲＳとＬＲＳとを分離する閾値４０３を表している。メモリセル３５３からデータを読み出す際、この閾値４０３に相当する抵抗値によりＨＲＳおよびＬＲＳが判別される。具体的には、書込み電圧より低い電圧の読出し電圧を記憶素子３５１に印加して流れる電流値を取得する。この電流値に応じた抵抗値が閾値４０３に相当する抵抗より高い場合にはＨＲＳと判断され、逆の場合にはＬＲＳと判断される。このような読出しはページを単位として行われる。読出制御部３４０は、図４において説明したページを構成するメモリセル３５３に対して読出し電圧を同時に印加する。例えば、リセット処理と同じ極性の読出し電圧を記憶素子３５１に印加することができる。同時に、各ビット線を流れる電流が閾値４０３に基づいて判別される。このような操作により、メモリセルアレイ３５０からのページを単位とする読出しが行われる。
【００５６】
［書込み操作］
図６は、本技術の実施の形態におけるデータの書込みを示す図である。同図はページを単位とするデータセルへの書込み操作を表したものである。便宜上、ページサイズは８ビットを想定する。同図に表したように、データの書込みは、書込みデータの転送、データセルからのデータの読出しおよびデータの書込みの順に実行される。また、図４において説明したように、データの書込みはセット処理およびリセット処理により行われる。これらの処理は、対象となるビットの位置を特定するためのマスクデータを用いて行われる。
【００５７】
ＲｅＲＡＭのような不揮発メモリでは、データの書換えを行うたびに記憶素子３５１が徐々に劣化することが知られている。劣化が進んだ記憶素子３５１では正常な書込みおよび読出しができなくなる。この記憶素子３５１の劣化を防止するため、不要なセット処理およびリセット処理を削減する。これは、マスクデータを使用して、対象となるビットを限定することより行うことができる。同図に表したマスクデータでは、値「０」のビットにより対象となるビットの位置が特定され、当該ビットに対してセット処理およびリセット処理が行われる。
【００５８】
書込みデータがメモリ３００のページバッファ３８０に転送された後、書込み対象のページのデータセルに対して読出し（プレリード）を行う。この時読み出されたデータをプレリードデータと称する。このプレリードデータおよび転送された書込みデータからリセット処理用マスクデータおよびセット処理用マスクデータが生成される。リセット処理用マスクデータは、下記の式に基づいて生成することができる。
ＲＭａｓｋ＝〜Ｒ｜Ｗ
ただし、ＲＭａｓｋは、リセット処理用マスクデータを表す。Ｒは、プレリードデータを表す。Ｗは、書込みデータを表す。また、｜および〜は、それぞれビット毎の論理和演算およびビット毎の否定演算を表す演算子である。また、セット処理用マスクデータは、下記の式に基づいて生成することができる。
ＳＭａｓｋ＝Ｒ｜〜Ｗ
ただし、ＳＭａｓｋは、セット処理用マスクデータを表す。
【００５９】
次に、生成したマスクデータによるリセット処理およびセット処理を順に行う。これらの操作により、データの書込みが行われる。
【００６０】
その後、書込みが正しく行われた否かについて検証が行われる。これは、書込みが行われたページに対して読出しを行い、読み出したデータと書込みデータとが一致するか否かにより判断することができる。この検証の際の書込みデータには、ページバッファ３８０に保持されている書込みデータを使用することができる。読み出したデータと書込みデータとが一致する場合には、書込みが成功したものと判断され、書込み処理は終了する。しかし、両者が不一致の場合には、書込みが失敗したものと判断される。この場合、メモリ３００は、書込みが失敗した旨をレスポンスとしてメモリコントローラ２００に出力する。なお、書込みが失敗した場合の処理として、再度のメモリセルアレイ３５０への書込みを行うこともできる。
【００６１】
［記憶データの劣化］
前述のように、ＲｅＲＡＭ等の不揮発メモリには、データの記憶状態が時間の経過とともに徐々に変化する、いわゆるデータの劣化現象が存在する。このデータの劣化が進行すると、当初記憶させたデータとは異なるデータが読み出されるようになり、記憶されたデータが破壊される。ＲｅＲＡＭを例に挙げて説明すると、セット処理によりＬＲＳとなった記憶素子３５１の抵抗値が時間の経過とともに上昇し、図５において説明した閾値４０３を超えてＨＲＳの状態に変化する現象が存在する。図２において説明したように、メモリコントローラ２００にはＥＣＣ処理部２４０が配置されており、読み出したデータの誤り訂正が行われる。しかし、データの劣化に基づくデータの破壊が多くのビットにおいて発生した場合には、この誤り訂正が不可能となる。
【００６２】
上述した記憶素子３５１の抵抗値の変化は、書込みからの経過時間に略比例する。そこで、データの破壊に至る前に、記憶されたデータを書直すリフレッシュを行う。このリフレッシュを行うことにより、記憶素子３５１の抵抗値を正規の値に戻すことができ、記憶データの破壊を防ぐことができる。しかし、図６において説明したように、データの書込みはページ単位で行われ、マスクデータにより対象となるビットのメモリセルにのみ書込みが行われる。このため、ページに対する書込みが行われた場合において、書込み対象のメモリセルと書込み対象ではないメモリセルとでは、記憶素子３５１の抵抗値の変化の度合いが異なることとなる。すなわち、ページを構成するメモリセル毎に記憶素子３５１の抵抗値の変化の度合いが異なる。このため、リフレッシュを実行するタイミングが問題となる。
【００６３】
そこで、前述したリファレンスセルをページ毎に配置してリファレンスデータを記憶させる。このリファレンスデータにより対応するページのデータの劣化を検出し、リフレッシュを行う。具体的には、ページにおいて最初に書込みを行った際に、対応するリファレンスセルに所定の値、例えば、値「１」をリファレンスデータとして書き込む。その後、ページにおいて読出しが行われる際に、リファレンスセルからの読出しを行う。後述するように、データセルおよびリファレンスセルは、ページアドレス毎にそれぞれ割り当てられており、ページに対する読出しが行われた際、データおよびリファレンスデータが同時に読み出される。この時リファレンスセルから読み出した値が書き込んだ所定の値と異なる場合、すなわち、値「０」が読み出された場合に、データの劣化が進行していると判断し、リフレッシュを行う。
【００６４】
一方、リファレンスセルにおいても、リファレンスデータの再度の書込みを行う。劣化したリファレンスデータを書直すためである。これらリフレッシュおよびリファレンスデータの書直しを略同時に行うことにより、データの劣化の検出精度を向上させることができる。前述のように、リファレンスデータとしてリファレンスセルに書き込む所定の値は、メモリ３００における既定値として劣化検出部３２０等に保持させることができる。
【００６５】
なお、メモリセルへの書込みは、マスクデータを使用して行われるため、ページに記憶されたデータによる再度の書込みを行ってもページを構成するメモリセルに対する書込みは実行されない。そこで、ページに記憶された値を反転させた後に、ページに記憶されていたデータを書き込むことにより、リフレッシュを行う。これにより、ページを構成する全てのメモリセルにおいて書直しを行うことができる。リファレンスデータの書直しにおいても上述した所定の値とは異なる値の書込みを行った後に所定の値の書込みを行う。上述の例に即して説明すると、値「０」の書込みを行った後に値「１」の書込みを行う。データセルと同じ条件の書込みを行うためである。
【００６６】
データセルおよびリファレンスセルは、ページアドレス毎にそれぞれ割り当てられているため、ページに対する書込みが行われた際のリファレンスセルへの書込みを防ぐ必要がある。上述したリファレンスデータの書直し以外の不要な書込みを防止するためである。これは、マスクデータを使用することにより行うことができる。図６のリセット処理用マスクデータおよびセット処理用マスクデータのうちリファレンスセルに該当するビットを常に値「１」にする。例えば、同図の８ビットのマスクデータのうち右端のビットがリファレンスセルに該当するビットの場合、セット処理用マスクデータを「１１１１１０１１」に変更する。なお、同図のリセット処理用マスクデータは、右端のビットが値「１」であるため、変更の必要はない。一方、リファレンスデータの書直しの際には、リファレンスセルに該当するビット以外のビットを値「１」としたマスクデータを使用してセット処理およびリセット処理を行う。これにより、ページにおけるリファレンスセルにのみ書込みを行うことができる。
【００６７】
リファレンスデータとしてリファレンスセルに記憶させる所定の値には、早くデータが劣化する値を採用すると好適である。データセルにおいてデータの劣化によるデータの破壊が発生する前に、リファレンスセルによるデータの劣化の検出を行うことができ、データの劣化の検出精度を向上させることができるためである。図５において説明したように、読出しの際に記憶素子３５１に対してリセット処理と同じ極性の読出し電圧が印加される場合には、読出しを行うたびにリセット処理と同様の効果を生じる。このため、ＬＲＳからＨＲＳへの変化が生じ易いと考えることができる。このような場合には、ＬＲＳに対応する値「１」の方がＨＲＳに対応する値「０」より早く劣化すると考えられるため、この値「１」をリファレンスデータの所定の値として採用することができる。
【００６８】
［メモリセルアレイの構成］
図７は、本技術の第１の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。同図のメモリセルアレイ３５０は、データセル３５４と、リファレンスセル３５５とを備える。また、同図に表した例では、メモリセルアレイ３５０には、４２２３ビットのデータセル３５４と１ビットのリファレンスセル３５５とがページ毎に配置されている。同図において、「ＲＤ」はリファレンスデータを表している。また、データセルには４０９６ビットのデータおよび１２７ビットの冗長が記憶される。この冗長にはパリティの他にデータの管理情報、例えば、データのアドレス変換情報を記憶させることができる。
【００６９】
［読出し処理（メモリコントローラの処理）］
図８は、本技術の第１の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。同図の処理は、ホストコンピュータ１００からの読出しコマンドがホストインターフェース２３０を介して入力されることにより開始される。まず、プロセッサ２１０が読出しコマンドを解釈し、これに基づく読出しリクエストを生成してメモリ３００に対して要求する（ステップＳ９０１）。次に、メモリコントローラ２００は、メモリ３００から読出しデータが出力されるまで待機し（ステップＳ９０２）、出力された読出しデータを取得すると（ステップＳ９０２：Ｙｅｓ）ステップＳ９０３の処理に移行する。ステップＳ９０３において、ＥＣＣ処理部２４０は、出力された読出しデータに対してＥＣＣ復号を行う（ステップＳ９０３）。この際、読出しデータの誤りが検出された場合には、ＥＣＣ処理部２４０が誤り訂正をさらに行う。この誤り訂正に失敗した場合にはＥＣＣエラーとなり（ステップＳ９０４：Ｙｅｓ）、プロセッサ２１０は、読出しコマンドの処理が異常終了した旨をホストコンピュータ１００に通知する（ステップＳ９０８）。その後、読出し処理を終了する。
【００７０】
一方、読出しデータに誤りが検出されなかった場合または誤り訂正に成功した場合は（ステップＳ９０４：Ｎｏ）、プロセッサ２１０は、ステップＳ９０５の処理に移行する。ステップＳ９０５において、プロセッサ２１０は、読出しデータをホストコンピュータ１００に対して出力するとともに、読出しコマンドの処理が正常終了した旨をホストコンピュータ１００に通知する（ステップＳ９０５）。次に、メモリ３００からデータの劣化が通知された場合には（ステップＳ９０９：Ｙｅｓ）、プロセッサ２１０は、リファレンスデータ書直しおよびリフレッシュを行い（ステップＳ９１０）、読出し処理を終了する。一方、メモリ３００からデータの劣化が通知されなかった場合には（ステップＳ９０９：Ｎｏ）、プロセッサ２１０は、ステップＳ９１０の処理をスキップして読出し処理を終了する。
【００７１】
なお、メモリコントローラ２００は、メモリ３００からデータ劣化の通知があった場合において、ステップＳ９１０の処理を任意のタイミングで行うことができる。例えば、メモリ３００へのリクエストの要求が連続する場合には、連続するこれらの処理の終了後にステップＳ９１０の処理を行うことができる。このような場合、メモリコントローラ２００は、データの劣化が検出されたページアドレスを保持する必要がある。
【００７２】
［リファレンスデータ書直しおよびリフレッシュ処理（メモリコントローラの処理）］
図９は、本技術の第１の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ９１０）の処理手順（メモリコントローラ）の一例を示す図である。同図の処理手順は、図８におけるステップＳ９１０に相当する処理手順である。まず、プロセッサ２１０は、リファレンスデータ書直しリクエストをメモリ３００に対して要求する（ステップＳ９１１）。このリクエストは、データの劣化の検出に係るリファレンスセルに対して、リファレンスデータの書直しを要求するリクエストである。次に、プロセッサ２１０は、リフレッシュリクエストをメモリ３００に対して要求する（ステップＳ９１２）。このリクエストは、データの劣化が検出されたページのデータセルに対してリフレッシュを要求するリクエストである。その後、プロセッサ２１０は、リファレンスデータ書直しおよびリフレッシュ処理を終了する。
【００７３】
［書込み処理（メモリコントローラの処理）］
図１０は、本技術の第１の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。同図の処理は、ホストコンピュータ１００からの書込みコマンドがホストインターフェース２３０を介して入力されることにより開始される。まず、プロセッサ２１０が書込みコマンドを解釈し、これに基づく書込みリクエストを生成してメモリ３００に要求する（ステップＳ９２１）。次に、メモリコントローラ２００は、メモリ３００からのレスポンスを受信するまで待機し（ステップＳ９２２）、レスポンスの受信後（ステップＳ９２２：Ｙｅｓ）、ステップＳ９２４の処理に移行する。ステップＳ９２４において、レスポンスが書込みエラーを示すものである場合には（ステップＳ９２４：Ｙｅｓ）、代替処理部２６０により代替処理が可能か否について判断される（ステップＳ９２６）。
【００７４】
その結果、代替処理が可能である場合には（ステップＳ９２６：Ｙｅｓ）、代替処理部２６０による代替処理が行われ、代替されたページアドレスに基づく代替書込みリクエストが要求される（ステップＳ９２７）。このリクエストは、メモリ３００に対して代替されたページアドレスに基づく再度の書込みを要求するリクエストである。その後、プロセッサ２１０は、ステップＳ９２２からの処理に移行する。一方、ステップＳ９２６において、代替処理が可能でない場合には（ステップＳ９２６：Ｎｏ）、プロセッサ２１０は、書込みコマンドが異常終了した旨をホストコンピュータ１００に対して通知し（ステップＳ９２８）、書込み処理を終了する。
【００７５】
一方、ステップＳ９２４において、レスポンスが書込みエラーを示すものでない場合には（ステップＳ９２４：Ｎｏ）、プロセッサ２１０は、書込みコマンドが正常終了した旨をホストコンピュータ１００に通知する（ステップＳ９２５）。次に、メモリ３００からデータの劣化が通知された場合には（ステップＳ９２９：Ｙｅｓ）、プロセッサ２１０は、図９において説明したリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ９１０）を行い、書込み処理を終了する。一方、メモリ３００からデータの劣化が通知されていない場合には（ステップＳ９２９：Ｎｏ）、プロセッサ２１０は、ステップＳ９１０の処理をスキップして書込み処理を終了する。
【００７６】
なお、メモリコントローラ２００は、読出し処理の場合と同様に、メモリ３００からデータ劣化の通知があった場合において、ステップＳ９１０の処理を任意のタイミングで行うことができる。
【００７７】
［読出し処理（メモリの処理）］
図１１は、本技術の第１の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。同図の処理は、メモリコントローラ２００からの読出しリクエストがメモリコントローラインターフェース３３０を介して入力されることにより開始される。まず、読出制御部３４０がデータの読出しを行う（ステップＳ９３１）。この際、読出制御部３４０は、読出しリクエストに基づくページアドレスのデータをメモリセルアレイ３５０から読み出してページバッファ３８０に保持させる。なお、この際、リファレンスセルからのリファレンスデータの読出しも行われる。すなわち、リファレンスセルからリファレンスデータが出力される。次に、読出制御部３４０は、読み出したデータをメモリコントローラ２００に対して出力する（ステップＳ９３２）。このデータは、メモリコントローラインターフェース３３０を介して出力される。
【００７８】
次に、劣化検出部３２０により、データが劣化しているか否かが判断される（ステップＳ９３３）。これは、読出し対象のページに対応するリファレンスセルからリファレンスデータとして書き込んだ所定の値とは異なる値が読み出されたか否かにより判断される。その結果、データが劣化していた場合には（ステップＳ９３３：Ｙｅｓ）、読出制御部３４０は、データの劣化をレスポンスとしてメモリコントローラ２００に通知し（ステップＳ９３４）。読出し処理を終了する。一方、データが劣化していない場合には（ステップＳ９３３：Ｎｏ）、読出制御部３４０は、ステップＳ９３４の処理をスキップして読出し処理を終了する。
【００７９】
［書込み処理（メモリの処理）］
図１２は、本技術の第１の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。同図の処理は、メモリコントローラ２００からの書込みリクエストがメモリコントローラインターフェース３３０を介して入力されることにより開始される。まず、書込制御部３１０は、書込みリクエストに付随する書込みデータをページバッファ３８０に転送する（ステップＳ９４１）。次に、書込制御部３１０は、図６において説明したプレリードを行う（ステップＳ９４２）。これにより、書込みリクエストに基づくページアドレスのデータがメモリセルアレイ３５０から読み出される。このプレリードの際、リファレンスセルからリファレンスデータが出力される。劣化検出部３２０により、データの劣化が検出された場合には（ステップＳ９４３：Ｙｅｓ）、書込制御部３１０は、データの劣化をレスポンスとしてメモリコントローラ２００に通知する（ステップＳ９４４）。その後、書込制御部３１０は、ステップＳ９４５の処理に移行する。
【００８０】
一方、データの劣化が検出されなかった場合には（ステップＳ９４３：Ｎｏ）、書込制御部３１０は、ステップＳ９４４の処理をスキップしてステップＳ９４５の処理に移行する。ステップＳ９４５において、書込制御部３１０は、データの書込みを行う（ステップＳ９４５）。これは、図６において説明したマスクデータの生成、リセット処理およびセット処理により構成させる処理である。
【００８１】
次に、書込制御部３１０は、検証を行う（ステップＳ９４７）。これは、前述のように、書込み対象のデータセルから読出しを行い、読み出したデータと書込みデータとが一致するか否かを判断することにより行われる。書込制御部３１０は、この検証の結果をレスポンスとしてメモリコントローラ２００に通知し（ステップＳ９４８）、書込み処理を終了する。
【００８２】
［リファレンスデータ書直し処理（メモリの処理）］
図１３は、本技術の第１の実施の形態におけるリファレンスデータ書直し処理の処理手順（メモリ）の一例を示す図である。同図の処理は、メモリコントローラ２００からのリファレンスデータ書直しリクエストがメモリコントローラインターフェース３３０を介して入力されることにより開始される。まず、書込制御部３１０がリファレンスデータの反転値をリファレンスセルに書き込む（ステップＳ９５２）。この際、書込制御部３１０は、読出しリクエストまたは書込みリクエストの対象となったページアドレスのリファレンスセルに対して書込みを行う。次に、書込制御部３１０がリファレンスデータをリファレンスセルに書き込む（ステップＳ９５３）。その後、書込制御部３１０は、リファレンスデータ書直し処理を終了する。
【００８３】
［リフレッシュ処理（メモリの処理）］
図１４は、本技術の第１の実施の形態におけるリフレッシュ処理の処理手順（メモリ）の一例を示す図である。同図の処理は、メモリコントローラ２００からのリフレッシュリクエストがメモリコントローラインターフェース３３０を介して入力されることにより開始される。まず、書込制御部３１０が、リフレッシュ処理の対象となるページからデータの読出しを行う（ステップＳ９６１）。この際読み出されたデータは、ページバッファ３８０に保持される。次に、書込制御部３１０は、ページを構成するデータセルの全ビットに対して値「１」を書き込む（ステップＳ９６４）。次に、書込制御部３１０は、ページを構成するデータセルの全ビットに対して値「０」を書き込む（ステップＳ９６５）。これらにより、データセルの値の反転が行われる。最後に、書込制御部３１０は、ステップＳ９６１において読出したデータ（ページバッファ３８０に保持させたデータ）の書込みを行い（ステップＳ９６９）、リフレッシュ処理を終了する。
【００８４】
このように、本技術の第１の実施の形態では、ページ毎にリファレンスセルを配置し、このリファレンスセルに記憶させたリファレンスデータに基づいてデータセルにおけるデータの劣化を検出し、リフレッシュを行う。これにより、リフレッシュを行うタイミングを簡便な処理により取得することができる。
【００８５】
＜２．第２の実施の形態＞
上述の実施の形態では、リフレッシュの際、値「１」および値「０」の２度の書込みを行うことにより、データセルの値の反転を行っていた。これに対し本技術の第２の実施の形態では、１度の書込みによりデータセルの値の反転を行う。これにより、リフレッシュ処理を簡略化することができる。
【００８６】
［リフレッシュ処理（メモリの処理）］
図１５は、本技術の第２の実施の形態におけるリフレッシュ処理の処理手順（メモリ）の一例を示す図である。まず、書込制御部３１０が、リフレッシュ処理の対象となるページからのデータの読出しを行う（ステップＳ９７１）。次に、書込制御部３１０は、読み出したデータの全ビットを反転したデータの書込みを行う（ステップＳ９７６）。最後に、書込制御部３１０は、読み出したデータの書込みを行い（ステップＳ９７９）、リフレッシュ処理を終了する。
【００８７】
これ以外のメモリ３００における処理は図１１乃至１３において説明した処理と同様であるため、説明を省略する。また、これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【００８８】
このように、本技術の第２の実施の形態によれば、１度の書込み（ステップＳ９７６）によりデータセルの値の反転を行うことができる。これにより、リフレッシュ処理の簡略化が可能となる。
【００８９】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、メモリ３００に対してリファレンスデータ書直しおよびリフレッシュの処理がそれぞれ異なるリクエストにより要求されていた。これに対し、本技術の第３の実施の形態では、単一のリクエストによりこれらの処理を行う。これにより、メモリコントローラ２００の処理を簡略化する。
【００９０】
［メモリコントローラの処理］
本技術の第３の実施の形態におけるメモリコントローラ２００は、リファレンスデータ書直しリクエストおよびリフレッシュリクエストに代えてリファレンスデータ書直しおよびリフレッシュリクエストをメモリ３００に対して要求する。具体的には、図９において説明したステップＳ９１１およびステップＳ９１２の代わりにリファレンスデータ書直しおよびリフレッシュリクエストをメモリ３００に対して要求する。
【００９１】
これ以外のメモリコントローラ２００における処理は、図８および１０において説明した処理と同様であるため説明を省略する。
【００９２】
［リファレンスデータ書直しおよびリフレッシュ処理］
図１６は、本技術の第３の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理の処理手順の一例を示す図である。まず、書込制御部３１０がリフレッシュ処理の対象となるページからのデータの読出しを行う（ステップＳ９８１）。次に、書込制御部３１０は、リファレンスデータの反転値をデータセルおよびリファレンスセルに対して書き込む（ステップＳ９８２）。次に、書込制御部３１０は、リファレンスデータをデータセルおよびリファレンスセルに対して書き込む（ステップＳ９８３）。最後に、書込制御部３１０は、読み出したデータの書込みを行い（ステップＳ９８９）、リファレンスデータ書直しおよびリフレッシュ処理を終了する。
【００９３】
これ以外のメモリ３００における処理は図１１および１２において説明した処理と同様であるため、説明を省略する。また、これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【００９４】
このように、本技術の第３の実施の形態によれば、１度のリクエストによりリファレンスデータ書直しおよびリフレッシュを行うことができる。これにより、メモリコントローラ２００の処理の簡略化が可能となる。
【００９５】
＜４．第４の実施の形態＞
上述の第１の実施の形態では、データセルおよびリファレンスセルに同じ電圧の書込み電圧を印加して書込みを行っていた。これに対し、本技術の第４の実施の形態では、データセルとは異なる電圧の書込み電圧をリファレンスセルに印加する。これにより、データの劣化の検出精度を向上させる。
【００９６】
［記憶素子の特性］
図１７は、本技術の第４の実施の形態における記憶素子３５１の特性を示す図である。同図は、本技術の第４の実施の形態におけるリファレンスセルの記憶素子３５１の特性を表したものである。本技術の第４の実施の形態では、リファレンスセルには、データセルとは異なる書込み電圧を印加して書込みを行う。ここで、データセルとは異なる書込み電圧を第２の書込み電圧と称する。図６において説明したように、書込みは、セット処理およびリセット処理により行われる。セット処理の際には、データセルの書込み電圧と同じ電圧の書込み電圧がリファレンスセルに印加される。一方、リセット処理の際には、データセルの書込み電圧より低い電圧の書込み電圧がリファレンスセルに印加される。ここで、低い電圧とは、絶対値が低い電圧を表す。この書込み電圧が、上述の第２の書込み電圧に該当する。リセット処理の際の書込み電圧がセット処理の際の書込み電圧より低いため、同図に表したように、ＨＲＳの時の記憶素子３５１の抵抗値が低下し、同図のグラフ４０４の位置は、図５において説明したグラフ４０４と比べて閾値４０３に近いものとなる。ここで、同図に記載された一点鎖線は、図５におけるグラフ４０４の位置を表したものである。
【００９７】
このような場合には、閾値に近い抵抗値となるＨＲＳの方がＬＲＳより速く劣化する。この速く劣化する状態に対応する値をリファレンスデータの所定の値にする。例えば、ＨＲＳが値「０」に対応する場合には、値「０」をリファレンスデータの所定の値としてリファレンスセルに書き込む。データセルにおいてデータの劣化によるデータの破壊が発生する前に、リファレンスセルによるデータの劣化の検出を行うことができ、データの劣化の検出精度を向上させることができる。
【００９８】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【００９９】
このように、本技術の第４の実施の形態では、データセルにおける書込み電圧とは異なる第２の書込み電圧を印加して書込みを行うことにより、劣化を早めたリファレンスデータを使用する。これにより、データの劣化の検出精度を向上させることができる。
【０１００】
［変形例］
上述の本技術の第４の実施の形態では、リセット処理の際に、データセルとは異なる書込み電圧をリファレンスセルに印加していた。これに対し、セット処理の際にもデータセルとは異なる書込み電圧をリファレンスセルに印加してもよい。
【０１０１】
図４において説明したメモリセル３５３において、製造直後の記憶素子３５１は、ＨＲＳの状態にある。このメモリセル３５３に書込み電圧を印加し、ＬＲＳに遷移させる。この処理は、フォーミングと称される。また、この時印加される書込み電圧は、フォーミング電圧と称され、通常の書込み電圧より高い値の電圧である。このフォーミングにより記憶素子３５１は、図１７におけるグラフ４０１により表されるＬＲＳとなる。データセルおよびリファレンスセルのフォーミングにおいて同じ値のこのフォーミング電圧を使用することにより、ＬＲＳについてはデータセルおよびリファレンスセルにおいて同じ特性になる。そして、リファレンスセルのセット処理およびリセット処理の際に印加する電圧をデータセルにおける書込み電圧より絶対値が低い電圧である第２の書込み電圧にする。これにより、図１７において説明したグラフ４０４により表されるＨＲＳにすることができる。本技術の第４の実施の形態と同様に、データの劣化の検出精度の向上が可能になる。
【０１０２】
＜５．第５の実施の形態＞
上述の本技術の第４の実施の形態では、リファレンスセルに印加する書込み電圧を変更していた。これに対し、本技術の第５の実施の形態では、リファレンスセルからの読出しの際の閾値を変更する。これにより、データの劣化の検出精度を向上させる。
【０１０３】
［記憶素子の特性］
図１８は、本技術の第５の実施の形態における記憶素子３５１の特性を示す図である。同図は、本技術の第５の実施の形態におけるリファレンスセルの記憶素子３５１の特性を表したものである。本技術の第５の実施の形態では、データセルとは異なる閾値に基づいてリファレンスセルからの読出しを行う。ここで、データセルとは異なる閾値を第２の閾値と称する。同図の閾値４０３は、図５において説明した閾値４０３と比較して、グラフ４０２に接近した値になっている。この閾値４０３が上述の第２の閾値に該当する。ここで、同図に記載された一点鎖線は、図５における閾値４０３の位置を表したものである。このため、ＨＲＳの方がＬＲＳより劣化が早くなる。リファレンスデータの所定の値としてＨＲＳに対応する値「０」を採用することにより、データの劣化の検出精度を向上させることができる。
【０１０４】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【０１０５】
このように、本技術の第５の実施の形態では、データセルにおける閾値とは異なる第２の閾値に基づいてリファレンスセルからの読出しを行うことにより、劣化を早めたリファレンスデータを使用する。これにより、データの劣化の検出精度を向上させることができる。
【０１０６】
＜６．第６の実施の形態＞
上述の第１の実施の形態では、メモリ３００がデータの劣化を検出していた。これに対し、本技術の第６の実施の形態では、メモリコントローラ２００がデータの劣化の検出を行い、リフレッシュ等の処理を行う。これにより、メモリ３００におけるデータの劣化の検出の処理を削減することができる。
【０１０７】
［メモリコントローラの構成］
図１９は、本技術の第６の実施の形態におけるメモリコントローラ２００の構成例を示す図である。このメモリコントローラ２００は、劣化検出部２２０をさらに備える点で、図２において説明したメモリコントローラ２００とは異なる。
【０１０８】
劣化検出部２２０は、メモリ３００に記憶されたデータの劣化を検出するものである。後述するように、本技術の第６の実施の形態におけるメモリコントローラ２００は、メモリ３００のページ毎に所定の値をリファレンスデータとしてデータに付加し、書込みを行う。読出し処理の際、読み出した値がリファレンスデータとして書き込んだ値と異なる場合に、劣化検出部２２０は、当該読出しの対象のページにおいてデータの劣化を検出する。
【０１０９】
［メモリの構成］
図２０は、本技術の第６の実施の形態におけるメモリ３００の構成例を示す図である。このメモリ３００は、図２において説明したメモリ３００と比較して、劣化検出部３２０を備える必要はない。
【０１１０】
メモリコントローラ２００は、ページを構成するデータの所定の領域をリファレンスデータの記憶領域として処理する。具体的には、メモリコントローラ２００は、書込みを行う際、このリファレンスデータの記憶領域に該当するビットの位置にリファレンスデータを付加したデータを書込みデータとしてメモリ３００に書き込む。その後、メモリコントローラ２００は、読出しを行った際、読み出したデータからリファレンスデータを削除し、残りのデータを読出しデータとしてホストコンピュータに出力する。同時に、劣化検出部２２０により、データの劣化が検出される。また、リファレンスデータの書直しおよびリフレッシュの処理は、通常の書込み処理により実行される。このように、データの劣化の検出をメモリコントローラ２００において行うため、本技術の第１の実施の形態における記憶装置とは異なり、書込みの際のプレリード時には、データの劣化の検出を行うことができない。しかし、本技術の第６の実施の形態では、通常の不揮発メモリをメモリ３００として使用し、記憶装置を構成することができる。
【０１１１】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【０１１２】
［読出し処理（メモリコントローラの処理）］
図２１は、本技術の第６の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。まず、プロセッサ２１０が読出しコマンドを解釈し、これに基づく読出しリクエストを生成してメモリ３００に要求する（ステップＳ８０１）。次に、メモリコントローラ２００は、メモリ３００から読出しデータが出力されるまで待機し（ステップＳ８０２）、出力された読出しデータを取得すると（ステップＳ８０２：Ｙｅｓ）、ステップＳ８０３の処理に移行する。ステップＳ８０３において、ＥＣＣ処理部２４０は、出力された読出しデータに対してＥＣＣ復号、誤り検出および誤り訂正を行う。この誤り訂正に失敗した場合にはＥＣＣエラーとなり（ステップＳ８０４：Ｙｅｓ）、プロセッサ２１０は、読出しコマンドの処理が異常終了した旨をホストコンピュータ１００に通知する（ステップＳ８０８）。その後、読出し処理を終了する。
【０１１３】
一方、読出しデータに誤りが検出されなかった場合または誤り訂正に成功した場合は（ステップＳ８０４：Ｎｏ）、プロセッサ２１０は、ステップＳ８０５の処理に移行する。ステップＳ８０５において、プロセッサ２１０は、読出しデータをホストコンピュータ１００に対して出力するとともに、読出しコマンドの処理が正常終了した旨をホストコンピュータ１００に通知する（ステップＳ８０５）。次に、劣化検出部２２０がデータの劣化を検出した場合には（ステップＳ８０９：Ｙｅｓ）、プロセッサ２１０は、リファレンスデータ書直しおよびリフレッシュを行う（ステップＳ８１０）。その後、プロセッサ２１０は、読出し処理を終了する。一方、劣化検出部２２０がデータの劣化を検出しなかった場合には（ステップＳ８０９：Ｎｏ）、プロセッサ２１０は、ステップＳ８１０の処理をスキップして読出し処理を終了する。
【０１１４】
［リファレンスデータ書直しおよびリフレッシュ処理（メモリコントローラの処理）］
図２２は、本技術の第６の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ８１０）の処理手順（メモリコントローラ）の一例を示す図である。同図の処理手順は、図２１におけるステップＳ８１０に相当する処理手順である。まず、プロセッサ２１０は、リファレンスデータの反転値の書込みを行う（ステップＳ８１２）。これは、全てのビットをリファレンスデータの反転値とした書込みデータを該当するページに書き込むことにより行われる。次に、プロセッサ２１０は、リファレンスデータの書込みを行う（ステップＳ８１３）。これは、全てのビットをリファレンスデータとした書込みデータを該当するページに書き込むことにより行われる。最後に、プロセッサ２１０は、メモリ３００から読み出したデータにリファレンスデータを付加したデータの書込みを行い（ステップＳ８１９）、リファレンスデータ書直しおよびリフレッシュ処理を終了する。
【０１１５】
［書込み処理（メモリコントローラの処理）］
図２３は、本技術の第６の実施の形態における書込み処理の処理手順（メモリコントローラ）の一例を示す図である。まず、プロセッサ２１０が書込みコマンドを解釈し、これに基づく書込みリクエストを生成してメモリ３００に要求する（ステップＳ８２１）。次に、メモリコントローラ２００は、メモリ３００からのレスポンスを受信するまで待機する（ステップＳ８２２）。受信したレスポンスが書込みエラーを示すものである場合には（ステップＳ８２４：Ｙｅｓ）、代替処理部２６０により代替処理が可能か否について判断される（ステップＳ８２６）。代替処理が可能である場合には（ステップＳ８２６：Ｙｅｓ）、代替処理部２６０による代替処理が行われ、代替されたページアドレスに基づく代替書込みリクエストが要求される（ステップＳ８２７）。その後、プロセッサ２１０は、ステップＳ８２２からの処理に移行する。一方、ステップＳ８２６において、代替処理が可能でない場合には（ステップＳ８２６：Ｎｏ）、プロセッサ２１０は、書込みコマンドが異常終了した旨をホストコンピュータ１００に対して通知し（ステップＳ８２８）、書込み処理を終了する。
【０１１６】
一方、ステップＳ８２４において、レスポンスが書込みエラー示すものでない場合には（ステップＳ８２４：Ｎｏ）、プロセッサ２１０は、書込みコマンドが正常終了した旨をホストコンピュータ１００に通知する（ステップＳ８２５）。その後、プロセッサ２１０は、書込み処理を終了する。
【０１１７】
［読出し処理（メモリの処理）］
図２４は、本技術の第６の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。まず、読出制御部３４０がデータの読出しを行う（ステップＳ８３１）。次に、読出制御部３４０は、読み出したデータをメモリコントローラ２００に対して出力し（ステップＳ８３２）、読出し処理を終了する。
【０１１８】
［書込み処理（メモリの処理）］
図２５は、本技術の第６の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。まず、書込制御部３１０は、書込みリクエストに付随する書込みデータをページバッファ３８０に転送する（ステップＳ８４１）。次に、書込制御部３１０は、プレリードを行う（ステップＳ８４２）。次に、書込制御部３１０は、データの書込みを行う（ステップＳ８４５）。次に、書込制御部３１０は、検証を行う（ステップＳ８４７）。最後に、書込制御部３１０は、この検証の結果をメモリコントローラ２００に通知し（ステップＳ８４８）、書込み処理を終了する。
【０１１９】
このように、本技術の第６の実施の形態によれば、メモリコントローラにおいてデータの劣化の検出が行われるため、メモリ３００におけるデータの劣化の検出を省略することができる。これにより、メモリ３００の処理を簡略化することができる。
【０１２０】
［変形例］
上述の第６の実施の形態では、本技術の第１の実施の形態とは異なり、メモリ３００におけるデータの書込み（リセットおよびセット等の処理）がデータセルおよびリファレンスセルを区別することなく行われる。このため、プレリードの際、劣化により所定の値とは異なる値がリファレンスデータとして読み出された場合、リファレンスデータの書込みが発生する。すなわち、意図しないリファレンスデータの書直しがメモリ３００により実行される。このため、メモリコントローラ２００によるデータの劣化の検出が正確に行われない場合がある。
【０１２１】
そこで、本技術の第１の実施の形態におけるメモリ３００のように、データの書込みの際には、マスクデータによりリファレンスセルへの書込みを防止する方式を使用することができる。具体的には、図２５において説明した書込み処理のうち、データの書込み（ステップＳ８４５）において、マスクデータによりリファレンスデータを記憶する領域（ビット）への書込みを防止する処理を採用する。さらに、リファレンスデータ書直しおよびリフレッシュ処理をメモリコントローラ２００が要求するリクエストに基づいて実行する方式とする。具体的には、図２２において説明したステップＳ８１０の処理の代わりに図９において説明したステップＳ９１０の処理をメモリコントローラ２００が実行する。メモリ３００は、本技術の第１の実施の形態と同様に、リファレンスデータの書直しを要求するリクエストとリフレッシュを要求するリクエストを実行できるように構成する。これにより、上述したデータの書込みの際のリファレンスデータの書直しを防止することができ、メモリコントローラ２００によるデータの劣化の検出精度を向上させることができる。
【０１２２】
＜７．第７の実施の形態＞
上述の第１の実施の形態では、メモリコントローラ２００がメモリ３００にリクエストを要求してリフレッシュ等の処理を行っていた。これに対し、本技術の第７の実施の形態では、メモリ３００が独立してリフレッシュ等の処理を行う。これにより、メモリコントローラ２００におけるリフレッシュ等の処理を削減することができる。
【０１２３】
なお、本技術の第７の実施の形態におけるメモリコントローラ２００には、図２において説明したメモリコントローラ２００を使用することができる。また、メモリ３００には、図３において説明したメモリ３００を使用することができる。
【０１２４】
［読出し処理（メモリコントローラの処理）］
図２６は、本技術の第７の実施の形態における読出し処理の処理手順（メモリコントローラ）の一例を示す図である。まず、プロセッサ２１０が読出しコマンドを解釈し、これに基づく読出しリクエストを生成してメモリ３００に要求する（ステップＳ７０１）。次に、メモリコントローラ２００は、メモリ３００から読出しデータが出力されるまで待機し（ステップＳ７０２）、出力された読出しデータを取得すると（ステップＳ７０２：Ｙｅｓ）、ステップＳ７０３の処理に移行する。ステップＳ７０３において、ＥＣＣ処理部２４０は、出力された読出しデータに対してＥＣＣ復号、誤り検出および誤り訂正を行う（ステップＳ７０３）。この誤り訂正に失敗した場合にはＥＣＣエラーとなり（ステップＳ７０４：Ｙｅｓ）、プロセッサ２１０は、読出しコマンドの処理が異常終了した旨をホストコンピュータ１００に通知し（ステップＳ７０８）、読出し処理を終了する。
【０１２５】
一方、読出しデータに誤りが検出されなかった場合または誤り訂正に成功した場合は（ステップＳ７０４：Ｎｏ）、プロセッサ２１０は、ステップＳ７０５の処理に移行する。ステップＳ７０５において、プロセッサ２１０は、読出しデータをホストコンピュータ１００に対して出力するとともに、読出しコマンドの処理が正常終了した旨をホストコンピュータ１００に通知し（ステップＳ７０５）、読出し処理を終了する。
【０１２６】
なお、メモリコントローラ２００における書込み処理の処理手順は、図２３において説明した書込み処理の処理手順と同様であるため、説明を省略する。
【０１２７】
［読出し処理（メモリの処理）］
図２７は、本技術の第７の実施の形態における読出し処理の処理手順（メモリ）の一例を示す図である。まず、読出制御部３４０がデータの読出しを行う（ステップＳ７３１）。次に、読出制御部３４０は、読み出したデータをメモリコントローラ２００に対して出力する（ステップＳ７３２）。次に、劣化検出部３２０により、データが劣化しているか否かが判断される（ステップＳ７３３）。その結果、データが劣化していた場合には（ステップＳ７３３：Ｙｅｓ）、読出制御部３４０は、リファレンスデータ書直しおよびリフレッシュ処理を行う（ステップＳ７５０）。次に、読出制御部３４０は、読み出したデータをデータセルに書き込む（ステップＳ７３９）。その後、読出制御部３４０は、読出し処理を終了する。一方、データが劣化していない場合には（ステップＳ７３３：Ｎｏ）、読出制御部３４０は、ステップＳ７５０およびＳ７３９の処理をスキップして読出し処理を終了する。
【０１２８】
［リファレンスデータ書直しおよびリフレッシュ処理（メモリの処理）］
図２８は、本技術の第７の実施の形態におけるリファレンスデータ書直しおよびリフレッシュ処理（ステップＳ７５０）の処理手順（メモリ）の一例を示す図である。同図の処理手順は、図２７におけるステップＳ７５０に相当する処理手順である。まず、書込制御部３１０は、リファレンスデータの反転値をデータセルおよびリファレンスセルに書き込む（ステップＳ７５２）。これは、全てのビットをリファレンスデータの反転値とした書込みデータを該当するデータセルおよびリファレンスセルに書き込むことにより行われる。次に、書込制御部３１０は、リファレンスデータをデータセルおよびリファレンスセルに書き込む（ステップＳ７５３）。これは、全てのビットをリファレンスデータとした書込みデータを該当するデータセルおよびリファレンスセルに書き込むことにより行われる。その後、書込制御部３１０は、リファレンスデータ書直しおよびリフレッシュ処理を終了する。
【０１２９】
［書込み処理（メモリの処理）］
図２９は、本技術の第７の実施の形態における書込み処理の処理手順（メモリ）の一例を示す図である。まず、書込制御部３１０は、書込みリクエストに付随する書込みデータをページバッファ３８０に転送する（ステップＳ７４１）。次に、書込制御部３１０は、プレリードを行う（ステップＳ７４２）。このプレリードの際、劣化検出部３２０により、データの劣化が検出された場合には（ステップＳ７４３：Ｙｅｓ）、書込制御部３１０は、リファレンスデータ書直しおよびリフレッシュを行う（ステップＳ７５０）。その後、書込制御部３１０は、ステップＳ７４５の処理に移行する。一方、データの劣化が検出されなかった場合には（ステップＳ７４３：Ｎｏ）、書込制御部３１０は、ステップＳ７５０の処理をスキップしてステップＳ７４５の処理に移行する。ステップＳ７４５において、書込制御部３１０は、データの書込みを行う（ステップＳ７４５）。次に、書込制御部３１０は、検証を行い（ステップＳ７４７）、この検証の結果をメモリコントローラ２００に通知し（ステップＳ７４８）、書込み処理を終了する。
【０１３０】
このように、本技術の第７の実施の形態によれば、データの劣化の検出、リファレンスデータ書直しおよびリフレッシュの処理をメモリ３００が行うため、メモリコントローラ２００の処理を簡略化することができる。
【０１３１】
＜８．第８の実施の形態＞
上述の第１の実施の形態では、ページ毎に１つのリファレンスセルが配置されたメモリセルアレイ３５０を使用していた。これに対し、本技術の第８の実施の形態では、ページ毎に複数のリファレンスセルが配置されたメモリセルアレイ３５０を使用する。これにより、データの劣化の検出精度を向上させることができる。
【０１３２】
［メモリセルアレイの構成］
図３０は、本技術の第８の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。同図のメモリセルアレイ３５０は、ページ毎に３ビットのリファレンスセル３５５が配置されて構成されている。これらのリファレンスセルから読み出されたリファレンスデータに基づいて、劣化検出部３２０により、データの劣化が検出される。本技術の第８の実施の形態の劣化検出部３２０は、リファレンスデータの多数決演算の結果に基づいて劣化の検出を行う。具体的には、過半数のリファレンスセルからリファレンスデータとして書き込んだ所定の値とは異なる値が読み出された場合に、劣化検出部３２０は、データが劣化したものと判断する。すなわち、複数のリファレンスセルの特性が平準化され、これに基づいてデータの劣化が検出される。これにより、リファレンスセルの特性のばらつきが大きい場合において、データの劣化の検出精度を向上させることができる。なお、多数決演算を行うため、ページ毎に配置されるリファレンスセルの個数は、奇数個にする必要がある。
【０１３３】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【０１３４】
このように、本技術の第８の実施の形態によれば、ページ毎の複数のリファレンスデータの多数決演算の結果に基づいてデータの劣化の検出が行われるため、データの劣化の検出精度を向上させることができる。
【０１３５】
［変形例］
上述の本技術の第８の実施の形態では、多数決演算を行っていたが、書き込んだ所定の値とは異なる値が読み出されたリファレンスセルの個数と所定の閾値とを比較することにより、データの劣化を検出してもよい。この場合においても、リファレンスセルの特性のばらつきが平準化されるためである。例えば、ページ毎に１０個のリファレンスセルが配置され、閾値として７を選択することができる。この場合、７個以上のリファレンスセルにおいて異なる値が読み出された場合に、データの劣化が検出される。
【０１３６】
＜９．第９の実施の形態＞
上述の第１の実施の形態では、ページ毎に１つのリファレンスセルが配置されていた。これに対し、本技術の第９の実施の形態では、複数のページ毎に１つのリファレンスセルが配置されたメモリセルアレイ３５０を使用する。これにより、メモリセルアレイ３５０のリファレンスセルの個数を削減することができる。
【０１３７】
［メモリセルアレイの構成］
図３１は、本技術の第９の実施の形態におけるメモリセルアレイ３５０の構成例を示す図である。同図のメモリセルアレイ３５０は、２つのページからなるブロック毎にリファレンスセル３５５が配置されて構成されている。
【０１３８】
［メモリアクセス方法］
（ａ）リファレンスセルが配置されていないページに対するアクセスの場合
例えば、図３１に表したページのうちの奇数アドレスのページにアクセスする場合には、次のように処理を行う。メモリコントローラ２００は、図２６において説明した読出し処理および図２３において説明した書込み処理を実行する。また、メモリ３００は、図２４において説明した読出し処理および図２５において説明した書込み処理を実行する。
（ｂ）リファレンスセルが配置されているページに対するアクセスの場合
例えば、図３１に表したページのうちの偶数アドレスのページにアクセスする場合には、次のように処理を行う。メモリコントローラ２００は、図８において説明した読出し処理および図１０において説明した書込み処理を実行する。また、メモリ３００は、図１１において説明した読出し処理および図１２において説明した書込み処理を実行する。なお、データの劣化が検出された場合には、ブロックに含まれる全てのページに対してリフレッシュが行われる。
【０１３９】
これらにより、メモリ３００に対するアクセスを行うことができる。このアクセスはページを単位として行われるため、図３１に表したブロックにおいてリファレンスセルが配置されたページと配置されていないページとはデータの劣化の度合いが異なる。しかし、これらのページは隣接するため、同一の用途に使用するデータが記憶される可能性が高い。このため、これらのページに記憶されるデータの劣化の度合いは略等しいと考えることができる。これにより、１つリファレンスセルによりブロックに記憶されたデータの劣化を検出することができる。
【０１４０】
なお、ブロックを構成するページ数は、図３１に表した例に限られない。例えば、４ページを１つのブロックにすることもできる。さらに、１つのメモリチップによりブロックを構成することもできる。この場合には、１つリファレンスセルによりメモリチップに記憶された全てのデータの劣化が検出される。また、リファレンスセルの配置は、同図に表した例に限られない。例えば、所定のページにリファレンスセルのみを配置した構成を採ることもできる。この場合には、メモリコントローラ２００は、所定のタイミングでリファレンスセルからの読出しを行い、データの劣化を検出する必要がある。通常のメモリ３００に対するアクセスでは、リファレンスセルに対する読出しが行われないためである。
【０１４１】
これ以外のメモリコントローラ２００およびメモリ３００の構成は本技術の第１の実施の形態において説明したメモリコントローラ２００およびメモリ３００の構成と同様であるため、説明を省略する。
【０１４２】
このように、本技術の第９の実施の形態によれば、複数のページにより構成されたブロック毎にリファレンスセルが配置されるため、リファレンスセルの個数を削減することができ、メモリセルアレイ３５０を小型化することができる。
【０１４３】
上述のように、本技術の実施の形態によれば、リファレンスセルから読み出したリファレンスデータに基づいてデータの劣化を検出し、リフレッシュを行う。これにより、リフレッシュを行うタイミングを簡便な処理により取得することができる。
【０１４４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１４５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０１４６】
なお、本明細書に記載された効果はあくまで例示であって、限定されるものではなく、また、他の効果があってもよい。
【０１４７】
なお、本技術は以下のような構成もとることができる。
（１）書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと
を具備する不揮発メモリ。
（２）前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部をさらに具備する前記（１）に記載の不揮発メモリ。
（３）前記劣化検出部における前記検出の際に前記データセルのデータを書直すリフレッシュの制御と前記リファレンスデータの書直しの制御とを略同時に行う書込み制御部をさらに具備する前記（２）に記載の不揮発メモリ。
（４）前記書込み制御部は、前記データセルへの書込みと前記劣化が早い前記所定の値を前記リファレンスデータとする前記リファレンスセルへの書込みとをさらに行う前記（３）に記載の不揮発メモリ。
（５）前記データセルおよび前記リファレンスセルは、書込み電圧を印加することにより書込みが行われ、
前記書込み制御部は、前記データセルへの前記書込み電圧とは異なる第２の書込み電圧を印加することにより前記リファレンスデータを前記リファレンスセルに書き込む
前記（４）に記載の不揮発メモリ。
（６）前記データセルおよび前記リファレンスセルは、読出し電圧が印加された際に流れる電流である読出し電流を閾値に基づいて判別することにより読出しが行われ、
前記データセルからの読出しと当該データセルからの読出しの際の前記閾値とは異なる第２の閾値に基づく判別による前記リファレンスセルからの読出しとを行う読出し制御部をさらに具備し、
前記書込み制御部は、前記第２の閾値により近い値の前記読出し電流となる前記所定の値を前記リファレンスデータとして書き込む
前記（４）に記載の不揮発メモリ。
（７）前記書込み制御部は、前記データセルに記憶された値を反転させた後に前記データを書き込むことにより前記リフレッシュを行う前記（３）から（６）のいずれかに記載の不揮発メモリ。
（８）前記書込み制御部は、前記所定の値とは異なる値を書き込んだ後に前記所定の値をリファレンスデータとして書き込むことにより前記リファレンスデータの書直しを行う前記（３）から（７）のいずれかに記載の不揮発メモリ。
（９）前記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、
前記リファレンスセルは、前記ページ毎に配置され、
前記劣化検出部は、前記ページ毎に前記検出を行う
前記（２）から（８）のいずれかに記載の不揮発メモリ。
（１０）前記リファレンスセルは、前記ページ毎に複数配置される前記（９）に記載の不揮発メモリ。
（１１）前記劣化検出部は、前記複数のリファレンスセルから読み出された複数の前記リファレンスデータの多数決演算に基づいて前記検出を行う前記（１０）に記載の不揮発メモリ。
（１２）前記データセルは、ページサイズにより分割されたページを単位としてアクセスされ、
前記リファレンスセルは、複数の前記ページからなるブロック毎に配置され、
前記劣化検出部は、前記ブロック毎に前記検出を行う
前記（２）から（８）のいずれかに記載の不揮発メモリ。
（１３）書き込まれたデータを記憶するデータセルと前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルとを備える不揮発メモリの前記リファレンスセルから前記所定の値とは異なる値が読み出された際に前記データの劣化を検出する劣化検出部を具備するメモリコントローラ。
（１４）書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと、
前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部と
を具備する記憶装置。
（１５）書き込まれたデータを記憶するデータセルと、
前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスセルと、
前記所定の値とは異なる値が前記リファレンスセルから読み出された際に前記データの劣化の検出を行う劣化検出部と
を備える記憶装置と、
前記記憶装置にアクセスするホストコンピュータと
を具備する情報処理システム。
（１６）書き込まれたデータを記憶するデータセルと前記データセルと同一チップに形成されて前記データと略同時に所定の値をリファレンスデータとして記憶して前記データの劣化を検出するために前記リファレンスデータを出力するリファレンスデータ出力手順を具備する不揮発メモリの制御方法。
【符号の説明】
【０１４８】
１００  ホストコンピュータ
１１０、２１０  プロセッサ
１２０、３３０  メモリコントローラインターフェース
２００  メモリコントローラ
２２０  劣化検出部
２３０  ホストインターフェース
２４０  ＥＣＣ処理部
２５０  アドレス変換部
２６０  代替処理部
２７０  メモリインターフェース
２８０  バッファ
３００  メモリ
３１０  書込制御部
３２０  劣化検出部
３４０  読出制御部
３５０  メモリセルアレイ
３５１  記憶素子
３５２  ＭＯＳトランジスタ
３５３  メモリセル
３５４  データセル
３５５  リファレンスセル
３８０  ページバッファ
【図１】
2017021877.tif 000003
【図２】
2017021877.tif 000004
【図３】
2017021877.tif 000005
【図４】
2017021877.tif 000006
【図５】
2017021877.tif 000007
【図６】
2017021877.tif 000008
【図７】
2017021877.tif 000009
【図８】
2017021877.tif 000010
【図９】
2017021877.tif 000011
【図１０】
2017021877.tif 000012
【図１１】
2017021877.tif 000013
【図１２】
2017021877.tif 000014
【図１３】
2017021877.tif 000015
【図１４】
2017021877.tif 000016
【図１５】
2017021877.tif 000017
【図１６】
2017021877.tif 000018
【図１７】
2017021877.tif 000019
【図１８】
2017021877.tif 000020
【図１９】
2017021877.tif 000021
【図２０】
2017021877.tif 000022
【図２１】
2017021877.tif 000023
【図２２】
2017021877.tif 000024
【図２３】
2017021877.tif 000025
【図２４】
2017021877.tif 000026
【図２５】
2017021877.tif 000027
【図２６】
2017021877.tif 000028
【図２７】
2017021877.tif 000029
【図２８】
2017021877.tif 000030
【図２９】
2017021877.tif 000031
【図３０】
2017021877.tif 000032
【図３１】
2017021877.tif 000033