(57)【要約】【課題】ウェアレベリングのためにスワップ処理を行っている間も記憶部へのアクセスが行える半導体記憶装置の実現。【解決手段】記憶部11と、記憶部へアクセスする論理アドレスALを、アドレス変換情報M1,M2に基づいて物理アドレスAPに変換するアドレス変換部12と、アドレス変換情報をアドレス変換部へ出力する制御部20と、を有し、制御部は、アドレス変換情報の変更時に、記憶部における、変更前のアドレス変換情報M1に基づく旧物理アドレスのデータと変更後のアドレス変換情報M2に基づく新物理アドレスのデータとを交換するスワップ処理を行う半導体記憶装置。【選択図】図２
2015038698.tif 000002
【特許請求の範囲】
【請求項１】
記憶部と、
前記記憶部へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換するアドレス変換部と、
前記アドレス変換情報を前記アドレス変換部へ出力する制御部と、を備え、
前記制御部は、前記アドレス変換情報の変更時に、前記記憶部における、変更前の前記アドレス変換情報に基づく旧物理アドレスのデータと変更後の前記アドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行うことを特徴とする半導体記憶装置。
【請求項２】
前記制御部は、前記記憶部への書き込みが所定の回数に達した時に、前記アドレス変換情報を変更することを特徴とする請求項１に記載の半導体記憶装置。
【請求項３】
前記制御部は、所定時間が経過するごとに、前記アドレス変換情報を変更することを特徴とする請求項１に記載の半導体記憶装置。
【請求項４】
前記アドレス変換情報は、複数ビットを含む変換マスクであり、
前記アドレス変換部は、前記論理アドレスと前記変換マスクとの排他的論理和演算を行うことにより、前記論理アドレスを前記物理アドレスに変換し、
前記制御部は、変更前の前記変換マスクと変更後の前記変換マスクが、前記複数ビットのうちの１ビットのみが異なるように変更することを特徴とする請求項１から３のいずれか１項に記載の半導体記憶装置。
【請求項５】
前記制御部は、前記変換マスクをグレイコードとして変更することを特徴とする請求項４に記載の半導体記憶装置。
【請求項６】
前記制御部は、発生した乱数にしたがって変更後の前記変換マスクを生成することを特徴とする請求項１から３のいずれか１項に記載の半導体記憶装置。
【請求項７】
前記アドレス変換部は、前記スワップ処理中に、前記記憶部へのアクセスがあった時、交換の終了していない論理アドレスについては変更前の前記アドレス変換情報に基づく旧物理アドレスに変換し、交換の終了している論理アドレスについては変更後の前記アドレス変換情報に基づく新物理アドレスに変換することを特徴とする請求項１から６のいずれか１項に記載の半導体記憶装置。
【請求項８】
前記記憶部は、不揮発性メモリを含むことを特徴とする請求項１から７のいずれか１項に記載の半導体記憶装置。
【請求項９】
半導体記憶装置へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換し、
前記アドレス変換情報を変更し、前記アドレス変換情報の変更時に、前記記憶部における、変更前の前記アドレス変換情報に基づく旧物理アドレスのデータと変更後の前記アドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行うことを特徴とする半導体記憶装置の制御方法。
【請求項１０】
前記スワップ処理中に、前記記憶部へのアクセスがあった時、交換の終了していない論理アドレスについては変更前の前記アドレス変換情報に基づく旧物理アドレスに変換し、交換の終了している論理アドレスについては変更後の前記アドレス変換情報に基づく新物理アドレスに変換することを特徴とする請求項９に記載の半導体記憶装置の制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
開示の技術は、半導体記憶装置および半導体記憶装置の制御方法に関する。
【背景技術】
【０００２】
一般に、高集積・大容量の不揮発性半導体記憶装置（メモリ）は、書き換え回数が有限であり、アクセスが限定された部分（アドレス）に集中すると、アクセスが集中した部分が他の部分に比べて早期に劣化し、記憶動作不能となる場合がある。この問題が発生すると、メモリの故障となる。
【０００３】
そこで、各部分（アドレス）に対する書き換え回数を平準化するウェアレベリングを行うことが提案されている。メモリにアクセスする場合、外部から入力される論理アドレスを物理アドレスに変換し、物理アドレスをデコードしてメモリ内の記憶セルにアクセスする。一般のメモリでは、論理アドレスと物理アドレスの関係は固定である。ウェアレベリングを行う場合には、論理アドレスをアドレス変換情報に基づいて物理アドレスに変換するアドレス変換部を設け、アドレス変換情報を適宜変更する。
【０００４】
しかし、書き込まれたデータは、元の物理アドレスでアクセスする必要があるため、アドレス変換情報を変更すると記憶してあるデータにアクセスできない。そこで、書き込まれたデータの消去要求や初期化要求があり、記憶してあるデータにアクセスする必要がなくなった時に、アドレス変換情報を変更する。なお、物理アドレス空間を複数のブロックに分け、アドレス変換をブロック単位で行う場合もある。
【先行技術文献】
【特許文献】
【０００５】
【特許文献１】特開平０９−２９３３８６号公報
【特許文献２】特開２００７−１８４０７２号公報
【特許文献３】特開２００８−２８７８０３号公報
【特許文献４】特開２０１２−０２７９９１号公報
【特許文献５】米国特許出願公開第２０１２／０２０４０７１号明細書
【非特許文献】
【０００６】
【非特許文献１】Moinuddin K. Qureshi, John Karidis, Michele Franceschini, Vijayalakshmi Srinivasan, Luis Lastras, and Bulent Abali. 2009. Enhancing lifetime and security of PCM-based main memory with start-gap wear leveling. In Proceedings of the 42nd Annual IEEE/ACM International Symposium on Microarchitecture (MICRO 42)
【発明の概要】
【発明が解決しようとする課題】
【０００７】
アドレス変換情報の変更がメモリの初期化要求時やデータの消去要求時に限定される場合、応用によっては、アドレス変換情報変更の頻度が低くなり、ウェアレベリングの効果が得られない場合がある。
【０００８】
開示の実施形態は、アドレス変換情報の変更時期が限定されない半導体記憶装置を開示する。
【課題を解決するための手段】
【０００９】
第１の態様の半導体記憶装置は、記憶部と、アドレス変換部と、制御部と、を有する。アドレス変換部は、記憶部へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換する。制御部は、アドレス変換情報をアドレス変換部へ出力し、アドレス変換情報の変更時に、記憶部における、変更前のアドレス変換情報に基づく旧物理アドレスのデータと変更後のアドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行う。
【００１０】
第２の態様の半導体記憶装置の制御方法は、半導体記憶装置へアクセスする論理アドレスを、アドレス変換情報に基づいて物理アドレスに変換する。制御方法は、アドレス変換情報を変更し、アドレス変換情報の変更時に、記憶部における、変更前のアドレス変換情報に基づく旧物理アドレスのデータと変更後のアドレス変換情報に基づく新物理アドレスのデータとを交換するスワップ処理を行う。
【発明の効果】
【００１１】
第１の態様によれば、ウェアレベリングのためのアドレス変換情報の変更時期が限定されない上、スワップ処理の対象となるメモリセルの選択アルゴリズムが単純であるために、高速の動作が可能で、単純な構成にできる半導体記憶装置が実現される。
【図面の簡単な説明】
【００１２】
【図１】図１は、実施形態の半導体記憶装置（メモリ）の概要を説明する図である。
【図２】図２は、実施形態の半導体記憶装置（メモリ）の概略構成を示す図である。
【図３】図３は、実施形態の半導体記憶装置（メモリ）のより詳細な構成を示す図である。
【図４】図４は、アドレス変換（ＸＯＲ）部の回路構成を示す図である。
【図５】図５は、スワップ処理部を含む制御部の全体の動作を示すフローチャートである。
【図６】図６は、第１実施形態の半導体記憶装置における書き込み処理を示すフローチャートである。
【図７】図７は、第１実施形態の半導体記憶装置における読み出し処理を示すフローチャートである。
【図８】図８は、旧反転マスクの新反転マスクへの更新処理を示すフローチャートである。
【図９】図９は、新反転マスクの生成方法を示すフローチャートである。
【図１０】図１０は、スワップ処理を示すフローチャートである。
【図１１】図１１は、反転マスク更新を起動する処理を示すフローチャートである。
【図１２】図１２は、動作時間に応じて反転マスクの更新処理を起動する場合の処理を示すフローチャートであり、（Ａ）がタイマ処理を、（Ｂ）がタイマで起動される処理を示す。
【図１３】図１３は、新しい反転マスクの生成処理の他の例を示すフローチャートである。
【図１４】図１４は、反転マスクを生成する別の処理例を示すフローチャートであり、（Ａ）が初期化処理を、（Ｂ）が反転マスクの更新処理を示す。
【図１５】図１５は、３ビットの一般的な２進数とグレイコードの対応関係を示す図である。
【図１６】図１６は、擬似乱数生成アルゴリズムXorshiftを使用して発生した乱数を利用して新しい反転マスクを生成する処理を示すフローチャートであり、（Ａ）が擬似乱数の種の初期化を、（Ｂ）が新しい反転マスクの生成を示す。
【図１７】図１７は、スワップ処理中のアドレス変換処理を示すフローチャートである。
【図１８】図１８は、以上の前提条件および式に基づいて算出した結果を示すグラフの図である。
【発明を実施するための形態】
【００１３】
実施形態の半導体記憶装置の詳細を説明する前に、その概要を説明する。
図１は、実施形態の半導体記憶装置（メモリ）の概要を説明する図である。
【００１４】
実施形態のメモリは、記憶部（メモリ部）１１と、アドレス変換部（ＸＯＲ）１２と、反転マスク部１３と、カウンタ１４と、スワッパ（スワップ処理部）１５と、を有する。メモリ部１１は、不揮発性のメモリである。図１では、ＣＰＵ１がメモリにアクセスする場合の例を示しが、これに限定されるものではない。ＣＰＵ１がメモリをアクセス（書き込みまたは読み出し）する場合、ＣＰＵ１は、メモリに対して論理アドレスを出力する。ＣＰＵ１は、書き込みの場合には、書き込みデータをメモリに出力し、読み出しの場合には、メモリから読み出されたデータを受ける。ＣＰＵ１は、さらに、書き込みの場合には書き込み信号（ライトイネーブル）を、読み出しの場合には読み出し信号（リードイネーブル）信号を、他に必要な制御信号があればそれらと共に、メモリに出力する。
【００１５】
アドレス変換部（ＸＯＲ）１２は、メモリに入力された論理アドレスと、反転マスク部１３に記憶されたアドレス変換情報（反転マスク）との排他的論理和（ＸＯＲ）を演算して物理アドレスを生成し、メモリ部１１に供給する。書き込みの場合には、物理アドレスのメモリ部１１への供給に同期して、書き込みデータがメモリ１１に供給される。読み出しの場合には、物理アドレスのメモリ部１１への供給に同期して、メモリ部１１から読み出しデータがＣＰＵ１に出力される。この動作は、ＸＯＲ１２によるアドレス変換処理を除けば通常のメモリへのアクセス動作と同じである。
【００１６】
ＸＯＲ１２は、論理アドレスと反転マスクとのＸＯＲを演算して物理アドレスを生成しており、反転マスクを変化させれば異なる物理アドレスが生成される。したがって、反転マスクを変化させることにより、論理アドレスと物理アドレスの対応関係が変化し、書き込み動作の論理アドレスのアドレス値が偏在する場合でも、物理アドレスが偏在しないようにするウェアレベリングが行われる。
【００１７】
しかし、反転マスクの変更の前後で、同じ論理アドレスで読み出すメモリの物理アドレスが変化するため、読み出しデータが変わってしまう。そのため、これまでは、反転マスクの変更は、メモリの初期化要求時やデータの消去要求時に限定されていた。
【００１８】
実施形態のメモリでは、スワッパ１５が、所定のタイミングで、反転マスクを変更し、メモリ部１１における、変更前の旧反転マスクに基づく旧物理アドレスのデータと変更後の新反転マスクに基づく新物理アドレスのデータとを交換するスワップ処理を行う。図１では、カウンタ１４がメモリへの書き込み動作数をカウントし、カウンタ１４のカウント値が所定値を超えたら（桁あふれが発生したら）、反転マスクの変更およびスワッパ１５の起動を行う。スワッパ１５の起動は、書き込み動作数に限定されず、経過時間等によって行ってもよい。
【００１９】
図２は、実施形態の半導体記憶装置（メモリ）の概略構成を示す図である。
実施形態の半導体記憶装置（メモリ）１０は、記憶部（メモリ部）１１と、アドレス変換部（ＸＯＲ）１２と、制御部２０と、を有する。図１の反転マスク部１３、カウンタ１４およびスワッパ１５は、制御部２０内に形成される。図２では、ＣＰＵ１がメモリ１０にアクセスする例を示す。
【００２０】
ＣＰＵ１が出力する論理アドレスＡLは、アドレス変換部１２に入力される。ＸＯＲ１２で変換された物理アドレスＡPは、メモリ部１１に供給される。ＣＰＵ１と制御部２０の間で、入出力データＤS（読み出しデータおよび書き込みデータ）の入出力が行われる。ＣＰＵ１は、書き込み信号ＷSおよび読み出し信号ＲSを制御部２０に出力する。
【００２１】
制御部２０は、旧反転マスクＭ1、新反転マスクＭ2、スワップアドレスＡX、スワップアドレス有効信号Ｙを、ＸＯＲ１２に出力する。これらの信号については後述する。制御部２０は、メモリ部１１に書き込み信号ＷMおよび読み出し信号ＲMを出力すると共に、メモリ部１１との間で、入出力データＤS（読み出しデータおよび書き込みデータ）の入出力を行う。書き込み信号ＷMおよび読み出し信号ＲMは、ＣＰＵ１からメモリ１０に出力される書き込み信号ＷSおよび読み出し信号ＲSに対応し、物理アドレスＡPのメモリ部１１への供給に同期してタイミングが調整される。入出力データＤSは、ＣＰＵ１とメモリ１０の間で入出力される入出力データＤSに対応し、タイミングが異なる。さらに、制御部２０は、書き込み、読み出し、またはスワップ処理中であり、アクセスを受けることができないことを示すアクセス保留フラグＫを出力する。アクセス保留フラグＫは、書き込み処理中または読み出し処理中に「１」になり、書き込み処理および読み出し処理が終了すると「０」になる。さらに、アクセス保留フラグＫは、スワップ処理中に、１ライン分の旧物理アドレスのデータと新物理アドレスのデータとを交換している間「１」となり、１ライン分のデータ交換終了時に書き込み信号ＷSまたは読み出し信号ＲSが入力されていないと維持される。
【００２２】
ＸＯＲ１２は、通常動作時に、スワップアドレス有効信号Ｙが「真（０）」となり、論理アドレスＡLと新反転マスクＭ2のＸＯＲを演算して物理アドレスＡPをメモリ部１１に供給する。ＸＯＲ１２は、スワップ処理時に、スワップアドレス有効信号Ｙが「偽（１）」となり、スワップアドレスＡXをメモリ部１１に供給する。ＸＯＲ１２は、スワップ処理時にＣＰＵ１からメモリへのアクセスがあると、スワップアドレス有効信号Ｙが「真」となり、ＣＰＵ１からの論理アドレスＡLが書き換え済みのアドレスであればＡLと新反転マスクＭ0のＸＯＲを演算して物理アドレスＡPを出力する。一方、ＸＯＲ１２は、スワップ処理時にＣＰＵ１からメモリへのアクセスがあると、スワップアドレス有効信号Ｙが「真」となり、ＣＰＵ１からの論理アドレスＡLが書き換え前のアドレスであればＡLと旧反転マスクＭ1のＸＯＲを演算して物理アドレスＡPを出力する。
【００２３】
メモリ部１１は、物理アドレスＡPで指示されたアドレスについて、書き込み信号ＷMであれば、入出力データ（書き込みデータ）ＤSの書き込みを行い、読み出し信号ＲMであれば、入出力データ（読み出しデータ）ＤSを出力する。
【００２４】
図３は、実施形態の半導体記憶装置（メモリ）１０のより詳細な構成を示す図である。
実施形態のメモリ１０は、記憶部（メモリデバイス）１１と、スワップ処理部３１と、アドレス変換（ＸＯＲ）部１２と、書き込み信号切換スイッチ４２と、読み出し信号切換スイッチ４３と、データ切換スイッチ４４と、を有する。
【００２５】
スワップ処理部３１は、制御部２０の一部として、例えばステートマシン等により実現される。スワップ処理部３１は、旧反転マスクＭ1を保持する旧反転マスクレジスタ３２と、新反転マスクＭ2を保持する新反転マスクレジスタ３３と、ＸＯＲ演算器３４と、ＸＯＲ演算結果Ｘを保持するレジスタ３５、とを有し、一連のスワップ処理を実行する。ＸＯＲ演算器３４は、Ｍ1とＭ2の排他的論理和（ＸＯＲ）を演算する。ＸＯＲ演算器３４の演算結果は、Ｍ1とＭ2の異なるビットが１となり、他が０となるデータである。スワップ処理部３１は、アドレス変換（ＸＯＲ）部１２に、旧反転マスクＭ1と、新反転マスクＭ2と、スワップアドレスＡXと、スワップアドレス有効信号Ｙと、を出力する。スワップ処理部３１は、書き込み信号切換スイッチ４２および読み出し信号切換スイッチ４３に、スワップ用書き込み信号ＷXおよびスワップ用読み出し信号ＲXを出力する。スワップ処理部３１は、データ切換スイッチ４４との間で、スワップデータＤXの入出力を行う。スワップ処理部３１は、書き込み信号切換スイッチ４２、読み出し信号切換スイッチ４３およびデータ切換スイッチ４４の接続を制御する。スワップ処理部３１における処理内容については後述する。
【００２６】
アドレス変換（ＸＯＲ）部１２は、論理アドレスＡLと、旧反転マスクＭ1と、新反転マスクＭ2と、スワップアドレスＡXと、スワップアドレス有効信号Ｙと、を受けて、物理アドレスＡPを生成する。書き込み信号切換スイッチ４２は、スワップ処理部３１の制御に応じて、ＣＰＵ１からの書き込み信号ＷSとスワップ用書き込み信号ＷXの一方を選択してメモリデバイス１１に出力する。読み出し信号切換スイッチ４３は、スワップ処理部３１の制御に応じて、ＣＰＵ１からの読み出し信号ＷSとスワップ用読み出し信号ＷXの一方を選択してメモリデバイス１１に出力する。データ切換スイッチ４４は、スワップ処理部３１の制御に応じて、ＣＰＵ１との間の入出力データＤSとスワップデータＤXの一方を選択してメモリデバイス１１との間で入出力を行う。
【００２７】
図４は、アドレス変換（ＸＯＲ）部１２の回路構成を示す図である。
ＸＯＲ部１２は、２個のＸＯＲゲート５１および５２と、２個の比較器５３および５４と、ＯＲゲート５５と、２個のスイッチ５６および５７と、を有する。ＸＯＲゲート５１は、論理アドレスＡLと旧反転マスクＭ1の排他的論理和（ＸＯＲ）演算を行い、旧マスク変換アドレスＡP1を出力する。ＸＯＲゲート５２は、ＡLと新反転マスクＭ2のＸＯＲ演算を行い、新マスク変換アドレスＡP2を出力する。比較器５３は、旧マスク変換アドレスＡP1をスワップアドレスＡXと比較し、スワップアドレスＡXが大きければ比較結果「真（０）」を、スワップアドレスＡXが小さければ比較結果「偽（１）」を出力する。比較器５４は、新マスク変換アドレスＡP2をスワップアドレスＡXと比較し、スワップアドレスＡXが大きければ比較結果「真（０）」を、スワップアドレスＡXが小さければ比較結果「偽（１）」を出力する。ＯＲゲート５５は、比較器５３および５４の出力の論理和（ＯＲ）を演算する。したがって、スワップアドレスＡXが、旧マスク変換アドレスＡP1および新マスク変換アドレスＡP2の両方より大きければ、ＯＲゲート５５の出力は「真（０）」となる。スイッチ５６は、ＯＲゲート５５の出力が「真（０）」の時には旧マスク変換アドレスＡP1を、ＯＲゲート５５の出力が「偽（１）」の時には新マスク変換アドレスＡP2を、選択する。スイッチ５７は、スワップアドレス有効信号Ｙが「真（０）」の時にはスイッチ５６の出力を、スワップアドレス有効信号Ｙが「偽（１）」の時にはスワップアドレスＡXを、選択する。
【００２８】
上記の処理をまとめると、ＸＯＲ部１２は、スワップアドレス有効信号Ｙが「真（０）」の時で、スワップ処理を行っていない時には、新マスク変換アドレスＡP2を物理アドレスＡPとして出力する。ＸＯＲ部１２は、スワップ処理中にＹが「真」になった時には、旧マスク変換アドレスＡP1と新マスク変換アドレスＡP2の両方がスワップアドレスＡXより小さければＡP1を、大きければＡP2を、物理アドレスＡPとして出力する。さらに、ＸＯＲ部１２は、スワップアドレス有効信号Ｙが「偽（１）」の時には、スワップアドレスＡXを物理アドレスＡPとして出力する。
【００２９】
スワップ処理は、書き込み処理が所定回数行われると起動され、新反転マスクＭ2を生成し、旧反転マスクＭ1を置き換える。書き込み処理の回数をカウントするカウンタの値を示すパラメータをＣWで表す。スワップ処理では、スワップアドレスＡXを順に変化させ、ＡXがＡXとＭ1とＭ2の排他的論理和（ＸＯＲ）より小さければ、スワップアドレスＡXの指すメモリ部１１のデータと、ＡXとＭ1とＭ2のＸＯＲ指すメモリ部１１のデータとをスワップする。ＡXがＡXとＭ1とＭ2のＸＯＲより大きければ、スワップ済みなので、何も行わない。ここで、図では排他的論理和を記号∧で表す。したがって、ＡXとＭ1とＭ2の排他的論理和は、ＡX∧Ｍ1∧Ｍ2で表される。
【００３０】
図５は、スワップ処理部３１を含む制御部２０の全体の動作を示すフローチャートである。
処理を開始する前に、旧反転マスクＭ1＝新反転マスクＭ2＝０、スワップアドレスＡX＝０およびパラメータＣW＝０に初期化される。
【００３１】
ステップＳ１１では、ＣＰＵ１からの書き込み信号ＷS＝１であるか、すなわち書き込み要求であるか判定し、ＷS＝１であればステップＳ１４に進み、ＷS＝１でなければステップＳ１２に進む。
【００３２】
ステップＳ１２では、ＣＰＵ１からの読み出し信号ＲS＝１であるか、すなわち読み出し要求であるか判定し、ＲS＝１であればステップＳ２１に進み、ＲS＝１でなければステップＳ１３に進む。
【００３３】
ステップＳ１３では、旧反転マスクＭ1＝新反転マスクＭ2であるか、すなわち、スワップ処理中であるか判定し、Ｍ1＝Ｍ2であればステップＳ２４に進み、Ｍ1＝Ｍ2でなければステップＳ１１に戻り、動作を繰り返す。
【００３４】
ステップＳ１４では、アクセス保留フラグＫを１にする。
ステップＳ１５では、パラメータＣWを１増加させる。
ステップＳ１６では、パラメータＣWが所定値ＣL以上であるか判定し、所定値ＣL以上であればステップＳ１７に進み、所定値ＣL以上でなければステップＳ１８に進む。
【００３５】
ステップＳ１７では、それまでの反転マスクとは異なる反転マスクを生成し、新反転マスクＭ2とする。新反転マスクＭ2の生成方法については、後述する。
ステップＳ１８では、記憶部１１への書き込みを行う。
ステップＳ１９では、アクセス保留フラグＫを０にした後、ステップＳ１１に戻る。
【００３６】
ステップＳ２１では、アクセス保留フラグＫを１にする。
ステップＳ２２では、記憶部１１からの読み出しを行う。
ステップＳ２３では、アクセス保留フラグＫを０にした後、ステップＳ１１に戻る。
ステップＳ２４では、スワップ処理を行い、終了後ステップＳ１１に戻る。
【００３７】
次に、各動作をより詳細に説明する。
図６は、第１実施形態の半導体記憶装置における書き込み処理を示すフローチャートである。
【００３８】
ステップＳ３１では、ＣＰＵ１から論理アドレスＡLを受け取る。
ステップＳ３２では、ＣＰＵ１から書き込みデータＤSを受け取る。
ステップＳ３３では、アクセス保留フラグＫ＝０であるか、すなわちアクセス可能であるか判定し、Ｋ＝０であればステップＳ３４に進み、Ｋ＝０でなければ待機する。
【００３９】
ステップＳ３４では、論理アドレスＡLと反転マスクとのＸＯＲ演算を行い、物理アドレスＡPを算出する。この時に使用する反転マスクは、スワップ中でなければ、旧反転マスクを使用し（新反転マスクはこの時点では存在しない）する。スワップ中であれば、書き込みアドレスが未スワップアドレスであれば旧反転マスクを、スワップ済みアドレスであれば新反転マスクを使用する。
【００４０】
ステップＳ３５では、物理アドレスＡPをメモリ部１１に出力する。
ステップＳ３６では、書き込みデータＤM（ＤSと同じ）をメモリ部１１に出力する。
ステップＳ３７では、書き込み信号ＷMをメモリ部１１に出力する。
【００４１】
図７は、第１実施形態の半導体記憶装置における読み出し処理を示すフローチャートである。
ステップＳ４１では、ＣＰＵ１から論理アドレスＡLを受け取る。
ステップＳ４２では、アクセス保留フラグＫ＝０であるか、すなわちアクセス可能であるか判定し、Ｋ＝０であればステップＳ４３に進み、Ｋ＝０でなければ待機する。
【００４２】
ステップＳ４３では、論理アドレスＡLと反転マスクとのＸＯＲ演算を行い、物理アドレスＡPを算出する。この時に使用する反転マスクは、スワップ中でなければ、旧反転マスクを使用し（新反転マスクはこの時点では存在しない）する。スワップ中であれば、書き込みアドレスが未スワップアドレスであれば旧反転マスクを、スワップ済みアドレスであれば新反転マスクを使用する。
【００４３】
ステップＳ４４では、物理アドレスＡPをメモリ部１１に出力する。
ステップＳ４５では、読み出し信号ＲMをメモリ部１１に出力する。
ステップＳ４６では、読み出しデータＤMをメモリ部１１から読み出す。
ステップＳ４７では、ＣＰＵ１に読み出しデータＤSを出力する。
【００４４】
図８は、旧反転マスクＭ1の新反転マスクＭ2への更新処理を示すフローチャートである。
ステップＳ５１では、新反転マスクＭ2を生成する。新反転マスクＭ2の生成方法については後述する。
【００４５】
ステップＳ５２では、アクセス保留フラグＫ＝１にする。
ステップＳ５３では、スワップ処理を行う。スワップ処理については後述する。
ステップＳ５４では、旧反転マスクレジスタ３２に記憶する反転マスクを、旧反転マスクＭ1から新反転マスクＭ2に更新する。
ステップＳ５５では、アクセス保留フラグＫ＝０にする。
【００４６】
図９は、新反転マスクＭ2の生成方法を示すフローチャートである。
ステップＳ６１で、旧反転マスクＭ1を１増加させた値を３２で除した時の剰余を、新反転マスクＭ2とする。なお、この例は、アドレスビット数が３２ビットである場合の例であり、１６ビットであれば１６で除した時の剰余を使用する。また、新反転マスクＭ2の生成方法はこれに限定されず、後述するグレイコード等を使用する方法で生成してもよい。
【００４７】
図１０は、スワップ処理を示すフローチャートである。
ステップＳ７１では、スワップアドレスＡXを０に初期化する。
ステップＳ７２で、ＣＰＵ１からのアクセス要求があるか（ＷSまたはＲSが１であるか）判定し、アクセス要求があれば待機する。この間にメモリ部１１へのＣＰＵ１からのアクセスが行われる。アクセス要求が無ければ、ステップＳ７３に進む。
【００４８】
ステップ７３では、アクセス保留フラグＫ＝１にセットする。
ステップＳ７４では、ＡXがＡXとＭ1とＭ2の排他的論理和（ＸＯＲ）より小さいか判定され（ＡX＜ＡX∧Ｍ1∧Ｍ2？）、小さければステップＳ７５に進み、大きければスワップ済みなのでステップＳ７７に進む。
【００４９】
ステップＳ７５では、メモリ部１１のアドレスＡXからデータを読み出してＰとしレジスタに保持し、アドレスＡX∧Ｍ1∧Ｍ2からデータを読み出してＱとしてレジスタに保持する。
ステップＳ７６では、データＱをメモリ部１１のアドレスＡXに書き込み、データＰをメモリ部１１のアドレスＡX∧Ｍ1∧Ｍ2に書き込む。
【００５０】
ステップＳ７７では、スワップアドレスＡXを１増加する。
ステップＳ７８では、アクセス保留フラグＫ＝０にセットする。
ステップＳ７９では、スワップアドレスＡXがアドレス最大値に到達したかを判定し、到達していなければステップＳ７２に戻り、到達していればステップＳ８０に進む。
【００５１】
ステップＳ８０では、スワップ処理が終了するので、旧反転マスクレジスタ３２に新反転マスクＭ2を記憶し、旧反転マスクＭ1を新反転マスクＭ2で置き換える。
以上のようにしてスワップ処理が終了する。実施形態では、スワップ処理中は、１ライン（１アドレス）のデータを他のラインのデータと置き換えるごとにアクセス保留フラグＫ＝０にすることにより、スワップ処理のためにＣＰＵ１から長時間アクセスができなくなるのを防止している。
【００５２】
図１１は、反転マスク更新を起動する処理を示すフローチャートである。
ステップＳ８１では、カウンタの初期化を行う。初期化は、例えば、パワーオンリセットや反転マスクの更新処理が行われた後に行われる。
【００５３】
ステップＳ８２では、書き込みが行われたかを判定し、書き込みが行われるまで待機し、書き込みが行われるとステップＳ８３に進む。
ステップＳ８３では、カウンタを１増加（インクリメント）する。
【００５４】
ステップＳ８４では、カウント値が所定値Ｌに到達したかを判定し、到達していなければステップＳ８２に戻り、達した時にはステップＳ８５に進む。
ステップＳ８５では、図８に示した反転マスクの更新処理を実行する。
【００５５】
実施形態の半導体記憶装置（メモリ）では、図１１に示すように、Ｌ回の書き込み処理が行われるたびに、反転マスクの更新処理を起動したが、他の判定基準で起動するようにしてもよい。
【００５６】
図１２は、動作時間に応じて反転マスクの更新処理を起動する場合の処理を示すフローチャートであり、（Ａ）がタイマ処理を、（Ｂ）がタイマで起動される処理を示す。
図１２の（Ａ）に示すように、半導体記憶装置（メモリ）に電源が投入されると、ステップＳ８７で、Ｔ秒後に通知するように、タイマが設定される。
【００５７】
図１２の（Ｂ）に示すように、Ｔ秒経過しタイマから通知が来ると、ステップＳ８８で、図８に示した反転マスクの更新処理を実行する。さらに、ステップＳ８９で、タイマを再設定し、終了する。
【００５８】
実施形態の半導体記憶装置（メモリ）では、図９に示すように、新しい反転マスクは、直前の反転マスクを剰余演算することにより生成したが、他の方法で生成してもよい。
【００５９】
図１３は、新しい反転マスクの生成処理の他の例を示すフローチャートである。
ステップＳ９１では、旧反転マスクＭ1で反転するビット（ｎ番目）を選ぶ。
ステップＳ９２では、旧反転マスクＭ1のｎ番目のビットを反転し、新反転マスクＭ2とする。
【００６０】
図１４は、反転マスクを生成する別の処理例を示すフローチャートであり、（Ａ）が初期化処理を、（Ｂ）が反転マスクの更新処理を示す。
【００６１】
図１４の（Ａ）に示すように、半導体記憶装置（メモリ）の電源投入に応じて、ステップＳ１０１で、コード生成用のカウンタの値Ｕを初期化する。なお、電源投入ではなくて、半導体記憶装置（メモリ）の出荷時にステップＳ１０１を行うようにしてもよい。
ステップＳ１０２では、反転マスクの初期化を行い、旧反転マスクレジスタ３２に旧反転マスクＭ1＝０を記憶する。
【００６２】
図１１または図１２に示した方法などで反転マスク更新処理が起動されると、ステップＳ１０３で、カウンタをインクリメントし、カウンタ値Ｕが１増加する。
ステップＳ１０４では、カウンタ値Ｕに応じてグレイコードにより新反転マスクＭ2の値を算出する。具体的には、カウンタ値Ｕを１ビット右シフトした値と、カウンタ値ＵのＸＯＲを算出する。
【００６３】
図１５は、３ビットの一般的な２進数とグレイコードの対応関係を示す図である。図１５に示すように、隣接するグレイコードは３ビット中の１ビットのみが異なる。他のビット数についても同様である。
【００６４】
図１４に戻り、ステップＳ１０５では、図１０に示したスワップ処理を行う。
ステップＳ１０６では、スワップ処理が終了したので、旧反転マスクレジスタ３２に新反転マスクＭ2を記憶し、旧反転マスクＭ1を新反転マスクＭ2で置き換える。
【００６５】
図１６は、擬似乱数生成アルゴリズムXorshiftを使用して発生した乱数を利用して新しい反転マスクを生成する処理を示すフローチャートであり、（Ａ）が擬似乱数の種の初期化を、（Ｂ）が新しい反転マスクの生成を示す。
【００６６】
図１６の（Ａ）に示すように、半導体記憶装置（メモリ）の電源投入に応じて、ステップＳ１１１で、x=123456789、y=362436069、z=521288629、w=88675123に設定する擬似乱数の種の初期化を行う。なお、電源投入ではなくて、半導体記憶装置（メモリ）の出荷時にステップＳ１０１を行うようにしてもよい。
【００６７】
ステップＳ１１２では、上記の初期値に基づいて、図１６の（Ｂ）に示す処理で新しい反転マスクＭ2の生成を行う。
【００６８】
図１６の（Ｂ）に示すように、ステップＳ１１３では、ｘとｘを左側に１１ビットシフトした値のＸＯＲを算出してｔとし、さらに、ｘ＝ｙ、ｙ＝ｚ、ｚ＝ｗとする。さらに、ｗと、ｗを右側に１９ビットシフトした値と、ｔを右側に８ビットシフトした値と、のＸＯＲを算出し新しいｗとする。
ステップＳ１１４では、ステップＳ１１３で生成したｗを新しい反転マスクＭ2とする。
【００６９】
前述のように、実施形態の半導体記憶装置では、スワップ処理を行っている途中でもＣＰＵ１からのアクセス（書き込み処理または読出し処理）を受けられるようにしている。そのため、アクセスするアドレスが、スワップ処理の途中で旧反転マスクによるアドレスのデータの新反転マスクによるアドレスへのスワップが終了しているスワップ済みの場合と、未スワップの場合が生じる。そこで、実施形態の半導体記憶装置では、ＣＰＵ１からの論理アドレスＡLがスワップ済みのアドレスであるか未スワップのアドレスであるか判定してアドレス変換を行う。
【００７０】
図１７は、スワップ処理中のアドレス変換処理を示すフローチャートである。
ステップＳ１２１では、論理アドレスＡLと旧反転マスクＭ1とのＸＯＲがスワップアドレスＡXより小さいかを判定し、小さければステップＳ１２３に進み、そうでなければステップＳ１２２に進む。
【００７１】
ステップＳ１２２では、論理アドレスＡLと新反転マスクＭ2とのＸＯＲがスワップアドレスＡXより小さいかを判定し、小さければステップＳ１２３に進み、そうでなければステップＳ１２２に進む。
【００７２】
ステップＳ１２３では、未スワップのアドレスであるので、論理アドレスＡLと旧反転マスクＭ1とのＸＯＲを物理アドレスＡPとする。
ステップＳ１２４では、スワップ済みのアドレスであるので、論理アドレスＡLと新反転マスクＭ2とのＸＯＲを物理アドレスＡPとする。
【００７３】
以上説明した実施形態の半導体記憶装置が、何も対策をしない半導体記憶装置に比べてどの程度寿命が長くなるかについて説明する。
【００７４】
前提条件とし、メモリ部１１は、Ｎ本のラインを有し、アドレスは０、１、…、Ｎ−１である。１本のラインに対する書き込み回数の限界をＷmaxとし、書き込み回数がＷmaxに達すとそのラインは不良となる。書き込みがＴ回あるごとに反転マスクを更新し、言い換えればスワップ周期はＴである。新しい反転マスクは、擬似乱数生成アルゴリズムで生成される。
【００７５】
１周期（Ｔ回の書き込み）の中での、１ラインに対する書き込み回数の分散をσ2とする。なお、この場合も１ラインの平均書き込み回数はＴ／Ｎである。さらに、スワップによる書き込み回数が１回増加するので、言い換えればスワップによるオーバーヘッドが各ラインについて１ずつあるので、これを含めたメモリの各ラインの書き込み回数の平均は、Ｔ／Ｎ＋１となる。
【００７６】
１周期ごとにランダムな反転マスクへ更新するので、特定の論理アドレスに対応する物理アドレスはランダムの変化する。したがって、中心極限定理より、ｋ周期目までの１ラインに対する総書き込み回数は、平均がｋ（Ｔ／Ｎ＋１）、分散ｋ・σ2の正規分布に近づく。
【００７７】
したがって、ある１ラインの書き込み回数がＷmax以下である確率は、式（１）で示す０からＷmaxまでの累積分布になる。
【００７８】
【数１】
2015038698.tif 000003
【００７９】
ここで、関数ｅｒｆは、誤差関数を表す。
さらに、すべてのラインの書き込み回数がＷmax以下である確率は、式（２）で示すようになる。
【００８０】
【数２】
2015038698.tif 000004
【００８１】
図１８は、以上の前提条件および式に基づいて算出した結果を示すグラフの図であり、縦軸はＮ本すべてのラインがどれも不良とならない確率を、横軸は総書き込み回数を最大書き込み回数×ライン数Ｎで正規化した値で、理想的に平準化されれば１００％となる。
【００８２】
図１８では、１周期での１ラインに対する書き込み回数の標準偏差σが１００、２００、４００、８００の場合をプロットしており、それぞれ９８％、９７％、９５％、９１％の付近でメモリ全体が急激に不良となる。
【００８３】
具体的に標準偏差σ＝１００というのは、全ラインの５０％に書き込みが集中した場合に相当する。ランダムなアドレス変換を施さなければ寿命は５０％となるのに対して、約９８％に延命される。同様に、σ＝２００の場合は全ラインの２０％が約９７％に、σ＝４００の場合は全ラインの約５．８％が約９５％に、σ＝８００の場合は全ラインの約１．５％が約９１％に、それぞれ延命される。
【００８４】
なお、書き込みの集中の具合を示すｒは、次のように算出する。
ｒ・Ｎ本のラインに書き込みが集中した時の標準偏差σは、平均値μ＝Ｔ／Ｎとすると、式（３）で表される。
【００８５】
【数３】
2015038698.tif 000005
【００８６】
以上の通り、実施形態の半導体記憶装置は、何も対策をしない場合に比べて寿命が長くなる。
【００８７】
以上、実施形態を説明したが、ここに記載したすべての例や条件は、発明および技術に適用する発明の概念の理解を助ける目的で記載されたものである。特に記載された例や条件は発明の範囲を制限することを意図するものではなく、明細書のそのような例の構成は発明の利点および欠点を示すものではない。発明の実施形態を詳細に記載したが、各種の変更、置き換え、変形が発明の精神および範囲を逸脱することなく行えることが理解されるべきである。
【符号の説明】
【００８８】
１    ＣＰＵ
１１    記憶部（メモリ部）
１２    アドレス変換部（ＸＯＲ）
１３    反転マスク
１４    カウンタ
１５    スワッパ（スワップ処理回路）
２０    制御部
【図１】
2015038698.tif 000006
【図２】
2015038698.tif 000007
【図３】
2015038698.tif 000008
【図４】
2015038698.tif 000009
【図５】
2015038698.tif 000010
【図６】
2015038698.tif 000011
【図７】
2015038698.tif 000012
【図８】
2015038698.tif 000013
【図９】
2015038698.tif 000014
【図１０】
2015038698.tif 000015
【図１１】
2015038698.tif 000016
【図１２】
2015038698.tif 000017
【図１３】
2015038698.tif 000018
【図１４】
2015038698.tif 000019
【図１５】
2015038698.tif 000020
【図１６】
2015038698.tif 000021
【図１７】
2015038698.tif 000022
【図１８】
2015038698.tif 000023