(57)【要約】  可変抵抗素子が設けられた不揮発性メモリにおいて電圧降下の変動を抑制する。  初期化制御部は、可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードとアクセス制限領域への書込みを許可するライタブルモードとのうちリードオンリーモードにおいてアクセス制限領域内の可変抵抗素子の抵抗値を所定値より大きい初期値に変化させてライタブルモードに移行する。また、ライト制御部は、ライタブルモードにおいてアクセス制限領域内の可変抵抗素子のうちライトデータに対応する素子の抵抗値を初期値より小さい値に変化させてリードオンリーモードに移行する。
2017138234.tif 000002
【特許請求の範囲】
【請求項１】
可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御部と、
前記ライタブルモードにおいて前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御部と
を具備するメモリコントローラ。
【請求項２】
前記アクセス制限領域は、前記メモリセルアレイの一部の領域である
請求項１記載のメモリコントローラ。
【請求項３】
前記メモリセルアレイは、前記アクセス制限領域と前記リードオンリーモードにおいて書き込みが許可される非制限領域とを有し、
前記アクセス制限領域は、第１のアクセス制限領域と当該第１のアクセス制限領域よりもドライバから遠い第２のアクセス制限領域とを有し、
前記非制限領域は、第１の非制限領域と当該第１の非制限領域よりも前記ドライバから遠い第２の非制限領域とを有し、
前記初期化制御部は、前記第２の非制限領域と前記第２のアクセス制限領域とにおける前記可変抵抗素子の抵抗値を前記初期値に変化させて前記ライタブルモードに移行する
請求項２記載のメモリコントローラ。
【請求項４】
前記ライト制御部は、前記第２の非制限領域と前記第２のアクセス制限領域とにおいて前記可変抵抗素子の抵抗値が前記初期値である場合には前記第１のアクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させる
請求項３記載のメモリコントローラ。
【請求項５】
前記ライト制御部は、前記第２の非制限領域において前記可変抵抗素子の抵抗値が前記初期値である場合には前記第２のアクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させる
請求項３記載のメモリコントローラ。
【請求項６】
前記ライト制御部は、前記ライタブルモードにおいて前記第２の非制限領域と前記第１のアクセス制限領域と前記第２のアクセス制限領域とのいずれかの前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させた場合には前記リードオンリーモードに移行する
請求項３記載のメモリコントローラ。
【請求項７】
前記初期化制御部は、ライトアドレスの最大値および最小値の一方に対応する前記可変抵抗素子よりもドライバに近い可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１記載のメモリコントローラ。
【請求項８】
前記初期化制御部は、前記アクセス制限領域の少なくとも一部の所定の範囲がアクセス範囲として指定されると前記アクセス範囲内の前記可変抵抗素子と前記アクセス範囲よりも配線距離の短い前記可変抵抗素子との抵抗値を前記初期値より小さい値に変化させる
請求項１記載のメモリコントローラ。
【請求項９】
前記初期化制御部は、前記アクセス制限領域内の全ての可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１記載のメモリコントローラ。
【請求項１０】
前記初期化制御部は、前記アクセス制限領域内の一部の可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１記載のメモリコントローラ。
【請求項１１】
前記初期化制御部は、ドライバまでの配線距離が短い前記可変抵抗素子から順に前記抵抗値を前記初期値に変化させる
請求項１記載のメモリコントローラ。
【請求項１２】
前記可変抵抗素子のそれぞれには、前記配線距離に応じた番号のアドレスが割り当てられており、
前記初期化制御部は、所定の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１１記載のメモリコントローラ。
【請求項１３】
前記ライト制御部は、ドライバまでの配線距離が長い前記可変抵抗素子から順に前記抵抗値を前記初期値より小さい値に変化させる
請求項１１記載のメモリコントローラ。
【請求項１４】
前記ライト制御部は、前記所定の順序に対して逆の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させる
請求項１３記載のメモリコントローラ。
【請求項１５】
可変抵抗素子が配列されたメモリセルアレイと、
前記メモリセルアレイを駆動するドライバと、
前記メモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記ドライバの制御によって前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御部と、
前記ライタブルモードにおいて前記ドライバの制御によって前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御部と
を具備するメモリシステム。
【請求項１６】
前記初期化制御部は、初期化を指示するコマンドに従って前記アクセス制限領域内の前記可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１５記載のメモリシステム。
【請求項１７】
主電源の電源断を検知して前記主電源から予備電源に切り替える電源回路をさらに具備し、
前記初期化制御部は、前記電源断が検知されると前記アクセス制限領域内の前記可変抵抗素子の抵抗値を前記初期値に変化させる
請求項１５記載のメモリシステム。
【請求項１８】
前記ドライバは、
前記メモリセルアレイにおいて所定の方向に配列された前記可変抵抗素子からなる行を駆動するロウドライバと、
前記メモリセルにおいて前記所定の方向に垂直な方向に配列された前記可変抵抗素子からなる列を駆動するカラムドライバと
を備え、
前記可変抵抗素子のそれぞれには前記ロウドライバおよび前記カラムドライバから前記可変抵抗素子までの距離に応じた番号のアドレスが割り当てられ、
前記初期化制御部は、所定の順序で前記アドレスを選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させ、
前記ライト制御部は、前記所定の順序に対して逆の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させる
請求項１５記載のメモリシステム。
【請求項１９】
前記ロウドライバは、
奇数行を駆動する奇数ロウドライバと、
偶数行を駆動する偶数ロウドライバと
を含み、
前記カラムドライバは、
奇数列を駆動する奇数カラムドライバと、
偶数列を駆動する偶数カラムドライバと
を含む
請求項１８記載のメモリシステム。
【請求項２０】
可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御手順と、
前記ライタブルモードにおいて前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御手順と
を具備するメモリコントローラの制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、メモリコントローラ、メモリシステム、および、メモリコントローラの制御方法に関する。詳しくは、抵抗可変素子が設けられた不揮発性メモリを制御するメモリコントローラ、メモリシステム、および、メモリコントローラの制御方法に関する。
【背景技術】
【０００２】
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ（ＮＶＭ：Non-Volatile memory）が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭ（Resistive RAM）、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）などが挙げられる。これらの中で、アクセス速度が高速であることなどから、ＲｅＲＡＭが注目されている。【０００３】
一般にＲｅＲＡＭでは、二次元格子状に配線されたカラム線とロウ線との交点のそれぞれに、可変抵抗素子を含むメモリセルが設けられる。ドライバは、ライトデータに基づいて書換え対象のメモリセルを選択し、カラム線とロウ線との間に電圧を印加して、選択したメモリセルの抵抗値を変化させる。ここで、選択していないメモリセルでリーク電流が生じると、カラム線やロウ線を介してリーク電流が選択したメモリセルに回り込み、その回り込み電流と、ロウ線やカラム線の配線抵抗との積に等しい電圧降下（ＩＲドロップ）が生じる。このＩＲドロップが大きいほど、メモリセルへの書込み時間が長くなる。そして、メモリセルごとにＩＲドロップが異なると、メモリセルごとの書込み時間にばらつきが生じてしまう。また、電源電圧がＩＲドロップにより降下しても降下後の値が一定の最低動作電圧を下回らないように、その電源電圧にある程度のマージンを持たせている場合、ＩＲドロップの変動が大きいほど、そのマージンが小さくなってしまう。【０００４】
そこで、ＩＲドロップの変動を抑制するために、ライト処理において、ロウ線やカラム線の配線距離が短いメモリセルから順に高抵抗状態に書き換えるメモリコントローラが提案されている（例えば、特許文献１参照。）。メモリセルの抵抗値が大きいほどリーク電流が小さくなり、配線距離が長いほど配線抵抗は大きくなるため、配線距離が短いメモリセルから順に高抵抗状態にすることにより、ＩＲドロップの変動をある程度、抑制することができる。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特許４３９８９４５号
【発明の概要】
【発明が解決しようとする課題】
【０００６】
しかしながら、上述の従来技術では、ＩＲドロップの変動を十分に抑制することができないことがある。例えば、メモリセルの低抵抗状態に論理値「１」を割り当て、高抵抗状態に論理値「０」を割り当てる場合を想定する。一般に抵抗値が低いメモリセルでリーク電流が生じるため、「１」（低抵抗状態）のメモリセルが多いほど、リーク電流の和が増大してＩＲドロップが大きくなる。例えば、２進数で「１１１１００００」が書き込まれた不揮発性メモリを「００００１１１１」に書き換える場合、ドライバは、まず、セット処理により「１１１１１１１１」に書き換える。次いで、ドライバは、リセット処理により「１１１１００００」に書き換える。セット処理後の状態では、「１」（低抵抗状態）のメモリセル数がセット処理前やリセット処理後と比較して多いため、リーク電流の和が大きくなり、ＩＲドロップが増大してしまう。このように、書き換えるメモリセル数が多いほど、電圧降下（ＩＲドロップ）の変動が大きくなってしまうという問題がある。【０００７】
本技術はこのような状況に鑑みて生み出されたものであり、可変抵抗素子が設けられた不揮発性メモリにおいて電圧降下の変動を抑制することを目的とする。
【課題を解決するための手段】
【０００８】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと上記アクセス制限領域への書込みを許可するライタブルモードとのうち上記リードオンリーモードにおいて上記アクセス制限領域内の上記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて上記ライタブルモードに移行する初期化制御部と、上記ライタブルモードにおいて上記アクセス制限領域内の上記可変抵抗素子のうちライトデータに対応する素子の抵抗値を上記初期値より小さい値に変化させて上記リードオンリーモードに移行するライト制御部とを具備するメモリコントローラ、および、当該コントローラの制御方法である。これにより、リードオンリーモードからライタブルモードへ移行する際に可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【０００９】
また、この第１の側面において、上記アクセス制限領域は、上記メモリセルアレイの一部の領域であってもよい。これにより、メモリセルアレイの一部の抵抗値が初期値に制御されるという作用をもたらす。【００１０】
また、この第１の側面において、上記メモリセルアレイは、上記アクセス制限領域と上記リードオンリーモードにおいて書き込みが許可される非制限領域とを有し、上記アクセス制限領域は、第１のアクセス制限領域と当該第１のアクセス制限領域よりもドライバから遠い第２のアクセス制限領域とを有し、上記非制限領域は、第１の非制限領域と当該第１の非制限領域よりも上記ドライバから遠い第２の非制限領域とを有し、上記初期化制御部は、上記第２の非制限領域と上記第２のアクセス制限領域とにおける上記可変抵抗素子の抵抗値を上記初期値に変化させて上記ライタブルモードに移行してもよい。これにより、リードオンリーモードからライタブルモードへ移行する際に第２の非制限領域と第２のアクセス制限領域との抵抗値が初期値に制御されるという作用をもたらす。【００１１】
また、この第１の側面において、上記ライト制御部は、上記第２の非制限領域と上記第２のアクセス制限領域とにおいて上記可変抵抗素子の抵抗値が上記初期値である場合には上記第１のアクセス制限領域内の上記可変抵抗素子のうちライトデータに対応する素子の抵抗値を上記初期値より小さい値に変化させてもよい。これにより、上記第２の非制限領域と上記第２のアクセス制限領域との抵抗値が初期値である場合に、第１のアクセス制限領域が書き換えられるという作用をもたらす。【００１２】
また、この第１の側面において、上記ライト制御部は、上記第２の非制限領域において上記可変抵抗素子の抵抗値が上記初期値である場合には上記第２のアクセス制限領域内の上記可変抵抗素子のうちライトデータに対応する素子の抵抗値を上記初期値より小さい値に変化させてもよい。これにより、第２の非制限領域の抵抗値が初期値である場合に、第２のアクセス制限領域が書き換えられるという作用をもたらす。【００１３】
また、この第１の側面において、上記ライト制御部は、上記ライタブルモードにおいて上記第２の非制限領域と上記第１のアクセス制限領域と上記第２のアクセス制限領域とのいずれかの上記可変抵抗素子のうちライトデータに対応する素子の抵抗値を上記初期値より小さい値に変化させた場合には上記リードオンリーモードに移行してもよい。これにより、第２の非制限領域と第１のアクセス制限領域と第２のアクセス制限領域とのいずれかが書き換えられた際にリードオンリーモードに移行するという作用をもたらす。【００１４】
また、この第１の側面において、上記初期化制御部は、ライトアドレスの最大値および最小値の一方に対応する上記可変抵抗素子よりもドライバに近い可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、ライトアドレスの最大値および最小値の一方に対応する上記可変抵抗素子よりもドライバに近い可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００１５】
また、この第１の側面において、上記初期化制御部は、上記アクセス制限領域の少なくとも一部の所定の範囲がアクセス範囲として指定されると上記アクセス範囲内の上記可変抵抗素子と上記アクセス範囲よりも配線距離の短い上記可変抵抗素子との抵抗値を上記初期値より小さい値に変化させてもよい。これにより、アクセス範囲内の可変抵抗素子とアクセス範囲よりも配線距離の短い可変抵抗素子との抵抗値が初期値より小さい値に制御されるという作用をもたらす。【００１６】
また、この第１の側面において、上記初期化制御部は、上記アクセス制限領域内の全ての可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、アクセス制限領域内の全ての可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００１７】
また、この第１の側面において、上記初期化制御部は、上記アクセス制限領域内の一部の可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、アクセス制限領域内の一部の可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００１８】
また、この第１の側面において、上記初期化制御部は、ドライバまでの配線距離が短い上記可変抵抗素子から順に上記抵抗値を上記初期値に変化させてもよい。これにより、ドライバまでの配線距離が短い可変抵抗素子から順に抵抗値が初期値に制御されるという作用をもたらす。【００１９】
また、この第１の側面において、上記可変抵抗素子のそれぞれには、上記配線距離に応じた番号のアドレスが割り当てられており、上記初期化制御部は、所定の順序で上記アドレスを順に選択して当該選択したアドレスに対応する上記可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、所定の順序でアドレスが順に選択されて、そのアドレスに対応する可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００２０】
また、この第１の側面において、上記ライト制御部は、ドライバまでの配線距離が長い上記可変抵抗素子から順に上記抵抗値を上記初期値より小さい値に変化させてもよい。これにより、ドライバまでの配線距離が長い可変抵抗素子から順に抵抗値が初期値に制御されるという作用をもたらす。【００２１】
また、この第１の側面において、上記ライト制御部は、上記所定の順序に対して逆の順序で上記アドレスを順に選択して当該選択したアドレスに対応する上記可変抵抗素子の抵抗値を上記初期値より小さい値に変化させてもよい。これにより、所定の順序に対して逆の順序でアドレスが順に選択されて、そのアドレスに対応する可変抵抗素子の抵抗値が初期値より小さい値に制御されるという作用をもたらす。【００２２】
また、本技術の第２の側面は、可変抵抗素子が配列されたメモリセルアレイと、上記メモリセルアレイを駆動するドライバと、上記メモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと上記アクセス制限領域への書込みを許可するライタブルモードとのうち上記リードオンリーモードにおいて上記ドライバの制御によって上記アクセス制限領域内の上記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて上記ライタブルモードに移行する初期化制御部と、上記ライタブルモードにおいて上記ドライバの制御によって上記アクセス制限領域内の上記可変抵抗素子のうちライトデータに対応する素子の抵抗値を上記初期値より小さい値に変化させて上記リードオンリーモードに移行するライト制御部とを具備するメモリシステムである。これにより、リードオンリーモードからライタブルモードへ移行する際にドライバの制御によってメモリセルアレイの可変抵抗素子の抵抗値が初期値に変化するという作用をもたらす。【００２３】
また、この第２の側面において、上記初期化制御部は、初期化を指示するコマンドに従って上記アクセス制限領域内の上記可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、初期化を指示するコマンドに従ってアクセス制限領域内の可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００２４】
また、この第２の側面において、主電源の電源断を検知して上記主電源から予備電源に切り替える電源回路をさらに具備し、上記初期化制御部は、上記電源断が検知されると上記アクセス制限領域内の上記可変抵抗素子の抵抗値を上記初期値に変化させてもよい。これにより、電源断が検知されるとアクセス制限領域内の可変抵抗素子の抵抗値が初期値に制御されるという作用をもたらす。【００２５】
また、この第２の側面において、上記ドライバは、上記メモリセルアレイにおいて所定の方向に配列された上記可変抵抗素子からなる行を駆動するロウドライバと、上記メモリセルにおいて上記所定の方向に垂直な方向に配列された上記可変抵抗素子からなる列を駆動するカラムドライバとを備え、上記可変抵抗素子のそれぞれには上記ロウドライバおよび上記カラムドライバから上記可変抵抗素子までの距離に応じた番号のアドレスが割り当てられ、上記初期化制御部は、所定の順序で上記アドレスを選択して当該選択したアドレスに対応する上記可変抵抗素子の抵抗値を上記初期値より小さい値に変化させ、上記ライト制御部は、上記所定の順序に対して逆の順序で上記アドレスを順に選択して当該選択したアドレスに対応する上記可変抵抗素子の抵抗値を上記初期値より小さい値に変化させてもよい。これにより、ドライバまでの配線距離が短い可変抵抗素子から順に抵抗値が初期値に制御され、ドライバまでの配線距離が長い可変抵抗素子から順に抵抗値が初期値に制御されるという作用をもたらす。【００２６】
また、この第２の側面において、前記ロウドライバは、奇数行を駆動する奇数ロウドライバと、偶数行を駆動する偶数ロウドライバとを含み、前記カラムドライバは、奇数列を駆動する奇数カラムドライバと、偶数列を駆動する偶数カラムドライバとを含んでもよい。これにより、奇数ロウドライバおよび偶数ロウドライバと奇数カラムドライバおよび偶数カラムドライバとまでの配線距離が短い可変抵抗素子から順に抵抗値が初期値に制御され、それらのドライバまでの配線距離が長い可変抵抗素子から順に抵抗値が初期値に制御されるという作用をもたらす。
【発明の効果】
【００２７】
本技術によれば、可変抵抗素子が設けられた不揮発性メモリにおいて電圧降下の変動を抑制することができるという優れた効果を奏し得る。なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【図面の簡単な説明】
【００２８】
【図１】本技術の第１の実施の形態におけるメモリシステムの一構成例を示す全体図である。
【図２】本技術の第１の実施の形態におけるホストコンピュータの一構成例を示すブロック図である。
【図３】本技術の第１の実施の形態におけるホストコンピュータが用いるニューラルネットワークモデルの模式図である。
【図４】本技術の第１の実施の形態におけるメモリコントローラの一構成例を示すブロック図である。
【図５】本技術の第１の実施の形態におけるメモリコントローラの機能構成例を示すブロック図である。
【図６】本技術の第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図７】本技術の第１の実施の形態におけるＭＡＵ（Memory Array Unit）配置部の一構成例を示す図である。
【図８】本技術の第１の実施の形態におけるメモリアレイユニットの一構成例を示すブロック図である。
【図９】本技術の第１の実施の形態におけるメモリセルアレイの斜視図である。
【図１０】本技術の第１の実施の形態におけるメモリセルの一構成例を示す回路図である。
【図１１】本技術の第１の実施の形態における可変抵抗素子の抵抗分布の一例を示す図である。
【図１２】本技術の第１の実施の形態における初期時のメモリセルの書き換え順序の一例を示す図である。
【図１３】本技術の第１の実施の形態におけるメモリ制御部の一構成例を示すブロック図である。
【図１４】本技術の第１の実施の形態におけるメモリモジュールの状態遷移図の一例を示す図である。
【図１５】本技術の第１の実施の形態における不揮発性メモリの書き換え順序を説明するための図である。
【図１６】比較例における不揮発性メモリの書き換え順序を説明するための図である。
【図１７】本技術の第１の実施の形態におけるホストコンピュータの動作の一例を示すフローチャートである。
【図１８】本技術の第１の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図１９】本技術の第１の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。
【図２０】本技術の第１の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。
【図２１】本技術の第１の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図２２】本技術の第１の実施の形態におけるメモリ側初期化処理の一例を示すフローチャートである。
【図２３】本技術の第１の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。
【図２４】本技術の第１の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。
【図２５】本技術の第１の実施の形態における不揮発性メモリの書き換え順序の一例を示す図である。
【図２６】本技術の第１の実施の形態の第１の変形例におけるメモリアレイユニットの一構成例を示すブロック図である。
【図２７】本技術の第１の実施の形態の第２の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。
【図２８】本技術の第１の実施の形態の第３の変形例における初期化範囲の一例を示す図である。
【図２９】本技術の第１の実施の形態の第３の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。
【図３０】本技術の第１の実施の形態の第４の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。
【図３１】本技術の第１の実施の形態の第５の変形例におけるメモリセルアレイの斜視図である。
【図３２】本技術の第１の実施の形態の第６の変形例における不揮発性メモリの一構成例を示すブロック図である。
【図３３】本技術の第１の実施の形態の第６の変形例におけるメモリユニットの一構成例を示すブロック図である。
【図３４】本技術の第２の実施の形態におけるメモリセルアレイ内の領域の一例を示す図である。
【図３５】本技術の第２の実施の形態における領域ごとの特性を説明するための図である。
【図３６】本技術の第２の実施の形態におけるメモリモジュールの状態遷移図の一例を示す図である。
【図３７】本技術の第２の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【図３８】本技術の第２の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。
【図３９】本技術の第２の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。
【図４０】本技術の第２の実施の形態における不揮発性メモリの動作の一例を示すフローチャートである。
【図４１】本技術の第２の実施の形態におけるメモリ側初期化処理の一例を示すフローチャートである。
【図４２】本技術の第２の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。
【図４３】本技術の第２の実施の形態におけるＡライト処理の一例を示すフローチャートである。
【図４４】本技術の第２の実施の形態におけるＢライト処理の一例を示すフローチャートである。
【図４５】本技術の第２の実施の形態におけるＣライト処理の一例を示すフローチャートである。
【図４６】本技術の第２の実施の形態におけるＤライト処理の一例を示すフローチャートである。
【図４７】本技術の第３の実施の形態におけるメモリシステムの一構成例を示す全体図である。
【図４８】本技術の第３の実施の形態におけるメモリコントローラの動作の一例を示すフローチャートである。
【発明を実施するための形態】
【００２９】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（ライト処理の前に全メモリセルを初期化する例）
２．第２の実施の形態（ライト処理の前にメモリセルアレイ内の一部における全メモリセルを初期化する例）
３．第３の実施の形態（ライト処理の前の停電時に全メモリセルを初期化する例）
【００３０】
＜１．第１の実施の形態＞
［メモリシステムの構成例］
図１は、第１の実施の形態におけるメモリシステムの一構成例を示す全体図である。このメモリシステムは、ホストコンピュータ１００およびメモリモジュール２００を備える。メモリモジュール２００は、メモリコントローラ３００および不揮発性メモリ４００を備える。
【００３１】
ホストコンピュータ１００は、メモリシステム全体を制御するものである。このホストコンピュータ１００は、コマンドおよびライトデータを生成してメモリモジュール２００に信号線１０９を介して供給する。また、ホストコンピュータ１００は、信号線１０９を介してメモリモジュール２００から、読み出されたリードデータやステータスを受け取る。ここで、コマンドは、メモリモジュール２００を制御するためのものであり、例えば、データの書込みを指示するライトコマンドや、データの読み出しを指示するリードコマンドを含む。ステータスは、メモリモジュール２００の状態を示すものであり、エラー情報などを含む。
【００３２】
メモリコントローラ３００は、不揮発性メモリ４００を制御するものである。メモリコントローラ３００は、ホストコンピュータ１００からのコマンドを解釈してリクエストを生成し、不揮発性メモリ４００に供給する。また、メモリコントローラ３００は、ライトリクエストとともに不揮発性メモリ４００にライトデータを供給し、リードリクエストの供給後に不揮発性メモリ４００からリードデータを受け取る。
【００３３】
不揮発性メモリ４００は、メモリコントローラ３００の制御に従って、データを記憶するものである。例えば、ＲｅＲＡＭが不揮発性メモリ４００として用いられる。
【００３４】
また、メモリモジュール２００の状態は、読出しのみを許可するリードオンリーモードと、書込みおよび読出しを許可するライタブルモードとに分類される。これらのモードの一方から他方への移行は、所定の条件が満たされたときに行われる。リードオンリーモードからライタブルモードへの移行条件は、不揮発性メモリ４００を初期化することである。一方、ライタブルモードからリードオンリーモードへの移行条件は、データの書込み処理が完了することである。
【００３５】
このように、データを書き込むとメモリモジュール２００はリードオンリーモードに移行し、そのリードオンリーモードからライタブルモードに移行させるには初期化しなくてはならない。このため、複数回に亘ってデータを書き込む際には、そのたびに、ホストコンピュータ１００は、初期化を指示する必要がある。ホストコンピュータ１００が、例えば、データＤ１を書き込み、その後にデータＤ２を書き込む場合を想定する。この場合にホストコンピュータ１００は、初期化してからデータＤ１を書き込み、再度初期化してからデータＤ２を書き込む必要がある。
【００３６】
また、不揮発性メモリ４００の書き換えは、一定の書き換え順序に従って（すなわち、シーケンシャルに）行われる。初期化においてメモリシステムは、例えば、昇順にアドレスを１つずつ選択する。また、書込みにおいてメモリシステムは、初期化の際と逆順（例えば、降順）にアドレスを１つずつ選択する必要がある。アドレスが降順でない場合には、アドレスが不正であることを示すアドレスエラーが生成される。
【００３７】
［ホストコンピュータの構成例］
図２は、第１の実施の形態におけるホストコンピュータ１００の一構成例を示すブロック図である。このホストコンピュータ１００は、入出力インターフェース１１０、重みデータ生成部１２０、および、データ解析部１３０を備える。
【００３８】
入出力インターフェース１１０は、メモリシステムの外部との間でデータを送受信するものである。この入出力インターフェース１１０は、解析対象データを外部から受信してデータ解析部１３０に供給し、データ解析部１３０から解析結果を受け取って外部に送信する。
【００３９】
データ解析部１３０は、解析対象データを解析するものである。解析対象データとして、画像データ、動画データ、音声データ、または、テキストデータなどが想定される。解析においては、例えば、ニューラルネットワークモデルが用いられる。このニューラルネットワークモデルにおいては、複数のノードの間で信号が伝播される。また、ノード間の結合の強さは、「重み」と呼ばれるパラメータにより表される。この重みを示すデータは、不揮発性メモリ４００に書き込まれる。データ解析部１３０は、リードコマンドをメモリコントローラ３００に送信して重みを示すリードデータを取得する。そして、データ解析部１３０は、読み出した重みを用いて解析対象データを解析し、その解析結果を重みデータ生成部１２０および入出力インターフェース１１０に供給する。
【００４０】
重みデータ生成部１２０は、重みを生成するものである。この重みデータ生成部１２０は、ユーザの操作などに従って初期値を設定した重みを生成する。そして、重みデータ生成部１２０は、データ消去コマンドを発行してメモリコントローラ３００に供給する。このデータ消去コマンドは、不揮発性メモリ４００内のデータを消去する初期化処理の実行を指示するコマンドである。次に、重みデータ生成部１２０は、ライトコマンドを発行して、重みを示すライトデータとともにメモリコントローラ３００に供給する。
【００４１】
また、重みデータ生成部１２０は、重みの更新が必要か否かを判断する。例えば、解析精度の向上や、不具合の修正を目的とする場合に重みの更新が行われる。あるいは、メモリセルの経年劣化を補償するためのリフレッシュを行う場合に重みの更新が行われる。重みの更新が必要である場合に重みデータ生成部１２０は、再度データ消去コマンドを発行してメモリコントローラ３００に供給する。次に、重みデータ生成部１２０は、ライトコマンドを発行して、更新後の重みを示すライトデータとともにメモリコントローラ３００に供給する。
【００４２】
ここで、データの書込みにおいては、１つ以上のアドレスを含む一定のアドレス範囲が１つのライトコマンドにより指定される。例えば、不揮発性メモリ４００に指定することができるアドレスの最小値をＡＤＤminとし、最大値をＡＤＤmaxとすると、ホストコンピュータ１００は、ＡＤＤminを先頭とする一定のアドレス範囲を指定することができる。この場合にホストコンピュータ１００は、ＡＤＤmin乃至ＡＤＤmaxのいずれかのアドレスを末尾アドレスＡＤＤendとして指定する。そして、メモリコントローラ３００は、ＡＤＤminからＡＤＤendまでのアドレスを降順に１つずつ選択して、そのアドレスにライトデータを書き込む。
【００４３】
また、ホストコンピュータ１００は、論理アドレスを指定し、メモリコントローラ３００が物理アドレスに変換してもよいし、ホストコンピュータ１００が直接に物理アドレスを指定してもよい。
【００４４】
図３は、第１の実施の形態におけるホストコンピュータ１００が用いるニューラルネットワークモデルの模式図である。このニューラルネットワークモデルにおいては、一般に、複数のレイヤが設けられ、それぞれのレイヤに１つ以上のノードが設けられる。あるレイヤのノードから出力された信号は、重みを乗じて、他のレイヤのノードに入力される。例えば、レイヤＬ０にノードＮ００が設けられ、レイヤＬ１にノードＮ１０が設けられ、それらのノード間の重みがＷ００であるとする。この場合、ノードＮ００が出力した信号に、重みＷ００を乗じたものがノードＮ１０に入力される。
【００４５】
ノード間の信号伝播が、一定の順序で行われる場合には、信号に対応する重みが、その順序で読み出される。このように、ニューラルネットワークモデルを用いる処理は、シーケンシャルアクセスを行うメモリシステムに適している。
【００４６】
［メモリコントローラの構成例］
図４は、第１の実施の形態におけるメモリコントローラ３００の一構成例を示すブロック図である。このメモリコントローラ３００は、ホストインターフェース３０１、ＲＡＭ（Random Access Memory）３０２、ＣＰＵ（Central Processing Unit）３０３およびＥＣＣ処理部３０４を備える。また、メモリコントローラ３００は、ＲＯＭ（Read Only Memory）３０５、バス３０６およびメモリインターフェース３０７を備える。
【００４７】
ホストインターフェース３０１は、ホストコンピュータ１００との間でデータやコマンドを相互に交換するものである。ＲＡＭ３０２は、ＣＰＵ３０３が実行する処理において必要となるデータを一時的に保持するものである。ＣＰＵ３０３は、メモリコントローラ３００全体を制御するものである。ＲＯＭ３０５は、ＣＰＵ３０３が実行するプログラム等を記憶するものである。バス３０６は、ＲＡＭ３０２、ＣＰＵ３０３、ＥＣＣ処理部３０４、ＲＯＭ３０５、ホストインターフェース３０１およびメモリインターフェース３０７が相互にデータを交換するための共通の経路である。メモリインターフェース３０７は、不揮発性メモリ４００との間でデータやコマンドを相互に交換するものである。ＥＣＣ処理部３０４は、データの符号化または復号を行うものである。
【００４８】
図５は、第１の実施の形態におけるメモリコントローラ３００の機能構成例を示すブロック図である。このメモリコントローラ３００は、初期化制御部３１０、ライト制御部３２０、ＥＣＣ処理部３０４、ステータス生成部３３０およびリード制御部３４０を備える。初期化制御部３１０、ライト制御部３２０、ステータス生成部３３０およびリード制御部３４０のそれぞれは、図４におけるＲＡＭ３０２、ＣＰＵ３０３、ＲＯＭ３０５およびバス３０６などにより実現される。
【００４９】
初期化制御部３１０は、データ消去コマンドに従って不揮発性メモリ４００を初期化するものである。この初期化制御部３１０は、リードオンリーモードにおいてデータ消去コマンドをデコードしてライトイネーブルリクエストを生成し、不揮発性メモリ４００に供給する。このライトイネーブルリクエストにより、不揮発性メモリ４００が初期化される。また、初期化制御部３１０は、不揮発性メモリ４００を初期化したときにメモリモジュール２００をライタブルモードに移行させる。
【００５０】
ライト制御部３２０は、ライトコマンドに従って、不揮発性メモリ４００にデータを書き込むものである。このライト制御部３２０は、ライトコマンドをデコードしてライトリクエストを生成する。ライト制御部３２０は、ライトコマンドの指定する末尾アドレスＡＤＤendからアドレスＡＤＤminまでを降順に選択する。そして、ライト制御部３２０は、選択するたびに、その選択したアドレスを指定するライトリクエストを生成して不揮発性メモリ４００に供給する。そして、ライト制御部３２０は、アドレスＡＤＤminを指定したライトリクエストを送信して、そのアドレスへの書込みが完了すると、ライトディセーブルリクエストを生成して不揮発性メモリ４００に供給する。また、ライト制御部３２０は、書込みが完了した際にメモリモジュール２００をリードオンリーモードに移行させる。
【００５１】
また、ライト制御部３２０は、リードオンリーモードであるにも関わらずライトコマンドが発行された場合に、アクセスが不正であることを示すライト禁止エラーを生成してステータス生成部３３０に供給する。
【００５２】
ステータス生成部３３０は、ステータスを生成するものである。このステータス生成部３３０は、ＥＣＣ処理部３０４からＥＣＣエラーを受け取り、ライト制御部３２０からアクセス禁止エラーを受け取る。また、ステータス生成部３３０は、アドレスエラーを不揮発性メモリ４００から受け取る。ステータス生成部３３０は、これらのエラーを記載したステータスを生成してホストコンピュータ１００に供給する。
【００５３】
リード制御部３４０は、リードコマンドに従って不揮発性メモリ４００からリードデータを読み出すものである。このリード制御部３４０は、リードコマンドをデコードしてリードリクエストを生成し、不揮発性メモリ４００に供給する。
【００５４】
［不揮発性メモリの構成例］
図６は、第１の実施の形態における不揮発性メモリ４００の一構成例を示すブロック図である。この不揮発性メモリ４００は、データバッファ４１０、ＭＡＵ配置部４２０、アドレスデコーダ４３０、バス４４０、制御インターフェース４５０およびメモリ制御部４６０を備える。
【００５５】
データバッファ４１０は、メモリ制御部４６０の制御に従って、ライトデータやリードデータを保持するものである。
【００５６】
ＭＡＵ配置部４２０には、複数のメモリアレイユニットが設けられる。メモリアレイユニットのそれぞれには、メモリセルアレイおよびドライバが設けられる。
【００５７】
アドレスデコーダ４３０は、リクエストにより指定されたアドレスをデコードするものである。このアドレスデコーダ４３０はアドレスのデコードによりロウアドレスＲＡおよびカラムアドレスＣＡを生成してＭＡＵ配置部４２０に供給する。ロウアドレスＲＡおよびカラムアドレスＣＡについては後述する。
【００５８】
バス４４０は、データバッファ４１０、ＭＡＵ配置部４２０、アドレスデコーダ４３０、制御インターフェース４５０およびメモリ制御部４６０が相互にデータを交換するための共通の経路である。制御インターフェース４５０は、メモリコントローラ３００と不揮発性メモリ４００とがデータやコマンドを相互に交換するためのインターフェースである。
【００５９】
メモリ制御部４６０は、メモリアレイユニットを制御して、データの書込み、または、読出しを行わせるものである。
【００６０】
図７は、第１の実施の形態におけるＭＡＵ配置部４２０の一構成例を示す図である。このＭＡＵ配置部４２０には、複数のメモリアレイユニット５００が配置される。
【００６１】
図８は、第１の実施の形態におけるメモリアレイユニット５００の一構成例を示すブロック図である。このメモリアレイユニット５００は、カラムドライバ５１０、ロウドライバ５２０およびメモリセルアレイ５３０を備える。メモリセルアレイ５３０には、二次元格子状に複数のメモリセル５４０が配列される。以下、所定方向に配列されたメモリセル５４０の集合を「ロウ」と称し、その方向に垂直な方向に配列されたメモリセル５４０の集合を「カラム」と称する。
【００６２】
メモリセル５４０は、データを記憶するものである。メモリセル５４０のそれぞれは、カラム方向に沿って配線されたカラム線と、ロウ方向に沿って配線されたロウ線とに接続される。例えば、メモリセル５４０は、４×４の計１６個設けられる。そして、ｍ（ｍは１乃至４の整数）番目のロウに属するメモリセル５４０のそれぞれは、ロウ線５２ｍを介してロウドライバ５２０に接続される。また、ｎ（ｎは１乃至４の整数）番目のカラムに属するメモリセル５４０のそれぞれは、カラム線５１ｍを介してカラムドライバ５１０に接続される。なお、メモリセル５４０の個数は、１６個に限定されない。
【００６３】
そして、メモリセル５４０のそれぞれには、メモリセル５４０までのロウ線およびカラム線の配線距離に応じた番号のアドレスが割り当てられる。例えば、同じロウ線に接続されるメモリセルには、ロウドライバ５２０に近いものほど小さい番号が割り当てられる。また、同じカラム線に接続されるメモリセルには、カラムドライバ５１０に近いものほど小さい番号が割り当てられる。
【００６４】
例えば、４×４の１６個のメモリセル５４０に、１０進数で「０」乃至「１５」のアドレスを割り当てる場合を考える。図８において最も左上のメモリセル５４０は、配線距離が最も短いため、アドレス「０」が割り当てられる。このアドレス「０」と同じロウに属する残りの３つのメモリセル５４０には、ロウドライバ５２０からの距離が短い順に、アドレス「１」、「２」および「３」が割り当てられる。また、アドレス「０」と同じカラムに属する残りの３つのメモリセル５４０には、カラムドライバ５１０からの距離が短い順に、アドレス「４」、「８」および「１２」が割り当てられる。
【００６５】
なお、配線距離が長いほど大きな番号のアドレスが割り当てられているが、逆に、配線距離が長いほど小さな番号のアドレスが割り当てられる構成であってもよい。
【００６６】
ロウドライバ５２０は、アドレスデコーダ４３０からのロウアドレスＲＡと、メモリ制御部４６０からの制御信号とに従ってロウを駆動するものである。ここで、ロウアドレスＲＡは、アクセス対象のロウの位置を示す。また、制御信号は、セット信号、リセット信号またはセンス信号などである。駆動方法の詳細については後述する。
【００６７】
カラムドライバ５１０は、アドレスデコーダ４３０からのカラムアドレスＣＡと制御信号（セット信号やリセット信号）とライトデータＷＤとに基づいてロウを駆動するものである。ここで、カラムアドレスＣＡは、アクセス対象のカラムの位置を示す。駆動方法の詳細については後述する。また、カラムドライバ５１０は、センス信号に従ってリードデータＲＤを読み出してデータバッファ４１０に保持させる。
【００６８】
図９は、第１の実施の形態におけるメモリセルアレイ５３０の斜視図である。メモリセルアレイ５３０において、カラム線５１１乃至５１４などが設けられた配線層と、ロウ線５２１乃至５２４などが設けられた配線層とが半導体基板上に積層される。そして、ロウ線とカラム線との交差点において、カラム線とロウ線とに挟まれる位置にメモリセル５４０が配置される。このような不揮発性メモリは、クロスポイント型メモリと呼ばれる。
【００６９】
［メモリセルの構成例］
図１０は、第１の実施の形態におけるメモリセル５４０の一構成例を示す回路図である。このメモリセル５４０は、双方向ダイオード５４１と可変抵抗素子５４２とを備える。双方向ダイオード５４１の一端は、ロウ線５２１に接続され、他端は、可変抵抗素子５４２に接続される。可変抵抗素子５４２の一端は、双方向ダイオード５４１に接続され、他端は、カラム線５１１に接続される。
【００７０】
双方向ダイオード５４１は、カラム線とビット線との間の線間電圧に応じた電流を供給するものである。例えば、線間電圧が所定値を超える場合に、双方向ダイオード５４１は、導通状態に遷移して所定の電流閾値Ｉｔｈを超える電流を可変抵抗素子５４２に流す。一方、線間電圧が所定値以下の場合に双方向ダイオード５４１は、非導通状態に遷移して電流閾値Ｉｔｈ以下の電流を可変抵抗素子５４２に流す。可変抵抗素子５４２は、電流の方向に応じて抵抗値が変化する素子である。なお、線間電圧に応じて導通状態および非導通状態の一方から他方に遷移する選択素子であれば、双方向ダイオード５４１以外の素子（トランジスタなど）を双方向ダイオード５４１の代わりに設けてもよい。
【００７１】
図１１は、第１の実施の形態における可変抵抗素子５４２の抵抗分布の一例を示す図である。同図における縦軸は、メモリセル５４０のセル数であり、横軸は、抵抗値である。メモリセル５４０では、その抵抗分布は、抵抗の閾値Ｒｒｅｆを境に２つに分けられている。これらの分布は、低抵抗状態（ＬＲＳ：Low-Resistance State）および高抵抗状態（ＨＲＳ：High-Resistance State）と呼ばれる。ＬＲＳには、例えば、「１」の論理値が割り当てられ、ＨＲＳには「０」が割り当てられる。また、ＬＲＳのメモリセル５４０をＨＲＳに遷移させる処理を以下、「リセット」と称し、ＨＲＳのメモリセル５４０をＬＲＳに遷移させる処理を以下、「セット」と称する。また、メモリセル５４０に保持された値を読み出すことを「センス」と称する。
【００７２】
ここで、メモリセル５４０に流れるリーク電流は、一般に、メモリセル５４０内の可変抵抗素子５４２の抵抗値が低いほど大きくなる。すなわち、ＬＲＳのメモリセル５４０のリーク電流は、ＨＲＳよりも大きくなる。
【００７３】
そこで、メモリセル５４０のリーク電流を最小にする観点から、不揮発性メモリ４００では、初期化において少なくとも一部のメモリセル５４０がリセットにより、リーク電流の少ない方の「０」（ＨＲＳ）に書き換えられる。なお、初期化においては、全てのメモリセル５４０がリセットされることが最も望ましい。以下、初期化においては、全てのメモリセル５４０がリセットされるものとする。
【００７４】
なお、ＬＲＳに「１」をＨＲＳに「０」を割り当てているが、逆に、ＬＲＳに「０」をＨＲＳに「１」を割り当ててもよい。この場合には、メモリセル５４０は、「１」に初期化される。
【００７５】
また、メモリシステムは、メモリセルごとに１ビットを保持する２値記憶方式のメモリを不揮発性メモリ４００として用いているが、メモリセルごとに２ビット以上を保持する多値記憶方式のメモリを用いてもよい。この多値記憶方式においてメモリセルのそれぞれは、３つ以上の状態のうち最も抵抗値の高い状態に初期化される。
【００７６】
図１２は、第１の実施の形態における初期時のメモリセル５４０の書き換え順序の一例を示す図である。ロウドライバ５２０は、ロウアドレスＲＡに基づいて選択したロウに選択行電圧を印加し、それ以外のロウに非選択行電圧を印加する。また、カラムドライバ５１０は、カラムアドレスＣＡに基づいて選択したカラムに選択列電圧を印加し、それ以外のカラムに非選択列電圧を印加する。
【００７７】
ここで、選択されたロウと選択されたカラムとの両方に属するメモリセル５４０を以下、「選択セル」と称する。また、選択されたロウと、選択されていないカラムとに属するメモリセル５４０を「半選択セル」と称する。選択されていないロウと、選択されていないカラムとに属するメモリセル５４０を「非選択セル」と称する。
【００７８】
選択セルの両端には、選択行電圧と選択列電圧との差分の線間電圧が印加される。この線間電圧の大きさや、極性を制御することにより、選択セルをセット、リセット、あるいはセンスすることができる。以下、セットする際の線間電圧を「セット電圧」と称し、リセットする際の線間電圧を「リセット電圧」と称し、センスする際の線間電圧を「センス電圧」と称する。
【００７９】
図１２におけるａは、初期化前のメモリセルアレイの状態の一例を示す図である。メモリセル５４０のそれぞれの状態は、書き込まれているデータに応じた状態（ＬＲＳまたはＨＲＳ）である。
【００８０】
同図におけるｂは、ロウドライバ５２０に最も近いメモリセル５４０をリセットしたときのメモリセルアレイの状態を示す図である。例えば、選択行電圧としてＶｐｐが印加され、選択列電圧として「０」ボルトが印加され、非選択列電圧としてＶｐｐ／２が印加される。この結果、Ｖｐｐのセット電圧が選択セルに印加され、選択セルは「０」（ＨＲＳ）に書き換えられる。一方、半選択セルおよび非選択セルの状態は変化しない。ただし、ＬＲＳの半選択セルでは、前述したようにリーク電流ＩＬＥＡＫが発生する。このリーク電流ＩＬＥＡＫと、ＬＲＳの半選択セルのうち選択セルよりロウドライバに近いセルの配線抵抗と、選択セルの配線抵抗に応じたＩＲドロップが選択セルのロウ側端子に生じ、動作マージンに影響する。
【００８１】
ロウドライバ５２０に最も近いメモリセル５４０のみをリセットする際は、ＬＲＳのメモリセル５４０の個数が多いため、リーク電流の合計が比較的大きい。その一方で選択セルまでの配線距離はロウ内で最小であるため、ＩＲドロップの増大が抑制される。
【００８２】
ロウドライバ５２０は、配線距離が短いメモリセル５４０から順に１つずつ選択してリセットする。そして、ＨＲＳにリセットしたメモリセルが増加するほど、リーク電流の和が小さくなり、選択セルへの回り込み電流が減少する。
【００８３】
図１２におけるｃは、ロウドライバ５２０から最も遠いメモリセル５４０をリセットしたときのメモリセルアレイの状態を示す図である。この状態では、選択セルよりもロウドライバ５２０に近い半選択セルの全てがＨＲＳにリセットされている。このため、同図におけるａやｂと比較してリーク電流が小さくなる。選択セルの配線距離はロウ内で最大であるため、配線抵抗も最大であるが、その一方でリーク電流が低減しているため、ＩＲドロップの増大が抑制される。
【００８４】
このように、配線距離が短いメモリセル５４０から順にＨＲＳにリセットすれば、リセットしたメモリセル数の増大に伴って選択セルまでの配線の配線抵抗が増大する一方で、リーク電流が低減するため、ＩＲドロップの変動を抑制することができる。
【００８５】
ここで、前述したように、配線距離が長いほど大きな番号のアドレスが割り当てられているため、メモリコントローラ３００が昇順にアドレスを指定することにより、配線距離の短いメモリセル５４０から順にリセットさせることができる。なお、配線距離が長いほど小さな番号のアドレスを割り当てた場合には、メモリコントローラ３００は、降順にアドレスを指定してリセットすればよい。
【００８６】
また、メモリセル５４０にライトデータを書き込む際にメモリコントローラ３００は、配線距離が長いメモリセル５４０から順にライトデータに対応するメモリセルのみをＬＲＳにセットさせる。例えば、２進数で「０１０１」のデータを書き込む際にメモリコントローラ３００は、左から４ビット目をセットし、次に２ビット目をセットさせる。書込み時には、セットしたメモリセル数の増大に伴ってリーク電流が増大する一方で、選択セルまでの配線の配線抵抗が減少するため、リセット時と同様にＩＲドロップの変動を抑制することができる。
【００８７】
図１３は、第１の実施の形態におけるメモリ制御部４６０の一構成例を示すブロック図である。このメモリ制御部４６０は、リクエストデコーダ４６１、ライト処理部４６２、リード処理部４６３、リード処理部４６３および初期化処理部４６４を備える。
【００８８】
リクエストデコーダ４６１は、メモリコントローラ３００からのリクエストをデコードするものである。このリクエストデコーダ４６１は、デコードした結果をライト処理部４６２、リード処理部４６３、および初期化処理部４６４に供給する。
【００８９】
ライト処理部４６２は、ライトデータの書込みを行うものである。このライト処理部４６２は、ライトリクエストに従って、指定されたアドレスに対し、セット信号によりデータを書き込む。ただし、ライト処理部４６２は、降順でない順序でアドレスが指定されると、アドレスエラーをメモリコントローラ３００に返す。
【００９０】
リード処理部４６３は、メモリセル５４０からデータを読み出すものである。このリード処理部４６３は、リードリクエストに従って、指定されたアドレスから、センス信号によりリードデータを読み出す。
【００９１】
初期化処理部４６４は、メモリセル５４０を初期化するものである。この初期化処理部４６４は、ライトイネーブルリクエストに従って、昇順にアドレスを１つずつ生成してアドレスデコーダ４３０に供給し、リセット信号により初期化する。
【００９２】
図１４は、第１の実施の形態におけるメモリモジュール２００の状態遷移図の一例を示す図である。メモリモジュール２００の状態は、リードオンリーモード８１０とライタブルモード８２０とを含む。起動時などの初期状態は、例えば、リードオンリーモード８１０に設定される。
【００９３】
リードオンリーモード８１０においてメモリコントローラ３００は、ホストコンピュータ１００によりデータ消去コマンドが発行されると、ライトイネーブルリクエストにより不揮発性メモリ４００を初期化する。そして、メモリコントローラ３００は、状態をライタブルモード８２０に移行させる。
【００９４】
また、ライタブルモード８２０において、ホストコンピュータ１００によりライトコマンドが発行されると、メモリコントローラ３００は、アドレスを降順に選択して、ライトリクエストによりライトデータを書き込む。アドレスＡＤＤminの書込みが完了すると、メモリコントローラ３００は、ライトディセーブルリクエストを生成して、状態をリードオンリーモード８１０に移行させる。
【００９５】
また、リードオンリーモード８１０とライタブルモード８２０との両方において、ホストコンピュータ１００によりリードコマンドが発行されると、メモリコントローラ３００は、リードリクエストによりリードデータを読み出す。
【００９６】
図１５は、第１の実施の形態における不揮発性メモリの書き換え順序を説明するための図である。同図におけるａは、初期化前のメモリセルアレイの状態の一例を示す図である。メモリセル５４０のそれぞれには「１」（ＬＲＳ）や「０」（ＨＲＳ）のデータが書き込まれている。メモリコントローラ３００によりライトイネーブルリクエストが生成されると、不揮発性メモリ４００は、ドライバに近いメモリセル５４０から順に、「０」（ＨＲＳ）にリセットする。
【００９７】
図１５におけるｂは、初期化後のメモリセルアレイの状態の一例を示す図である。メモリセル５４０の全てに「０」（ＨＲＳ）が保持される。メモリコントローラ３００によりライトリクエストが生成されると、不揮発性メモリ４００は、ドライバから遠いメモリセル５４０より順に、ライトデータに対応する選択セルを「１」（ＬＲＳ）にセットする。
【００９８】
図１５におけるｃは、１回目の書込み後のメモリセルアレイの状態の一例を示す図である。例えば、「１１１１００００」のライトデータが保持される。次に、「００００１１１１」のデータを新たに書き込む際に、ホストコンピュータ１００は、その書込み前にデータ消去コマンドを再度発行する。メモリコントローラ３００は、ライトイネーブルリクエストを生成し、不揮発性メモリ４００は、ドライバに近いメモリセル５４０から順に、「０」（ＨＲＳ）にリセットする。同図におけるｄのように初期化されてからメモリコントローラ３００によりライトリクエストが生成されると、不揮発性メモリ４００は、ドライバから遠いメモリセル５４０より順に、ライトデータに対応する選択セルを「１」（ＬＲＳ）にセットする。
【００９９】
図１５におけるｅは、２回目の書込み後のメモリセルアレイの状態の一例を示す図である。２回目の書込みにより、「００００１１１１」のライトデータが保持される。
【０１００】
図１６は、比較例における不揮発性メモリの書き換え順序を説明するための図である。この比較例では、書込み前にメモリコントローラ３００がプレリードデータを読み出し、そのプレリードデータおよびライトデータの比較結果に基づいて、セットおよびリセットを順に行うものとする。同図におけるａは、初期化前のメモリセルアレイの状態であり、同図におけるｂは、初期化後のメモリセルアレイの状態である。メモリセルアレイの全メモリセルは、例えば、「０」（ＬＲＳ）に初期化される。
【０１０１】
このメモリセルアレイに対し、まず、「１１１１００００」が書き込まれ、次に「００００１１１１」が書き込まれたものとする。図１６におけるｃは、１回目の書込み後のメモリセルアレイの状態の一例を示す図である。全てが「０」に初期化されているため、先頭から４ビットまでのみが「１」にセットされ、リセットは行われない。
【０１０２】
図１６におけるｄは、２回目の書込みにおけるセット後のメモリセルアレイの状態の一例を示す図である。プレリードデータが「１１１１００００」で、ライトデータが「００００１１１１」であるため、先頭から５ビット目以降のメモリセルが「１」にセットされる。この結果、「１１１１１１１１」が保持される。
【０１０３】
図１６におけるｅは、２回目の書込みにおけるリセット後のメモリセルアレイの状態の一例を示す図である。プレリードデータが「１１１１００００」で、ライトデータが「００００１１１１」であるため、先頭から４ビット目までのメモリセルが「０」にリセットされる。この結果、「００００１１１１」が書き込まれる。
【０１０４】
図１６に例示したように、書込みのたびに、その直前に初期化を行わない比較例では、同図におけるｄに例示するように、書き換えるビット数が多いほど、「１」（ＬＲＳ）のビット数が多くなってしまう。このため、リーク電流が比較的大きくなり、ＩＲドロップの変動が大きくなる。
【０１０５】
これに対して、書込みのたびに、その直前に初期化すれば、図１５のいずれの時点においても「１」のビット数が図１６におけるｄよりも少なくなる。このため、リーク電流が比較的小さくなり、ＩＲドロップの変動を抑制することができる。
【０１０６】
［メモリシステムの動作例］
図１７は、第１の実施の形態におけるホストコンピュータ１００の動作の一例を示すフローチャートである。この動作は、例えば、メモリシステムに電源が投入されたときに開始される。
【０１０７】
ホストコンピュータ１００は、データ消去コマンドを発行してメモリコントローラ３００に供給する（ステップＳ９０１）。そして、ホストコンピュータ１００は、末尾アドレスを指定したライトコマンドを発行する（ステップＳ９０２）。また、ホストコンピュータは、重みを生成して、ライトコマンドおよび重みをメモリコントローラ３００に送信する（ステップＳ９０３）。
【０１０８】
次に、ホストコンピュータ１００は、リードコマンドを発行してメモリコントローラ３００に供給し、読み出された重みをメモリコントローラ３００から受信する（ステップＳ９０４）。ホストコンピュータ１００は、その重みを用いて、画像などを解析する（ステップＳ９０５）。そして、ホストコンピュータ１００は、重みを更新するか否かを判断する（ステップＳ９０６）。
【０１０９】
重みを更新しない場合に（ステップＳ９０６：Ｎｏ）、ホストコンピュータ１００は、ステップＳ９０４以降を繰り返し実行する。一方、重みを更新する場合に（ステップＳ９０６：Ｙｅｓ）、ホストコンピュータ１００は、ステップＳ９０１以降を繰り返し実行する。
【０１１０】
図１８は、第１の実施の形態におけるメモリコントローラ３００の動作の一例を示すフローチャートである。この動作は、例えば、メモリシステムに電源が投入されたときに開始される。
【０１１１】
メモリコントローラ３００は、ホストコンピュータ１００からデータ消去コマンドを受信したか否かを判断する（ステップＳ９１１）。データ消去コマンドを受信した場合に（ステップＳ９１１：Ｙｅｓ）、メモリコントローラ３００は、不揮発性メモリ４００を初期化させるためのコントローラ側初期化処理を実行する（ステップＳ９２０）。
【０１１２】
一方、データ消去コマンドを受信していない場合に（ステップＳ９１１：Ｎｏ）、メモリコントローラ３００は、ライトコマンドを受信したか否かを判断する（ステップＳ９１２）。ライトコマンドを受信した場合に（ステップＳ９１２：Ｙｅｓ）、メモリコントローラ３００は、不揮発性メモリ４００にデータを書き込むためのコントローラ側ライト処理を実行する（ステップＳ９３０）。
【０１１３】
一方、ライトコマンドを受信していない場合に（ステップＳ９１２：Ｎｏ）、メモリコントローラ３００は、リードコマンドを受信したか否かを判断する（ステップＳ９１３）。リードコマンドを受信した場合に（ステップＳ９１３：Ｙｅｓ）、メモリコントローラ３００は、不揮発性メモリ４００からリードデータを読み出す（ステップＳ９１４）。
【０１１４】
リードコマンドを受信していない場合（ステップＳ９１３：Ｎｏ）、あるいは、ステップＳ９２０、ステップＳ９３０またはステップＳ９１４の後に、メモリコントローラ３００は、ステップＳ９１１以降を繰り返し実行する。
【０１１５】
図１９は、第１の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。メモリコントローラ３００は、ライトイネーブルリクエストを不揮発性メモリ４００に送信する（ステップＳ９２１）。そして、メモリコントローラ３００は、不揮発性メモリ４００の初期化の完了によりライタブルモードに移行したか否かを判断する（ステップＳ９２２）。ライタブルモードに移行していない場合に（ステップＳ９２２：Ｎｏ）、メモリコントローラ３００は、ステップＳ９２２を繰り返し、ライタブルモードに移行した場合に（ステップＳ９２２：Ｙｅｓ）、コントローラ側初期化処理を終了する。
【０１１６】
図２０は、第１の実施の形態におけるコントローラ側ライト処理の一例を示すフローチャートである。メモリコントローラ３００は、メモリモジュール２００がライタブルモードであるか否かを判断する（ステップＳ９３１）。ライタブルモードである場合に（ステップＳ９３１：Ｙｅｓ）、メモリコントローラ３００は、ホストコンピュータ１００により指定された末尾アドレスを変数Ｘに格納する（ステップＳ９３２）。
【０１１７】
そして、メモリコントローラ３００は、ライトリクエストを発行して、ライトアドレス（Ｘ）にデータを書き込み（ステップＳ９３３）、その変数Ｘをデクリメントする（ステップＳ９３４）。メモリコントローラ３００は、変数Ｘが「０」より小さいか否かを判断する（ステップＳ９３５）。変数Ｘが「０」以上である場合に（ステップＳ９３５：Ｎｏ）、メモリコントローラ３００は、ステップＳ９３３以降を繰り返し実行する。
【０１１８】
一方、変数Ｘが「０」より小さい場合に（ステップＳ９３５：Ｙｅｓ）、メモリコントローラ３００は、ライトディセーブルリクエストを不揮発性メモリ４００に送信する（ステップＳ９３６）。
【０１１９】
また、ライタブルモードでない場合に（ステップＳ９３１：Ｎｏ）、メモリコントローラ３００は、ライト禁止エラーをホストコンピュータ１００に送信する（ステップＳ９３７）。ステップＳ９３６またはＳ９３７の後にメモリコントローラ３００は、コントローラ側ライト処理を終了する。
【０１２０】
図２１は、第１の実施の形態における不揮発性メモリ４００の動作の一例を示すフローチャートである。この動作は、例えば、メモリシステムに電源が投入されたときに開始される。
【０１２１】
不揮発性メモリ４００は、ライトイネーブルリクエストをメモリコントローラ３００から受信したか否かを判断する（ステップＳ９５１）。ライトイネーブルリクエストを受信した場合に（ステップＳ９５１：Ｙｅｓ）、不揮発性メモリ４００は、初期化するためのメモリ側初期化処理を実行し（ステップＳ９６０）、ライタブルモードに移行する（ステップＳ９５２）。
【０１２２】
一方、ライトイネーブルリクエストを受信していない場合に（ステップＳ９５１：Ｎｏ）、不揮発性メモリ４００は、ライトディセーブルリクエストを受信したか否かを判断する（ステップＳ９５３）。ライトディセーブルリクエストを受信した場合に（ステップＳ９５３：Ｙｅｓ）、不揮発性メモリ４００は、リードオンリーモードに移行する（ステップＳ９５４）。
【０１２３】
また、ライトディセーブルリクエストを受信していない場合に（ステップＳ９５３：Ｎｏ）、不揮発性メモリ４００は、ライトリクエストを受信したか否かを判断する（ステップＳ９５５）。ライトリクエストを受信した場合に（ステップＳ９５５：Ｙｅｓ）、不揮発性メモリ４００は、データを書き込むためのメモリ側ライト処理を実行する（ステップＳ９７０）。
【０１２４】
ライトリクエストを受信していない場合に（ステップＳ９５５：Ｎｏ）、不揮発性メモリ４００は、リードリクエストを受信したか否かを判断する（ステップＳ９５６）。リードリクエストを受信した場合に（ステップＳ９５６：Ｙｅｓ）、不揮発性メモリ４００は、リードデータを読み出す（ステップＳ９５７）。
【０１２５】
リードリクエストを受信していない場合（ステップＳ９５６：Ｎｏ）、あるいは、ステップＳ９５２、Ｓ９５４、Ｓ９７０、または、ステップＳ９５７の後に不揮発性メモリ４００は、ステップＳ９５１以降を繰り返し実行する。
【０１２６】
図２２は、第１の実施の形態におけるメモリ側初期化処理の一例を示すフローチャートである。不揮発性メモリ４００は、昇順でアドレスを選択して、全てのメモリセル５４０をリセットする（ステップＳ９６１）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖをアドレスＡＤＤmaxに初期化し（ステップＳ９６２）、メモリ側初期化処理を終了する。この先行アドレスＰｒｅｖは、その先行アドレスＰｒｅｖより番号の大きなアドレスに対するセットは禁止されることを示す。
【０１２７】
図２３は、第１の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、ライトアドレスおよびライトデータをメモリコントローラ３００から取得する（ステップＳ９７１）。そして、不揮発性メモリ４００は、そのライトアドレスが先行アドレスＰｒｅｖ以下であるか否かを判断する（ステップＳ９７２）。ライトアドレスが先行アドレスＰｒｅｖ以下である場合に（ステップＳ９７２：Ｙｅｓ）、不揮発性メモリ４００は、ライトデータに基づいてメモリセル５４０をセットする（ステップＳ９７３）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖをライトアドレスにより更新する（ステップＳ９７４）。
【０１２８】
一方、ライトアドレスが先行アドレスＰｒｅｖより大きい場合に（ステップＳ９７２：Ｎｏ）、不揮発性メモリ４００は、アドレスエラーを生成してメモリコントローラ３００に送信する（ステップＳ９７５）。ステップＳ９７４またはステップＳ９７５の後に不揮発性メモリ４００は、メモリ側ライト処理を終了する。
【０１２９】
図２４は、第１の実施の形態におけるメモリシステムの動作の一例を示すシーケンス図である。ホストコンピュータ１００がデータ消去コマンドを送信すると、メモリコントローラ３００は、そのコマンドに従ってライトイネーブルリクエストを不揮発性メモリ４００に送信する。
【０１３０】
不揮発性メモリ４００は、昇順で全てのメモリセル５４０をＨＲＳにリセット（初期化）する（ステップＳ９６１）。これにより、メモリモジュール２００は、リードオンリーモードからライタブルモードに移行する。
【０１３１】
ライタブルモードにおいてホストコンピュータ１００がライトコマンドおよびライトデータを送信すると、メモリコントローラ３００は、そのコマンドに従ってライトリクエストおよびライトデータを不揮発性メモリ４００に送信する。不揮発性メモリ４００は、ライトデータに対応するメモリセルを降順でＬＲＳにセットする（ステップＳ９７３）。全てライトデータの書込みが完了すると、メモリモジュール２００は、ライタブルモードからリードオンリーモードに移行する。
【０１３２】
リードオンリーモードにおいてホストコンピュータ１００がリードコマンドを送信すると、メモリコントローラ３００は、そのコマンドに従ってリードリクエストを不揮発性メモリ４００に送信する。不揮発性メモリ４００は、そのリクエストに従ってリードデータを読み出す（ステップＳ９５７）。
【０１３３】
ホストコンピュータ１００は、メモリコントローラ３００を介してリードデータを受信し、そのデータに基づいて画像等を解析する（ステップＳ９０５）。そして、重みを更新する際に、ホストコンピュータ１００は、再度データ消去コマンドを送信し、ステップＳ９６１により不揮発性メモリ４００が再度初期化される。これにより、メモリモジュール２００は、リードオンリーモードからライタブルモードに移行する。
【０１３４】
ライタブルモードにおいてホストコンピュータ１００がライトコマンドおよびライトデータを送信すると、不揮発性メモリ４００は、ライトデータに対応するメモリセルをセットする（ステップＳ９７３）。
【０１３５】
このように、ホストコンピュータ１００は、ライトデータの書込みのたびに、その直前にデータ消去コマンドを発行して不揮発性メモリ４００を初期化する。
【０１３６】
図２５は、第１の実施の形態における不揮発性メモリ４００の書き換え順序の一例を示す図である。カラムドライバ５１０またはロウドライバ５２０までの配線距離が、左上の隅が最も短く、右下の隅が最も長いとする。この場合に初期化においてカラムドライバ５１０またはロウドライバ５２０は、左上から右下へ順に（すなわち、配線距離が短い順に）メモリセル５４０を選択してＨＲＳにリセットする。これにより、リセットしたメモリセル数の増大に伴って配線抵抗が増大する一方で、リーク電流が低減するため、ＩＲドロップの変動を抑制することができる。
【０１３７】
また、書込みにおいてカラムドライバ５１０またはロウドライバ５２０は、右下から左上へ順に（すなわち、配線距離が長い順に）ライトデータに対応するメモリセル５４０を選択してＬＲＳにセットする。これにより、セットしたメモリセル数の増大に伴ってリーク電流が増大する一方で、配線抵抗が減少するため、ＩＲドロップの変動を抑制することができる。
【０１３８】
これらのＩＲドロップの変動の抑制により、書込み時間のばらつきを抑制することができる。また、電源のマージンを拡大することができる。
【０１３９】
このように、本技術の第１の実施の形態によれば、全メモリセルをＨＲＳに初期化するとライタブルモードに移行し、ライト処理が完了するとリードオンリーモードに移行するため、ライト処理の前に初期化によりリーク電流を最小にすることができる。これにより、ライト処理におけるＩＲドロップの変動を抑制することができる。
【０１４０】
［第１の変形例］
上述の第１の実施の形態では、ロウドライバおよびカラムドライバを１つずつ設けていたが、この構成では、不揮発性メモリの高密度化に伴って隣接するカラム線やロウ線の線間距離が短くなり、実装が困難になるおそれがある。この第１の実施の形態における第１の変形例のメモリアレイユニット５００は、カラム線やロウ線の線間距離を長くした点において第１の実施の形態と異なる。
【０１４１】
図２６は、第１の実施の形態の第１の変形例におけるメモリアレイユニット５００の一構成例を示すブロック図である。この第１の変形例のメモリアレイユニット５００は、カラムドライバおよびロウドライバを２つずつ備える点において第１の実施の形態と異なる。例えば、カラムドライバ５１０およびロウドライバ５２０の代わりに、左側ロウドライバ５５０、上側カラムドライバ５６０、下側カラムドライバ５７０および右側ロウドライバ５８０が設けられる。
【０１４２】
上側カラムドライバ５６０は、奇数カラムを駆動するものであり、下側カラムドライバ５７０は、偶数カラムを駆動するものである。また、左側ロウドライバ５５０は、奇数ロウを駆動するものであり、右側ロウドライバ５８０は、偶数ロウを駆動するものである。このようにカラムドライバおよびロウドライバを２つずつ備えることにより、それらを１つずつ備える場合と比較して、ドライバ当たりのカラムやロウの個数が少なくなるため、カラム線およびロウ線のそれぞれの線間距離を長くすることができる。これにより、不揮発性メモリを高密度化することができる。あるいは、実装が容易となる。
【０１４３】
なお、左側ロウドライバ５５０は、特許請求の範囲に記載の奇数ロウドライバの一例であり、右側ロウドライバ５８０は、特許請求の範囲に記載の偶数ロウドライバの一例である。また、上側カラムドライバ５６０は、特許請求の範囲に記載の奇数カラムドライバの一例であり、下側カラムドライバ５７０は、特許請求の範囲に記載の偶数カラムドライバの一例である。
【０１４４】
この第１の変形例においても、ドライバからの配線距離に応じた番号のアドレスがメモリセル５４０のそれぞれに割り当てられる。例えば、同一の奇数のロウ線に接続され、かつ、奇数のカラム線に接続されるメモリセル５４０には、左側ロウドライバ５５０に近いものほど小さい番号が割り当てられる。同一の奇数のロウ線に接続され、かつ、偶数のカラム線に接続されるメモリセル５４０についても、同様である。また、同一の偶数のロウ線に接続され、かつ、奇数のカラム線に接続されるメモリセル５４０には、右側ロウドライバ５８０に近いものほど小さい番号が割り当てられる。同一の奇数のロウ線に接続され、かつ、偶数のカラム線に接続されるメモリセル５４０についても、同様である。
【０１４５】
なお、第１の変形例において、配線距離が長いほど大きな番号を割り当てているが、逆に配線距離が長いほど小さな番号を割り当ててもよい。この場合には、メモリシステムが初期化において降順にアドレスを指定し、ライト処理において昇順にアドレスを指定すればよい。また、カラムドライバおよびロウドライバを両方とも２つ設けているが、カラムドライバおよびロウドライバの一方を２つ設け、他方を１つ設けてもよい。
【０１４６】
このように、本技術の第１の実施の形態の第１の変形例によれば、カラムドライバおよびロウドライバを２つずつ設けたため、それらを１つずつ設けた場合と比較してカラム線およびロウ線の線間距離を長くすることができる。
【０１４７】
［第２の変形例］
上述の第１の実施の形態では、メモリシステムは初期化において全てのメモリセルをＨＲＳに制御していたが、メモリセル数の増大に伴い、初期化に要する時間や消費電力が増大してしまう。この初期化の時間や消費電力を低減する観点から、ＨＲＳに初期化するメモリセル数を多少なりとも削減することが望ましい。例えば、ＬＲＳに書き換えるライトアドレスの末尾アドレス（最大値）未満のメモリセルは、ＨＲＳに初期化しなくても、電圧のマージンに与える影響が小さいため、その最大値以上のアドレスに対応するメモリセルは初期化対象から外すことができる。この第１の実施の形態の第２の変形例のメモリシステムは、初期化するメモリセル数を少なくした点において第１の実施の形態と異なる。
【０１４８】
図２７は、第１の実施の形態の第２の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。この第２の変形例におけるメモリ側初期化処理は、不揮発性メモリ４００がステップＳ９６１の代わりにステップＳ９６３およびＳ９６４を実行する点において第１の実施の形態と異なる。
【０１４９】
不揮発性メモリ４００は、ライトアドレスの最大値をメモリコントローラ３００から受け取り、その最大値により変数ＭＡＸを更新する（ステップＳ９６３）。不揮発性メモリ４００は、降順でＭＡＸ未満の全アドレスを指定してＨＲＳにリセットする（ステップＳ９６４）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖを初期化する（ステップＳ９６２）。
【０１５０】
なお、配線距離が長いほど大きな番号のアドレスが割り当てられているが、逆に、配線距離が長いほど小さな番号のアドレスが割り当てられる構成であってもよい。この場合には、ライトアドレスの最小値以下のメモリセルが初期化対象から除外される。
【０１５１】
このように、本技術の第１の実施の形態の第２の変形例によれば、ライトアドレスの最大値未満のアドレスに対応するメモリセルのみを初期化するため、全メモリセルを初期化する場合と比較して初期化するメモリセル数を少なくすることができる。
【０１５２】
［第３の変形例］
上述の第１の変形例では、ライトアドレスの最大値未満のアドレスに対応するメモリセルのみを初期化対象とすることにより、初期化するメモリセル数を削減していたが、さらにメモリセル数を削減することもできる。例えば、ライトアドレスの先頭アドレス（最小値）から末尾アドレス（最大値）までのアドレス範囲が指定された場合を考える。この場合に不揮発性メモリ４００は、そのアドレス範囲内のメモリセルと、その範囲よりもドライバに近い領域内のメモリセルとを昇順に初期化すればよい。この第１の実施の形態の第３の変形例のメモリシステムは、初期化するメモリセル数をさらに少なくした点において第２の変形例と異なる。
【０１５３】
図２８は、第１の実施の形態の第３の変形例における初期化範囲の一例を示す図である。同図において点線で囲まれた領域は、ライトアドレスの最小値から最大値までのアドレス範囲を示す。また、斜線の領域は、初期化するメモリセルからなる初期化範囲を示す。同図に例示するように、アドレス範囲内のメモリセルと、そのアドレス範囲よりもドライバに近い領域内のメモリセルとが昇順に初期化される。
【０１５４】
図２９は、第１の実施の形態の第３の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。この第３の変形例におけるメモリ側初期化処理は、不揮発性メモリ４００がステップＳ９６３およびＳ９６４の代わりにステップＳ９６５およびＳ９６６を実行する点において第１の実施の形態と異なる。
【０１５５】
不揮発性メモリ４００は、アドレスをメモリコントローラ３００から取得し（ステップＳ９６５）、そのアドレス範囲よりもドライバに近い全メモリセルを、そのアドレス範囲とともにＨＲＳに昇順にリセットする（ステップＳ９６６）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖを初期化する（ステップＳ９６２）。
【０１５６】
このように、本技術の第１の実施の形態の第３の変形例によれば、アドレス範囲内のメモリセルと、その範囲よりもドライバに近いメモリセルとのみを初期化するため、初期化するメモリセル数をさらに少なくすることができる。
【０１５７】
［第４の変形例］
上述の第１の実施の形態では、メモリシステムは初期化において全てのメモリセルをＨＲＳに制御していたが、初期化に要する時間や消費電力を低減する観点から、ＨＲＳに初期化するメモリセル数を多少なりとも削減することが望ましい。例えば、ドライバの近傍のメモリセルは、配線距離が比較的短いために配線抵抗が小さくなる。したがって、このようなメモリセルをＨＲＳに初期化しなくても、電圧のマージンに対する影響は少ない。この第１の実施の形態における第４の変形例の不揮発性メモリ４００は、初期化するメモリセル数を少なくした点において第１の実施の形態と異なる。
【０１５８】
図３０は、第１の実施の形態の第４の変形例におけるメモリ側初期化処理の一例を示すフローチャートである。この第４の変形例におけるメモリ側初期化処理は、不揮発性メモリ４００がステップＳ９６１の代わりにステップＳ９６７を実行する点において第１の実施の形態と異なる。
【０１５９】
不揮発性メモリ４００は、ドライバまでの配線距離が所定距離以下のメモリセルに対応する所定アドレスを除く、全アドレスを昇順に指定してＨＲＳにリセットする。言い換えれば、ドライバまでの配線距離が所定距離より長いメモリセルのみが初期化される（ステップＳ９６７）。例えば、図８のアドレス「０」乃至「１５」のうち、「０」、「１」および「４」以外の全アドレスが昇順に指定される。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖを初期化する（ステップＳ９６２）。
【０１６０】
このように、本技術の第１の実施の形態の第４の変形例によれば、ドライバまでの配線距離が所定距離より長いメモリセルのみを初期化するため、全メモリセルを初期化する場合と比較して初期化するメモリセル数を少なくすることができる。
【０１６１】
［第５の変形例］
上述の第１の実施の形態では、メモリコントローラ３００は、カラム線の配線層と、ロウ線の配線層とを積層したクロスポイント型の不揮発性メモリを制御していたが、制御対象の不揮発性メモリはクロスポイント型に限定されない。例えば、Ｖ３Ｄ（Vertical 3 Dimension）型であってもよい。この第１の実施の形態における第５の変形例の不揮発性メモリ４００は、Ｖ３Ｄ型である点において第１の実施の形態と異なる。
【０１６２】
図３１は、第１の実施の形態の第５の変形例におけるメモリセルアレイ５３０の斜視図である。半導体基板上に、ロウ線５２１乃至５２４が積層され、その積層方向に沿ってカラム線５１１乃至５１４がロウ線を貫通する。そして、カラム線を通すロウ線上のスルーホールの内面と、カラム線の側面とに挟まれる位置に、メモリセル５４０が形成される。
【０１６３】
このように、本技術の第１の実施の形態の第５の変形例によれば、Ｖ３Ｄ型の不揮発性メモリ４００を制御するため、Ｖ３Ｄ型の不揮発性メモリ４００において、ＩＲドロップの変動を抑制することができる。
【０１６４】
［第６の変形例］
上述の第１の実施の形態では、複数のメモリアレイユニット５００で、データバッファ４１０およびアドレスデコーダ４３０を共有していたが、これらを共有せずに、メモリアレイユニットごとに設けてもよい。この第１の実施の形態における第６の変形例の不揮発性メモリ４００は、メモリアレイユニットごとにデータバッファおよびアドレスデコーダを設けた点において第１の実施の形態と異なる。
【０１６５】
図３２は、第１の実施の形態の第６の変形例における不揮発性メモリ４００の一構成例を示すブロック図である。この第６の変形例の不揮発性メモリ４００の構成は、ＭＡＵ配置部４２０、データバッファ４１０およびアドレスデコーダ４３０の代わりに複数のメモリユニット６００を備える点において第１の実施の形態と異なる。
【０１６６】
図３３は、第１の実施の形態の第６の変形例におけるメモリユニット６００の一構成例を示すブロック図である。このメモリユニット６００は、データバッファ６１０、メモリアレイユニット６２０およびアドレスデコーダ６３０を備える。メモリアレイユニット６２０ごとに、データバッファ６１０およびアドレスデコーダ６３０を設けることにより、データのバッファリングやアドレスのデコード処理を並列に実行することができ、アクセス速度を向上させることができる。
【０１６７】
このように、本技術の第１の実施の形態における第６の変形例の不揮発性メモリ４００は、メモリアレイユニット６２０ごとに、データバッファ６１０およびアドレスデコーダ６３０を設けたため、アクセス速度を向上させることができる。
【０１６８】
＜２．第２の実施の形態＞
上述の第１の実施の形態では、メモリセルアレイ５３０の全領域をライト処理後にリードオンリーモードにしてアクセスを制限していたが、ドライバの近傍付近の領域は、アクセスを制限する必要に乏しい。この第２の実施の形態におけるメモリシステムは、メモリセルアレイ５３０内にアクセスを制限する領域と、制限しない領域とを有する点において第１の実施の形態と異なる。
【０１６９】
図３４は、第２の実施の形態におけるメモリセルアレイ５３０内の領域の一例を示す図である。第２の実施の形態のメモリセルアレイ５３０は、Ａ、Ｂ、ＣおよびＤの４つの領域を有する点において第１の実施の形態と異なる。
【０１７０】
メモリセルアレイ５３０において、カラムドライバ５１０からの距離とロウドライバ５２０からの距離とがいずれもｒである点を原点Ｏとする。この原点Ｏを中心とし、半径ｒで中心角が４５度の円弧により、メモリセルアレイ５３０は２つの領域に分割される。その２つの領域のそれぞれは、さらに２つに分割され、これらの計４つの領域を以下、Ａ、Ｂ、ＣおよびＤ領域と称する。なお、メモリセルアレイ５３０は、これらのＡ、Ｂ、ＣおよびＤ領域以外以外の領域をさらに有してもよい。例えば、不良セル等からなるアクセス不可の領域などをさらに有してもよい。
【０１７１】
ロウドライバ５２０上の中点をＭｒ１とし、カラムドライバ５１０上の中点をＭｃ１とする。また、原点Ｏを通り、ロウドライバ５２０に直交する垂線上で原点Ｏからの距離がｒ／３の点をＭｃ２とする。原点Ｏを通り、カラムドライバ５１０と直交する垂線上で原点Ｏからの距離がｒ／３の点をＭｒ２とする。
【０１７２】
半径ｒの円弧を境界として原点Ｏ側の領域は、Ｍｒ１およびＭｃ２を結ぶ曲線と、Ｍｒ２およびＭｃ１を結ぶ曲線とにより３つに分割される。その中央の領域をＤ領域とし、残りの２つの領域をいずれもＣ領域とする。また、半径ｒの円弧を境界としてドライバ側の領域は、Ｍｒ１およびＭｃ１を結ぶ曲線と、Ｍｒ１およびＭｃ２を結ぶ曲線と、Ｍｒ２およびＭｃ１を結ぶ曲線とにより４つの領域に分割される。それらのうち中央の領域をＢ領域とし、残りの３つの領域をいずれもＡ領域とする。
【０１７３】
ＡおよびＢ領域は、ＣおよびＤ領域よりもドライバに近く、ＩＲドロップの変動は比較的小さい。このため、ＡおよびＢ領域についてはアクセスが制限されない。一方、ＣおよびＤ領域は、第１の実施の形態と同様に、ライト処理後にリードオンリーモードに移行して、書換えが制限される。
【０１７４】
また、Ｃ領域を通るロウは、Ａ領域またはＤ領域も通り、Ｃ領域の書き換え前に、ＩＲドロップの大きい方のＤ領域を初期化しておくことが望ましい。さらに、Ｄ領域を通るロウは、Ａ領域またはＢ領域も通り、Ｄ領域の書き換え前に、ＩＲドロップの大きい方のＢ領域を初期化しておくことが望ましい。これらの理由により、ＢおよびＤ領域は、ＣやＤ領域を書き換える際に初期化することが望ましい。例えば、Ｃ領域またはＤ領域をリードオンリーモードからライタブルモードに移行させるときに、ＢおよびＤ領域が初期化される。
【０１７５】
なお、Ａ領域は、特許請求の範囲に記載の第１の非制限領域の一例であり、Ｂ領域は、特許請求の範囲に記載の第２の非制限領域の一例である。また、Ｃ領域は、特許請求の範囲に記載の第１のアクセス制限領域の一例であり、Ｄ領域は、特許請求の範囲に記載の第２のアクセス制限領域の一例である。
【０１７６】
図３５は、第２の実施の形態における領域ごとの特性を説明するための図である。Ａ、ＢおよびＣ領域については、書換え順序が制約されない。一方、Ｄ領域は、第１の実施の形態と同様に、書き換える際に、降順にアドレスを指定して（すなわち、シーケンシャルに）書き換える必要がある。これは、Ｄ領域が、Ａ、ＢおよびＣ領域のいずれよりもドライバから遠く、ＩＲドロップが最も大きくなるためである。
【０１７７】
また、ＡまたはＢ領域を書き換える前には、いずれの領域も消去しておく必要は無い。一方、Ｃ領域を書き換える前にＢおよびＤ領域が消去されていなくてはならない。また、Ｄ領域を書き換える前にＢ領域が消去されていなくてはならない。
【０１７８】
さらに、Ａ領域を書き換えた際には、どの領域も書き換えが禁止されない。一方、Ｂ、ＣおよびＤ領域のいずれかの書き換えが行われた際には、ＣおよびＤ領域はリードオンリーモードに移行して書き換えが禁止される。
【０１７９】
図３６は、第２の実施の形態におけるメモリモジュール２００の状態遷移図の一例を示す図である。メモリモジュール２００の状態は、Ｃ・Ｄリードオンリーモード８１１とＣ・Ｄライタブルモード８２１とを含む。Ｃ・Ｄリードオンリーモード８１１は、ＣおよびＤ領域の書き換えが禁止されるモードであり、Ｃ・Ｄライタブルモード８２１は、それらの領域の書き換えが許可されるモードである。起動時などの初期状態は、例えば、Ｃ・Ｄリードオンリーモード８１１に設定される。
【０１８０】
Ｃ・Ｄリードオンリーモード８１１においてメモリコントローラ３００は、ホストコンピュータ１００によりＣ・Ｄデータ消去コマンドが発行されると、ライトイネーブルリクエストによりＢおよびＤ領域を初期化する。そして、メモリコントローラ３００は、状態をＣ・Ｄライタブルモード８２１に移行させる。
【０１８１】
また、Ｃ・Ｄライタブルモード８２０において、ホストコンピュータ１００によりライトコマンドが発行されると、メモリコントローラ３００は、ライトリクエストによりライトデータを書き込む。Ａ、ＣまたはＤ領域の書込みが完了した場合に、メモリコントローラ３００は、ライトディセーブルリクエストを生成して、状態をＣ・Ｄリードオンリーモード８１１に移行させる。
【０１８２】
また、メモリコントローラ３００は、Ｂ領域に対するライトコマンドが発行された際にも、書込み完了後に状態をＣ・Ｄリードオンリーモード８１１に移行させる。
【０１８３】
ここで、Ｃ・Ｄライタブルモードでは、Ａ、Ｂ、ＣおよびＤ領域のうち、複数の領域に亘って連続してデータを書き込むことができる。ただし、図３５で前述したようにＣ領域を書き換える前においてＢおよびＤ領域が消去されていなくてはならず、Ｄ領域を書き換える前にＢ領域が消去されていなくてはならないという制約がある。この制約に従って、ＢおよびＤ領域を消去してから、Ｃ領域、次にＤ領域の順に連続して書き換えることはできる。一方、この制約に従って、ＢおよびＤ領域を消去してから、Ｄ領域、次にＣ領域の順に連続して書き換えることはできない。実装においては、後述するように、例えば、Ｄ領域を書き換えたか否かを示すＤライトフラグにより、書換えが制御される。
【０１８４】
また、Ｃ・Ｄリードオンリーモード８１１とＣ・Ｄライタブルモード８２１との両方において、ホストコンピュータ１００によりリードコマンドが発行されると、メモリコントローラ３００は、リードリクエストによりリードデータを読み出す。
【０１８５】
図３７は、第２の実施の形態におけるメモリコントローラ３００の動作の一例を示すフローチャートである。この第２の実施の形態のメモリコントローラ３００の動作は、ステップＳ９１３の代わりにステップＳ９１５を実行する点において第１の実施の形態と異なる。
【０１８６】
メモリコントローラ３００は、ホストコンピュータ１００からＣ・Ｄデータ消去コマンドを受信したか否かを判断する（ステップＳ９１５）。Ｃ・Ｄデータ消去コマンドを受信した場合に（ステップＳ９１５：Ｙｅｓ）、メモリコントローラ３００は、不揮発性メモリ４００を初期化させるためのコントローラ側初期化処理を実行する（ステップＳ９２０）。一方、Ｃ・Ｄデータ消去コマンドを受信してない場合に（ステップＳ９１５：Ｎｏ）、メモリコントローラ３００は、ステップＳ９１２以降を実行する。
【０１８７】
図３８は、第２の実施の形態におけるコントローラ側初期化処理の一例を示すフローチャートである。メモリコントローラ３００は、Ｃ・Ｄライトイネーブルリクエストを不揮発性メモリ４００に送信する（ステップＳ９２３）。そして、メモリコントローラ３００は、Ｃ・Ｄ領域の初期化の完了によりＣ・Ｄライタブルモードに移行したか否かを判断する（ステップＳ９２４）。Ｃ・Ｄライタブルモードに移行していない場合に（ステップＳ９２４：Ｎｏ）、メモリコントローラ３００は、ステップＳ９２４を繰り返し、Ｃ・Ｄライタブルモードに移行した場合に（ステップＳ９２４：Ｙｅｓ）、コントローラ側初期化処理を終了する。
【０１８８】
図３９は、第２の実施の形態におけるメモリコントローラ３００の動作の一例を示すフローチャートである。メモリコントローラ３００は、現在の状態がＣ・Ｄライタブルモードであるか否かを判断する（ステップＳ９４１）。Ｃ・Ｄライタブルモードである場合（ステップＳ９４１：Ｙｅｓ）、メモリコントローラ３００は、Ｄ領域へのライトコマンドであるか否かを判断する（ステップＳ９４２）。Ｄ領域へのライトコマンドである場合に（ステップＳ９４２：Ｙｅｓ）、メモリコントローラ３００は、ステップＳ９３２乃至Ｓ９３５を実行する。一方、Ｄ領域へのライトコマンドでない場合に（ステップＳ９４２：Ｎｏ）、メモリコントローラ３００は、Ｃ領域へのライトコマンドであるか否かを判断する（ステップＳ９４３）。
【０１８９】
Ｃ領域へのライトコマンドである場合（ステップＳ９４３：Ｙｅｓ）、メモリコントローラ３００は、そのＣ領域へのライトデータの書込みを行う（ステップＳ９４４）。また、Ｄ領域へのライトコマンドである場合（ステップＳ９４３：Ｎｏ）、メモリコントローラ３００は、そのＤ領域へのライトデータの書込みを行う（ステップＳ９４５）。
【０１９０】
変数Ｘが「０」より小さい場合（ステップＳ９３５：Ｙｅｓ）、または、ステップＳ９４４の後にメモリコントローラ３００は、Ｃ・Ｄライトディセーブルリクエストを不揮発性メモリ４００に送信する（ステップＳ９４６）。ステップＳ９４５またはＳ９４６の後にメモリコントローラ３００は、Ｃ・Ｄリードオンリーモードに移行してライト処理を終了する。
【０１９１】
Ｃ・Ｄライタブルモードでない場合（ステップＳ９４１：Ｎｏ）、メモリコントローラ３００は、ＣまたはＤ領域へのライトコマンドであるか否かを判断する（ステップＳ９４７）。ＣまたはＤ領域へのライトコマンドである場合に（ステップＳ９４７：Ｙｅｓ）、メモリコントローラ３００は、アクセス禁止エラーを生成する（ステップＳ９４８）。一方、ＣまたはＤ領域へのライトコマンドでない場合に（ステップＳ９４７：Ｎｏ）、メモリコントローラ３００は、その領域へのライトデータの書込みを行う（ステップＳ９４９）。ステップＳ９４８またはＳ９４９の後に、メモリコントローラ３００は、ライト処理を終了する。
【０１９２】
図４０は、第２の実施の形態における不揮発性メモリ４００の動作の一例を示すフローチャートである。
【０１９３】
不揮発性メモリ４００は、Ｃ・Ｄライトイネーブルリクエストをメモリコントローラ３００から受信したか否かを判断する（ステップＳ９８０）。Ｃ・Ｄライトイネーブルリクエストを受信した場合に（ステップＳ９８０：Ｙｅｓ）、不揮発性メモリ４００は、メモリ側初期化処理を実行し（ステップＳ９８５）、Ｃ・Ｄライタブルモードに移行する（ステップＳ９８１）。
【０１９４】
一方、Ｃ・Ｄライトイネーブルリクエストを受信していない場合に（ステップＳ９８０：Ｎｏ）、不揮発性メモリ４００は、Ｃ・Ｄライトディセーブルリクエストを受信したか否かを判断する（ステップＳ９８２）。Ｃ・Ｄライトディセーブルリクエストを受信した場合に（ステップＳ９８２：Ｙｅｓ）、不揮発性メモリ４００は、Ｃ・Ｄリードオンリーモードに移行する（ステップＳ９８３）。
【０１９５】
また、Ｃ・Ｄライトディセーブルリクエストを受信していない場合に（ステップＳ９８２：Ｎｏ）、不揮発性メモリ４００は、ライトリクエストを受信したか否かを判断する（ステップＳ９５５）。ライトリクエストを受信した場合に（ステップＳ９５５：Ｙｅｓ）、不揮発性メモリ４００は、データを書き込むためのメモリ側ライト処理を実行する（ステップＳ９９０）。
【０１９６】
ライトリクエストを受信していない場合に（ステップＳ９５５：Ｎｏ）、不揮発性メモリ４００は、ステップＳ９５６以降を実行する。
【０１９７】
図４１は、第２の実施の形態におけるメモリ側初期化処理の一例を示すフローチャートである。不揮発性メモリ４００は、昇順で、ＢおよびＤ領域のアドレスを選択して、全てをリセットする（ステップＳ９８６）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖを初期化し（ステップＳ９８７）、Ｄライトフラグに「０」を設定する（ステップＳ９８８）。このＤライトフラグは、Ｄ領域に書込みを行ったか否かを示すフラグである。ステップＳ９８８の後に、不揮発性メモリ４００は、メモリ側初期化処理を終了する。
【０１９８】
図４２は、第２の実施の形態におけるメモリ側ライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、Ａ領域に対するライトリクエストであるか否かを判断する（ステップＳ９９１）。Ａ領域に対するライトリクエストである場合に（ステップＳ９９１：Ｙｅｓ）、不揮発性メモリ４００は、Ａライト処理を実行する（ステップＳ９９２）。
【０１９９】
一方、Ａ領域に対するライトリクエストでない場合に（ステップＳ９９１：Ｎｏ）、不揮発性メモリ４００は、Ｂ領域に対するライトリクエストであるか否かを判断する（ステップＳ９９３）。Ｂ領域に対するライトリクエストである場合に（ステップＳ９９３：Ｙｅｓ）、不揮発性メモリ４００は、Ｂライト処理を実行する（ステップＳ９９４）。
【０２００】
一方、Ｂ領域に対するライトリクエストでない場合に（ステップＳ９９３：Ｎｏ）、不揮発性メモリ４００は、Ｃ領域に対するライトリクエストであるか否かを判断する（ステップＳ９９５）。Ｃ領域に対するライトリクエストである場合に（ステップＳ９９５：Ｙｅｓ）、不揮発性メモリ４００は、Ｃライト処理を実行する（ステップＳ９９６）。
【０２０１】
一方、Ｃ領域に対するライトリクエストでない場合に（ステップＳ９９５：Ｎｏ）、不揮発性メモリ４００は、Ｄライト処理を実行する（ステップＳ９９７）。ステップＳ９９２、Ｓ９９４、Ｓ９９６またはＳ９９７の後に不揮発性メモリ４００は、メモリ側ライト処理を終了する。
【０２０２】
図４３は、第２の実施の形態におけるＡライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、ライトアドレスおよびライトデータを取得し（ステップＳ９９２−１）、ライトデータに対応するメモリセルをＬＲＳにセットする（ステップＳ９９２−２）。ステップＳ９９２−２の後に不揮発性メモリ４００は、Ａライト処理を終了する。
【０２０３】
図４４は、第２の実施の形態におけるＢライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、ライトアドレスおよびライトデータを取得し（ステップＳ９９４−１）、ライトデータに対応するメモリセルをＬＲＳにセットする（ステップＳ９９４−２）。そして、不揮発性メモリ４００は、Ｃ・Ｄリードオンリーモードに移行し（ステップＳ９９４−３）、Ｂライト処理を終了する。
【０２０４】
図４５は、第２の実施の形態におけるＣライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、ライトアドレスおよびライトデータを取得し（ステップＳ９９６−１）、Ｄライトフラグが「０」であるか否かを判断する（ステップＳ９９６−２）。
【０２０５】
Ｄライトフラグが「０」である場合に（ステップＳ９９６−２：Ｙｅｓ）、不揮発性メモリ４００は、ライトデータに対応するメモリセルをＬＲＳにセットする（ステップＳ９９６−３）。一方、Ｄライトフラグが「１」である場合に（ステップＳ９９６−２：Ｎｏ）、不揮発性メモリ４００は、アクセス禁止エラーを生成する（ステップＳ９９６−４）。ステップＳ９９６−３またはＳ９９６−４の後に不揮発性メモリ４００は、Ｃライト処理を終了する。
【０２０６】
図４６は、第２の実施の形態におけるＤライト処理の一例を示すフローチャートである。不揮発性メモリ４００は、ライトアドレスおよびライトデータをメモリコントローラ３００から取得する（ステップＳ９９７−１）。そして、不揮発性メモリ４００は、そのライトアドレスが先行アドレスＰｒｅｖ以下であるか否かを判断する（ステップＳ９９７−２）。ライトアドレスが先行アドレスＰｒｅｖ以下である場合に（ステップＳ９９７−２：Ｙｅｓ）、不揮発性メモリ４００は、そのライトアドレスに対応するメモリセル５４０をセットする（ステップＳ９９７−３）。そして、不揮発性メモリ４００は、先行アドレスＰｒｅｖをライトアドレスにより更新し、Ｄライトフラグを「１」にする（ステップＳ９９７−４）。
【０２０７】
一方、ライトアドレスが先行アドレスＰｒｅｖより大きい場合に（ステップＳ９９７−２：Ｎｏ）、不揮発性メモリ４００は、アドレスエラーを生成してメモリコントローラ３００に送信する（ステップＳ９９７−５）。ステップＳ９９７−４またはステップＳ９９７−５の後に不揮発性メモリ４００は、Ｄライト処理を終了する。
【０２０８】
このように、本技術の第２の実施の形態によれば、ＣおよびＤ領域を初期化するとライタブルモードに移行し、それらの領域へのライト処理が完了するとリードオンリーモードに移行するため、初期化によりリーク電流を最小にすることができる。これにより、ライト処理におけるＩＲドロップの変動を抑制することができる。また、初期化する領域は、ＣおよびＤ領域のみであるため、Ａ乃至Ｄ領域を全て初期化する場合と比較して、初期化するメモリセル数を少なくすることができる。
【０２０９】
＜３．第３の実施の形態＞
上述の第１の実施の形態では、メモリモジュール２００に不揮発性メモリ４００のみを設けていたが、不揮発性メモリ４００は、一般に揮発性メモリよりもアクセス速度が遅い。このため、不揮発メモリ４００をメインメモリとして用いると、揮発性メモリを用いた場合と比較して処理速度が遅くなるという問題がある。処理速度を向上させるには、例えば、揮発性メモリをさらに搭載してメインメモリとして用い、不揮発性メモリ４００は、停電時の退避領域として用いればよい。この第３の実施の形態のメモリモジュールは、揮発性メモリをさらに設けてメモリモジュールのアクセス速度を向上させた点において第１の実施の形態と異なる。
【０２１０】
図４７は、第３の実施の形態におけるメモリシステムの一構成例を示す全体図である。この第３の実施の形態のメモリシステムは、メモリモジュール２００の代わりにメモリモジュール２０１を備え、バッテリ１５０をさらに備える点において第１の実施の形態と異なる。
【０２１１】
メモリモジュール２０１は、切り替え部２１０、揮発性メモリ２２０、電源回路２３０、メモリコントローラ３００および不揮発性メモリ４００を備える。
【０２１２】
切り替え部２１０は、切替信号ＳＷ０およびＳＷ１に従って、揮発性メモリ２２０、メモリコントローラ３００およびホストコンピュータ１００の接続先を切り替えるものである。
【０２１３】
切替信号ＳＷ０は、揮発性メモリ２２０と不揮発性メモリ４００のいずれかをホストコンピュータ１００のアクセス先として指定する信号である。切替信号ＳＷ０により揮発性メモリ２２０が指定されると、切り替え部２１０は、ホストコンピュータ１００と揮発性メモリ２２０とを接続する。一方、切替信号ＳＷ０により不揮発性メモリ４００が指定されると、切り替え部２１０は、ホストコンピュータ１００とメモリコントローラ３００とを接続する。
【０２１４】
また、切替信号ＳＷ１は、揮発性メモリ２２０とホストコンピュータ１００のいずれかをメモリコントローラ３００のアクセス先として指定する信号である。切替信号ＳＷ１により揮発性メモリ２２０が指定されると、切り替え部２１０は、メモリコントローラ３００と揮発性メモリ２２０とを接続する。一方、切替信号ＳＷ１によりホストコンピュータ１００が指定されると、切り替え部２１０は、ホストコンピュータ１００とメモリコントローラ３００とを接続する。
【０２１５】
揮発性メモリ２２０は、ホストコンピュータ１００またはメモリコントローラ３００からのコマンドやリクエストに従って、データを保持するものである。この揮発性メモリ２２０として、例えば、ＤＲＡＭ（Dynamic Random Access Memory）が用いられる。
【０２１６】
第３の実施の形態のホストコンピュータ１００は、揮発性メモリ２２０をメインメモリとして用いて、各種の処理を行う。
【０２１７】
バッテリ１５０は、メモリモジュール２０１に接続される電池であり、主電源ＶＤＤが停電したときの予備電源として用いられる。なお、バッテリ１５０をメモリモジュール２０１の外部に設けているが、バッテリ１５０をメモリモジュール２０１に内蔵する構成であってもよい。
【０２１８】
電源回路２３０は、メモリモジュール２０１の電源を管理するものである。この電源回路２３０は、初期状態において主電源ＶＤＤを用いてメモリモジュール２０１内の各回路に電源を供給する。また、電源回路２３０は、主電源ＶＤＤを監視し、その停電を検知する。電源回路２３０は、停電が生じたか否かを示す検知信号をメモリコントローラ３００に供給する。そして、主電源ＶＤＤの停電を検知すると電源回路２３０は、主電源から、予備電源（バッテリ１５０）に切り替えて電源供給を継続する。
【０２１９】
メモリコントローラ３００は、初期状態においては、ホストコンピュータ１００に接続される。そして停電が検知されると、メモリコントローラ３００は、切替信号ＳＷ１により揮発性メモリ２２０にアクセス先を切り替えるとともに不揮発性メモリ４００を初期化してライタブルモードにする。そして、メモリコントローラ３００は、揮発性メモリ２２０からデータを読み出して、不揮発性メモリ４００に、そのデータを書き込む（すなわち、退避する）。また、メモリコントローラ３００は、停電から復帰した際に、退避したデータを不揮発性メモリ４００から読み出して揮発性メモリ２２０に書き込む（すなわち、復元する）。
【０２２０】
また、メモリコントローラ３００は、停電したときの他、ホストコンピュータ１００からデータ消去コマンドが供給されたときにも、不揮発性メモリ４００を初期化する。
【０２２１】
図４８は、第３の実施の形態におけるメモリコントローラ３００の動作の一例を示すフローチャートである。メモリコントローラ３００は、停電が検知されたか否かを判断する（ステップＳ９８５）。停電が検知された場合には（ステップＳ９８５：Ｙｅｓ）、メモリコントローラ３００は、コントローラ側初期化処理を実行し（ステップＳ９２０）、揮発性メモリ２２０のデータを不揮発性メモリ４００に退避する（ステップＳ９８６）。そして、メモリコントローラ３００は、停電から復帰したか否かを判断する（ステップＳ９８７）。停電から復帰していない場合に（ステップＳ９８７：Ｎｏ）、メモリコントローラ３００は、ステップＳ９８７を繰り返す。なお、同図では、データ消去コマンドに従ってメモリコントローラ３００が初期化を行う動作は省略されている。
【０２２２】
停電から復帰した場合に（ステップＳ９８７：Ｙｅｓ）、メモリコントローラ３００は、退避したデータを書き戻す（ステップＳ９８８）。停電が検知されていない場合（ステップＳ９８５：Ｎｏ）、または、ステップＳ９８８の後にメモリコントローラ３００は、ステップＳ９８５以降を繰り返し実行する。
【０２２３】
このように、本技術の第３の実施の形態によれば、停電時にメモリコントローラ３００が揮発性メモリ２２０のデータを不揮発性メモリ４００に退避するため、停電時のデータの消失を防止することができる。また、ホストコンピュータ１００は、揮発性メモリ２２０をメインメモリとして用いることができるため、処理速度を向上させることができる。
【０２２４】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０２２５】
また、上述の実施の形態において説明した処理手順は、これら一連の手順を有する方法として捉えてもよく、また、これら一連の手順をコンピュータに実行させるためのプログラム乃至そのプログラムを記憶する記録媒体として捉えてもよい。この記録媒体として、例えば、ＣＤ（Compact Disc）、ＭＤ（MiniDisc）、ＤＶＤ（Digital Versatile Disc）、メモリカード、ブルーレイディスク（Blu-ray（登録商標）Disc）等を用いることができる。
【０２２６】
なお、ここに記載された効果は必ずしも限定されるものではなく、本開示中に記載されたいずれかの効果であってもよい。
【０２２７】
なお、本技術は以下のような構成もとることができる。
（１）可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御部と、
前記ライタブルモードにおいて前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御部と
を具備するメモリコントローラ。
（２）前記アクセス制限領域は、前記メモリセルアレイの一部の領域である
前記（１）記載のメモリコントローラ。
（３）前記メモリセルアレイは、前記アクセス制限領域と前記リードオンリーモードにおいて書き込みが許可される非制限領域とを有し、
前記アクセス制限領域は、第１のアクセス制限領域と当該第１のアクセス制限領域よりもドライバから遠い第２のアクセス制限領域とを有し、
前記非制限領域は、第１の非制限領域と当該第１の非制限領域よりも前記ドライバから遠い第２の非制限領域とを有し、
前記初期化制御部は、前記第２の非制限領域と前記第２のアクセス制限領域とにおける前記可変抵抗素子の抵抗値を前記初期値に変化させて前記ライタブルモードに移行する
前記（２）記載のメモリコントローラ。
（４）前記ライト制御部は、前記第２の非制限領域と前記第２のアクセス制限領域とにおいて前記可変抵抗素子の抵抗値が前記初期値である場合には前記第１のアクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させる
前記（３）記載のメモリコントローラ。
（５）前記ライト制御部は、前記第２の非制限領域において前記可変抵抗素子の抵抗値が前記初期値である場合には前記第２のアクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させる
前記（３）または（４）に記載のメモリコントローラ。
（６）前記ライト制御部は、前記ライタブルモードにおいて前記第２の非制限領域と前記第１のアクセス制限領域と前記第２のアクセス制限領域とのいずれかの前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させた場合には前記リードオンリーモードに移行する
前記（３）から（５）のいずれかに記載のメモリコントローラ。
（７）前記初期化制御部は、ライトアドレスの最大値および最小値の一方に対応する前記可変抵抗素子よりもドライバに近い可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１）から（６）のいずれかに記載のメモリコントローラ。
（８）前記初期化制御部は、前記アクセス制限領域の少なくとも一部の所定の範囲がアクセス範囲として指定されると前記アクセス範囲内の前記可変抵抗素子と前記アクセス範囲よりも配線距離の短い前記可変抵抗素子との抵抗値を前記初期値より小さい値に変化させる
前記（１）から（６）のいずれかに記載のメモリコントローラ。
（９）前記初期化制御部は、前記アクセス制限領域内の全ての可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１）記載のメモリコントローラ。
（１０）前記初期化制御部は、前記アクセス制限領域内の一部の可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１）記載のメモリコントローラ。
（１１）前記初期化制御部は、ドライバまでの配線距離が短い前記可変抵抗素子から順に前記抵抗値を前記初期値に変化させる
前記（１）から（１０）のいずれかに記載のメモリコントローラ。
（１２）前記可変抵抗素子のそれぞれには、前記配線距離に応じた番号のアドレスが割り当てられており、
前記初期化制御部は、所定の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１１）記載のメモリコントローラ。
（１３）前記ライト制御部は、ドライバまでの配線距離が長い前記可変抵抗素子から順に前記抵抗値を前記初期値より小さい値に変化させる
前記（１１）または（１２）記載のメモリコントローラ。
（１４）前記ライト制御部は、前記所定の順序に対して逆の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させる
前記（１３）記載のメモリコントローラ。
（１５）可変抵抗素子が配列されたメモリセルアレイと、
前記メモリセルアレイを駆動するドライバと、
前記メモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記ドライバの制御によって前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御部と、
前記ライタブルモードにおいて前記ドライバの制御によって前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御部と
を具備するメモリシステム。
（１６）前記初期化制御部は、初期化を指示するコマンドに従って前記アクセス制限領域内の前記可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１５）記載のメモリシステム。
（１７）主電源の電源断を検知して前記主電源から予備電源に切り替える電源回路をさらに具備し、
前記初期化制御部は、前記電源断が検知されると前記アクセス制限領域内の前記可変抵抗素子の抵抗値を前記初期値に変化させる
前記（１５）記載のメモリシステム。
（１８）前記ドライバは、
前記メモリセルアレイにおいて所定の方向に配列された前記可変抵抗素子からなる行を駆動するロウドライバと、
前記メモリセルにおいて前記所定の方向に垂直な方向に配列された前記可変抵抗素子からなる列を駆動するカラムドライバと
を備え、
前記可変抵抗素子のそれぞれには前記ロウドライバおよび前記カラムドライバから前記可変抵抗素子までの距離に応じた番号のアドレスが割り当てられ、
前記初期化制御部は、所定の順序で前記アドレスを選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させ、
前記ライト制御部は、前記所定の順序に対して逆の順序で前記アドレスを順に選択して当該選択したアドレスに対応する前記可変抵抗素子の抵抗値を前記初期値より小さい値に変化させる
前記（１５）から（１７）のいずれかに記載のメモリシステム。
（１９）前記ロウドライバは、
前記ロウドライバは、
奇数行を駆動する奇数ロウドライバと、
偶数行を駆動する偶数ロウドライバと
を含み、
前記カラムドライバは、
奇数列を駆動する奇数カラムドライバと、
偶数列を駆動する偶数カラムドライバと
を含む
前記（１８）記載のメモリシステム。
（２０）可変抵抗素子が配列されたメモリセルアレイにおけるアクセス制限領域への書込みを禁止するリードオンリーモードと前記アクセス制限領域への書込みを許可するライタブルモードとのうち前記リードオンリーモードにおいて前記アクセス制限領域内の前記可変抵抗素子の抵抗値を所定値より大きい初期値に変化させて前記ライタブルモードに移行する初期化制御手順と、
前記ライタブルモードにおいて前記アクセス制限領域内の前記可変抵抗素子のうちライトデータに対応する素子の抵抗値を前記初期値より小さい値に変化させて前記リードオンリーモードに移行するライト制御手順と
を具備するメモリコントローラの制御方法。
【符号の説明】
【０２２８】
１００  ホストコンピュータ
１１０  入出力インターフェース
１２０  重みデータ生成部
１３０  データ解析部
１５０  バッテリ
２００、２０１  メモリモジュール
２１０  切り替え部
２２０  揮発性メモリ
２３０  電源回路
３００  メモリコントローラ
３０１  ホストインターフェース
３０２  ＲＡＭ
３０３  ＣＰＵ
３０４  ＥＣＣ処理部
３０５  ＲＯＭ
３０６、４４０  バス
３０７  メモリインターフェース
３１０  初期化制御部
３２０  ライト制御部
３３０  ステータス生成部
３４０  リード制御部
４００  不揮発性メモリ
４１０、６１０  データバッファ
４２０  ＭＡＵ配置部
４３０、６３０  アドレスデコーダ
４５０  制御インターフェース
４６０  メモリ制御部
４６１  リクエストデコーダ
４６２  ライト処理部
４６３  リード処理部
４６４  初期化処理部
５００、６２０  メモリアレイユニット
５１０  カラムドライバ
５２０  ロウドライバ
５３０  メモリセルアレイ
５４０  メモリセル
５４１  双方向ダイオード
５４２  可変抵抗素子
５５０  左側ロウドライバ
５６０  上側カラムドライバ
５７０  下側カラムドライバ
５８０  右側ロウドライバ
６００  メモリユニット
【図１】
2017138234.tif 000003
【図２】
2017138234.tif 000004
【図３】
2017138234.tif 000005
【図４】
2017138234.tif 000006
【図５】
2017138234.tif 000007
【図６】
2017138234.tif 000008
【図７】
2017138234.tif 000009
【図８】
2017138234.tif 000010
【図９】
2017138234.tif 000011
【図１０】
2017138234.tif 000012
【図１１】
2017138234.tif 000013
【図１２】
2017138234.tif 000014
【図１３】
2017138234.tif 000015
【図１４】
2017138234.tif 000016
【図１５】
2017138234.tif 000017
【図１６】
2017138234.tif 000018
【図１７】
2017138234.tif 000019
【図１８】
2017138234.tif 000020
【図１９】
2017138234.tif 000021
【図２０】
2017138234.tif 000022
【図２１】
2017138234.tif 000023
【図２２】
2017138234.tif 000024
【図２３】
2017138234.tif 000025
【図２４】
2017138234.tif 000026
【図２５】
2017138234.tif 000027
【図２６】
2017138234.tif 000028
【図２７】
2017138234.tif 000029
【図２８】
2017138234.tif 000030
【図２９】
2017138234.tif 000031
【図３０】
2017138234.tif 000032
【図３１】
2017138234.tif 000033
【図３２】
2017138234.tif 000034
【図３３】
2017138234.tif 000035
【図３４】
2017138234.tif 000036
【図３５】
2017138234.tif 000037
【図３６】
2017138234.tif 000038
【図３７】
2017138234.tif 000039
【図３８】
2017138234.tif 000040
【図３９】
2017138234.tif 000041
【図４０】
2017138234.tif 000042
【図４１】
2017138234.tif 000043
【図４２】
2017138234.tif 000044
【図４３】
2017138234.tif 000045
【図４４】
2017138234.tif 000046
【図４５】
2017138234.tif 000047
【図４６】
2017138234.tif 000048
【図４７】
2017138234.tif 000049
【図４８】
2017138234.tif 000050
【国際調査報告】
2017138234.tif 000051
2017138234.tif 000052
2017138234.tif 000053
2017138234.tif 000054