(57)【要約】【課題】利便性が高い半導体メモリ装置を提供すること。【解決手段】一つの実施形態によれば、半導体メモリ装置は、不揮発性の複数のメモリセルと、第１回路と、第２回路と、を備える。第１回路は、複数のメモリセルを書き込み先とした第１データを受信したとき、複数のメモリセルのうち、第１データのうちの対応するバイナリデータと異なる値を記憶している第２メモリセルと、記憶状態が所定の基準より悪い第３メモリセルと、を特定する。第２回路は、第２メモリセルと第３メモリセルとに対し、第１データのうちの対応するバイナリデータを一括にプログラムする。【選択図】図７
2019160359.tif 000002
【特許請求の範囲】
【請求項１】
不揮発性の複数のメモリセルと、
前記複数のメモリセルを書き込み先とした第１データを受信したとき、前記複数のメモリセルのうち、前記第１データのうちの対応するバイナリデータと異なる値を記憶している第２メモリセルと、記憶状態が所定の基準より悪い第３メモリセルと、を特定する第１回路と、
前記第２メモリセルと前記第３メモリセルとに対し、前記第１データのうちの対応するバイナリデータを一括にプログラムする第２回路と、
を備えた半導体メモリ装置。
【請求項２】
前記第１回路は、前記複数のメモリセルのうち、前記第１データのうちの対応するバイナリデータと同一の値を記憶し、かつ前記第３メモリセルに該当しない第４メモリセルを特定し、
前記第２回路は、前記第４メモリセルに対し、前記第１データにかかるプログラムを実行しない、
請求項１に記載の半導体メモリ装置。
【請求項３】
前記複数のメモリセルのそれぞれは、抵抗変化型のメモリセルであり、
前記複数のメモリセルのそれぞれに対し、抵抗値に応じた電流値を検出する第３回路をさらに備え、
前記第１回路は、前記複数のメモリセルのうちの前記検出された電流値が第１しきい値と第２しきい値との間に含まれるメモリセルを前記第３メモリセルとして特定し、
前記第１しきい値は、メモリセルが記憶する値の判定に使用されるしきい値であり、
前記第２しきい値は、前記第１しきい値と、プログラムの完了の確認に使用されるしきい値である第３しきい値と、の間に設定されたしきい値である、
請求項１に記載の半導体メモリ装置。
【発明の詳細な説明】
【技術分野】
【０００１】
本実施形態は、半導体メモリ装置に関する。
【背景技術】
【０００２】
不揮発性のメモリセルを有する半導体メモリ装置が知られている。例えば、メモリセルに対して書き込み動作をすることで、メモリセルの状態を電気的に設定して、データを書き込むことができる。また、例えば、メモリセルに対して読み出し動作をすることで、メモリセルの状態を電気的に検出して、データを読み出すことができる。
【０００３】
メモリセルの状態は、書き込み動作がなされた後、時間の経過に応じて変化することがある。
【発明の概要】
【発明が解決しようとする課題】
【０００４】
一つの実施形態は、利便性が高い半導体メモリ装置を提供することを目的とする。
【課題を解決するための手段】
【０００５】
一つの実施形態によれば、半導体メモリ装置は、不揮発性の複数のメモリセルと、第１回路と、第２回路と、を備える。第１回路は、複数のメモリセルを書き込み先とした第１データを受信したとき、複数のメモリセルのうち、第１データのうちの対応するバイナリデータと異なる値を記憶している第２メモリセルと、記憶状態が所定の基準より悪い第３メモリセルと、を特定する。第２回路は、第２メモリセルと第３メモリセルとに対し、第１データのうちの対応するバイナリデータを一括にプログラムする。
【図面の簡単な説明】
【０００６】
【図１】図１は、実施形態の半導体メモリ装置を具備するメモリシステムの構成の一例を示す図である。
【図２】図２は、実施形態の半導体メモリ装置としてのメモリチップの構成を示す図である。
【図３】図３は、実施形態のメモリセルアレイの構成を示す図である。
【図４】図４は、実施形態のメモリセルの構成を示す回路図である。
【図５】図５は、実施形態のレジスタ群および演算回路の構成を示す図である。
【図６】図６は、実施形態におけるウィークビットに該当するメモリセルを説明するための図である。
【図７】図７は、実施形態の半導体メモリ装置としてのメモリチップの動作を示すフローチャートである。
【図８】図８は、実施形態の各レジスタの状態の遷移を説明するための図である。
【図９】図９は、実施形態の各レジスタの状態の遷移を説明するための図である。
【図１０】図１０は、実施形態の各レジスタの状態の遷移を説明するための図である。
【図１１】図１１は、実施形態の各レジスタの状態の遷移を説明するための図である。
【図１２】図１２は、実施形態の各レジスタの状態の遷移を説明するための図である。
【図１３】図１３は、実施形態の各レジスタの状態の遷移を説明するための図である。
【発明を実施するための形態】
【０００７】
以下に添付図面を参照して、実施形態にかかる半導体メモリ装置を詳細に説明する。なお、この実施形態により本発明が限定されるものではない。
【０００８】
（実施形態）
図１は、実施形態の半導体メモリ装置を具備するメモリシステムの構成の一例を示す図である。メモリシステム２００は、ホスト３００と通信可能に接続され、ホスト３００に対して外部記憶媒体として機能する。ホスト３００は、例えば、サーバ、パーソナルコンピュータ、またはモバイル型の情報処理装置などが該当する。
【０００９】
メモリシステム２００は、メモリチップ１００及びメモリコントローラ２１０を有する。メモリコントローラ２１０は、ホスト３００からの要求に応じて、又は、自律的に、メモリチップ１００の制御を行う。
【００１０】
メモリコントローラ２１０は、制御部２１１、ホストＩ／Ｆ（インターフェース）２１２、メモリＩ／Ｆ（インターフェース）２１３、ＥＣＣ（誤り訂正回路）２１４、バッファメモリ２１５、及びバス２１６を有する。制御部２１１、ホストＩ／Ｆ２１２、メモリＩ／Ｆ２１３、ＥＣＣ２１４、バッファメモリ２１５は、バス２１６を介して互いに通信可能に接続されている。制御部２１１は、例えばＣＰＵ（中央処理演算ユニット）であり、メモリコントローラ２１０における各部を統括的に制御する。ホストＩ／Ｆ２１２は、ホスト３００との通信を媒介する。メモリＩ／Ｆ２１３は、メモリチップ１００とのデータ・指示の受け渡しを媒介する。ＥＣＣ２１４は、メモリチップ１００から読み出されたデータの誤り訂正処理を行う。バッファメモリ２１５は、メモリチップ１００との間で受け渡されるデータ・指示をバッファリングしたり、制御部２１１によるワークエリアとして使用されたりする。
【００１１】
メモリチップ１００は、実施形態の半導体メモリ装置の一例である。以下に、メモリチップ１００について図２〜図５を用いて説明する。図２は、実施形態の半導体メモリ装置としてのメモリチップ１００の構成を示す図である。図３は、実施形態のメモリセルアレイの構成を示す図である。図４は、実施形態のメモリセルの構成を示す回路図である。
【００１２】
メモリチップ１００は、例えば、抵抗変化型のメモリセルＭＣを有する、ＲｅＲＡＭ（Resistive  Random  Access  Memory）である。メモリチップ１００は、図２に示すように、メモリセルアレイ１、Ｒｏｗ系回路２、Ｃｏｌｕｍｎ系回路３、アドレスレシーバー４、アドレスレジスタ５、電源生成回路６、電源ドライブ回路７、制御回路８３、データ入力回路８１、及びデータ出力回路８２を有する。
【００１３】
メモリセルアレイ１には、図３に示すように、Ｎ本のワードラインＷＬ−１〜ＷＬ−Ｎと、Ｍ本のビットラインＢＬ−１〜ＢＬ−Ｍが設けられており、複数のメモリセルＭＣ（１，１）〜ＭＣ（Ｎ，Ｍ）が配列されている。Ｎは４以上の整数とし、Ｍは、２以上の整数とする。例えば、Ｎ本のワードラインＷＬ−１〜ＷＬ−ＮとＭ本のビットラインＢＬ−１〜ＢＬ−Ｍとの交差する位置に複数のメモリセルＭＣ（１，１）〜ＭＣ（Ｎ，Ｍ）が２次元的に配列されている。メモリセルアレイ１では、メモリセルＭＣの２次元的な配列（メモリ層）が積層されることでメモリセルＭＣの３次元的な配列が実現されていてよい。
【００１４】
図４に示すように、メモリセルＭＣでは、整流素子Ｄ及び抵抗変化素子Ｒが直列に接続されている。整流素子Ｄは、例えば、ダイオードであり、カソードが抵抗変化素子Ｒに接続され、アノードがビットラインＢＬに接続されている。抵抗変化素子Ｒは、一端がワードラインＷＬに接続され、他端が整流素子Ｄに接続されている。
【００１５】
抵抗変化素子Ｒは、２つの抵抗値の状態、例えば、低抵抗状態と高抵抗状態との２つの抵抗値の状態間で遷移する素子である。抵抗変化素子Ｒは、例えば整流素子Ｄが順方向となるようにメモリセルＭＣの両端にある一定のセット電圧が印加されると、高抵抗状態から低抵抗状態へ遷移する（セット動作）。また、抵抗変化素子Ｒは、例えば整流素子Ｄが順方向となるようにメモリセルＭＣの両端にある一定のリセット電圧が印加されると、低抵抗状態から高抵抗状態へ遷移する（リセット動作）。これにより、各メモリセルＭＣは、バイナリデータを格納可能である。
【００１６】
本明細書では、セット動作及びリセット動作を含む動作を「書き込み動作」と呼ぶことにする。セット動作は、メモリセルＭＣの両端にセット電圧を印加してビット値“０”を設定する動作とし、リセット動作は、メモリセルＭＣの両端にリセット電圧を印加してビット値“１”を設定する動作とする。また、メモリセルＭＣに設定されたビット値を検出する動作を「読み出し動作」と呼ぶことにする。
【００１７】
書き込み動作（セット動作およびリセット動作）は、プログラムとベリファイからなる。書き込み動作において、メモリセルＭＣの抵抗変化素子Ｒの抵抗値を変化させるために電圧を印加することをプログラムといい、プログラムによって設定された抵抗値が適切な値であるか否かを検証することベリファイという。ベリファイは、読み出し動作の一種であるが、本明細書においては、プログラムの後に書き込み動作の一環として行われる読み出し動作のことを、ベリファイと呼ぶことにする。また、ベリファイ以外の目的で、書き込み動作の一環として読み出し動作を行うことをリードと呼ぶことにする。
【００１８】
なお、図４では、各メモリセルＭＣの構成として、ビットラインＢＬからワードラインＷＬへ向かう方向が整流素子Ｄの順方向となる構成が例示されているが、ビットラインＢＬからワードラインＷＬへ向かう方向が整流素子Ｄの逆方向となる構成であってもよい。また、各メモリセルＭＣ内では、整流素子Ｄ及び抵抗変化素子Ｒの配置が入れ替えられたものであっても良い。
【００１９】
図２に示すアドレスレシーバー４は、メモリコントローラ２１０から供給されたアドレス信号をアドレスレジスタ５に格納する。制御回路８３は、メモリコントローラ２１０から供給されたコマンドを受け取り、コマンドに応じた予め決められたシーケンスに基づき、種々の指令を各回路へ出す。例えば、制御回路８３は、書き込み動作および読み出し動作における動作電圧や動作タイミング等を制御するための指令を出す。アドレスレジスタ５は、制御回路８３からの指令に従い、アドレス信号をＲｏｗ系回路２およびＣｏｌｕｍｎ系回路３に送る。
【００２０】
データ入力回路８１は、書き込み動作の実行を要求するコマンド（ライトコマンド）に伴って受信したデータ（書き込みデータ）をデータレジスタブロック３４に送る。
【００２１】
データ出力回路８２は、メモリコントローラ２１０に外部Ｉ／Ｏ線を介して接続され、メモリコントローラ２１０に向けて、読み出しデータの出力、書き込み動作完了の通知などを行う。
【００２２】
電源生成回路６は、書き込み動作および読み出し動作用の電源電圧をそれぞれ生成して電源ドライブ回路７へ供給する。
【００２３】
電源ドライブ回路７は、制御回路８３からの指令に応じて、書き込み動作および読み出し動作用の電源電圧をＲｏｗ系回路２およびＣｏｌｕｍｎ系回路３に供給する。
【００２４】
図３に示すＮ本のワードラインＷＬ−１〜ＷＬ−Ｎは、複数のメモリセルＭＣ（１，１）〜ＭＣ（Ｎ，Ｍ）の間を行（ロウ）に沿った方向へ延びている。
【００２５】
図２に示すＲｏｗ系回路２は、メモリセルアレイ１のワードラインＷＬの延在方向に隣接する位置に設けられている。Ｒｏｗ系回路２は、ローデコーダー２１、電流制限ブロック２２、及びワードラインセレクタ２３を有する。ローデコーダー２１は、アドレス信号をアドレスレジスタ５から受け、アドレス信号に従い、ワードラインセレクタ２３を介してワードラインＷＬを駆動する。このとき、電流制限ブロック２２は、選択されたワードラインＷＬに流れる電流値が所定値になるように電流を制限する。
【００２６】
Ｎ本のワードラインＷＬ−１〜ＷＬ−Ｎに対応して、ローデコーダー２１は、Ｎ個のデコード回路（図示せず）を有し、電流制限ブロック２２は、Ｎ個の電流制限素子２２１−１〜２２１−Ｎを有し、ワードラインセレクタ２３は、Ｎ個のワードラインドライバ２３１−１〜２３１−Ｎを有する。例えば、デコード回路は、ワードラインドライバ２３１−ｐを介して、ワードラインＷＬ−ｐを選択し、ｐ行目のメモリセルＭＣ（ｐ，１）〜（ｐ，Ｍ）のうち選択されたメモリセルについて、データの書き込み動作またはデータの読み出し動作を行うために必要な電圧の印加を行う。各電流制限素子２２１−１〜２２１−Ｎは、例えばＮＭＯＳトランジスタであり、線形領域で動作するようなバイアスがゲートに供給され、能動負荷として動作する。これにより、各ワードラインＷＬは、対応するメモリセルＭＣがオンして電流が流れる際に互いに均等な電流が流れ得る。
【００２７】
図３に示すＭ本のビットラインＢＬ−１〜ＢＬ−Ｍは、複数のメモリセルＭＣ（１，１）〜ＭＣ（Ｎ，Ｍ）の間を列（カラム）に沿った方向へ延びている。
【００２８】
図２に示すＣｏｌｕｍｎ系回路３は、メモリセルアレイ１のビットラインＢＬの延在方向に隣接する位置に設けられている。Ｃｏｌｕｍｎ系回路３は、Ｍ本のビットラインＢＬ−１〜ＢＬ−Ｍに接続されている。
【００２９】
例えば、Ｃｏｌｕｍｎ系回路３は、カラムデコーダー３１、データレジスタブロック３４、演算回路ブロック３５、センスアンプブロック３２、及びビットラインセレクタ３３を有する。カラムデコーダー３１は、アドレス信号をアドレスレジスタ５から受ける。そして、カラムデコーダー３１は、アドレス信号等に基づいて、ビットラインセレクタ３３を介してビットラインＢＬを選択する。
【００３０】
Ｍ本のビットラインＢＬ−１〜ＢＬ−Ｍに対応して、センスアンプブロック３２は、Ｍ個のセンスアンプ（Ｓ／Ａ）３２１−１〜３２１−Ｍを有し、ビットラインセレクタ３３は、Ｍ個のビットラインドライバ３３１−１〜３３１−Ｍを有する。例えば、カラムデコーダー３１は、ビットラインドライバ３３１−ｋを介して、ビットラインＢＬ−ｋを選択し、ｋ列目のメモリセルＭＣ（１，ｋ）〜（Ｎ，ｋ）のうち選択されたメモリセルについて、データの書き込み動作またはデータの読み出し動作を行う。各センスアンプ３２１は、データレジスタブロック３４から入力されるデータに基づいて、対応するビットラインＢＬに接続されたメモリセルの状態を電気的に設定する。また、各センスアンプ３２１は、対応するビットラインＢＬに接続されたメモリセルの状態を電気的に検出し、検出された状態に対応するバイナリデータをデータレジスタブロック３４へ出力する。
【００３１】
さらに、図５に示されるように、Ｍ本のビットラインＢＬ−１〜ＢＬ−Ｍに対応して、データレジスタブロック３４は、Ｍ個のレジスタ群３４１−１〜３４１−Ｍを有し、演算回路ブロック３５は、Ｍ個の演算回路３５１−１〜３５１〜Ｍを有する。
【００３２】
図５では、レジスタ群３４１−１〜３４１−Ｍのうちの、１つのビットラインＢＬ（ここではＢＬ−ｋとする）に接続されたレジスタ群３４１−ｋについてのみ、詳細なレジスタ構成が図示されている。レジスタ群３４１−１〜３４１−Ｍのそれぞれは、レジスタ群３４１−ｋと同様のレジスタ構成を有するので、ここでは説明を省略する。
【００３３】
レジスタ群３４１−ｋは、例えば、レジスタ（シャドーレジスタ）ＳＨＲ、レジスタ（エラーレジスタ）ＥＲ、レジスタ（データレジスタ）ＤＲ、レジスタ（センスアンプリードデータレジスタ）ＳＡ−ＲＤＡＴＡ、およびレジスタ（センスアンプイネーブルレジスタ）ＳＡＥを含む。レジスタＳＨＲは、レジスタＤＲに接続されている。レジスタＤＲ、レジスタＥＲ、レジスタＳＡ−ＲＤＡＴＡ、およびレジスタＳＡＥは、対応するセンスアンプ３２１−ｋに接続されている。演算回路３５１−ｋは、レジスタ群３４１−ｋに含まれるこれらのレジスタを用いて、データ転送を含む各種演算を実行する。
【００３４】
データ入力回路８１からデータレジスタブロック３４に入力される書き込みデータは、同一のワードラインに接続されたそれぞれ異なるメモリセルをあて先（書き込み先）とした複数のバイナリデータを含む。レジスタ群３４１−ｋでは、レジスタＳＨＲは、データ入力回路８１から入力された書き込みデータのうちのビットラインＢＫ−ｋに接続されたメモリセルをあて先（書き込み先）としたバイナリデータを受ける。
【００３５】
レジスタＳＨＲに格納された、書き込みデータを構成するバイナリデータは、レジスタＤＲに転送される。そのバイナリデータは、あて先のメモリセルへの書き込み動作の完了が確認されるまでレジスタＤＲに保持される。なお、レジスタＳＨＲは、バイナリデータがレジスタＤＲに転送された後、次の書き込みデータを構成するバイナリデータを受けることができる。以降、レジスタＤＲに格納されたバイナリデータを、書き込み対象のバイナリデータ、と表記することがある。
【００３６】
レジスタＳＡ−ＲＤＡＴＡは、センスアンプ３２１−ｋから出力された値を受けるレジスタである。レジスタＥＲは、書き込み動作の実行対象であるか否かを示す情報が格納されるレジスタである。レジスタＳＡＥは、センスアンプ３２１−ｋの動作／非動作を指示する情報が格納されるレジスタである。
【００３７】
実施形態では、書き込み動作の過程の中で、書き込み先のメモリセルに対して複数回のリードが実行される。複数回のリードのそれぞれによって得られた複数のバイナリデータは、順次レジスタＳＡ−ＲＤＡＴＡに格納される。演算回路３５１−ｋは、書き込み対象のバイナリデータと、レジスタＳＡ−ＲＤＡＴＡに順次格納される複数のバイナリデータと、に基づいて、対応するメモリセルが書き込み動作の実行対象であるか否かを判定する。
【００３８】
具体的には、対応するメモリセルが書き込み対象のバイナリデータと異なる値を記憶している場合、またはそのメモリセルがウィークビットに該当する場合、演算回路３５１−ｋは、そのメモリセルは書き込み動作の実行対象であると判定する。これに対し、対応するメモリセルが書き込み対象のバイナリデータと同一の値を記憶しており、かつ、そのメモリセルがウィークビットに該当しない場合、演算回路３５１−ｋは、そのメモリセルは書き込み動作の実行対象ではないと判定する。
【００３９】
演算回路３５１−ｋは、書き込み動作の実行対象であるか否かの判定の結果をレジスタＥＲに格納する。レジスタＥＲに書き込まれた情報は、レジスタＳＡＥに転送され、演算回路３５１−ｋは、レジスタＳＡＥに格納された情報に基づいてセンスアンプ３２１−ｋの動作／非動作を切り替える。
【００４０】
ウィークビットは、記憶状態が所定の基準より悪いメモリセルをいう。以下に、ウィークビットについて説明する。
【００４１】
メモリセルアレイ１における各メモリセルに対して書き込み動作を行った場合、書き込まれたバイナリデータ（書き込まれた０又は１の値）は、読み出し動作を行うことで検出することができる。例えば、読み出し動作においては、メモリセルの両端に所定の電圧を印加する。これにより、そのメモリセルの抵抗値に対応した電流（具体的には、そのメモリセルの抵抗値の逆数に比例した電流）がメモリセルの両端に流れる。この電流を検出することで、メモリセルに書き込まれたバイナリデータを検出することができる。
【００４２】
メモリセルの両端に所定のリード電圧Ｖreadを印加した場合に流れる電流を横軸としメモリセル数を縦軸として、メモリセルアレイ１における複数のメモリセルの分布を示すと、例えば図６に示すようになる。斜線のハッチングで示す値“０”の山をセット状態（低抵抗状態）にあるという意味で分布ＳＥＴと呼ぶことにし、斜線のハッチングで示す値“１”の山をリセット状態（高抵抗状態）にあるという意味で分布ＲＳＴと呼ぶことにする。
【００４３】
メモリセルに対する読み出し動作（ベリファイおよびリードも含む）は、メモリセルの両端にリード電圧Ｖreadを印加して、その電流値（リード電流値）がしきい値Ｉreadより低いか否かを見ることで行われる。Ｉreadは、セット状態とリセット状態との境界に対応したしきい値である。
【００４４】
例えば、適正なデータが“０”であるべき場合に、リード電流値がＩreadより高ければ“０”として読み出される。適正なデータとは、ユーザが意図する値であり、期待値とも称される。
【００４５】
一方で、例えば、読み出し動作の際にメモリセルの両端に与えられるリード電圧Ｖreadが、配線抵抗やノイズの影響などにより変動する可能性がある。また、例えば、素子の状態が、動作温度の影響を受ける可能性がある。このような可能性を考慮して、書き込み動作としてセット動作がなされる際には、メモリセルアレイ１における複数のメモリセルの分布ＳＥＴは、図６における実線の曲線で示す状態にされる。
【００４６】
この分布ＳＥＴが、実線の曲線で示す状態から、破線の曲線で示す状態へと、経時的に変化する場合がある。分布ＳＥＴが経時的に実線の曲線で示す状態から破線の曲線で示す状態に変化した場合、元の分布ＳＥＴに対して分布ＲＳＴ側に位置する領域５０にあるメモリセルは、リード電流値がＩreadより高いので“０”として検出されるが、そのまま放置すると、リード電流値が“１”側に近づくように劣化していく可能性がある。
【００４７】
そこで、領域５０にあるメモリセルは、記憶状態が所定の基準より悪いメモリセル、即ちウィークビットとして検出される。領域５０にあるメモリセルは、リード電流値がＩreadと記憶状態の良否の判定基準として設けられたしきい値Ｉrm0との間にあることで確認できる。
【００４８】
Ｉrm0は、例えば、ＩreadとＩvaw0との間に設定される。Ｉvaw0は、“０”の書き込み動作の完了の確認に使用されるしきい値である。プログラムの完了の確認は、ベリファイとも称される。
【００４９】
なお、Ｉrm0とＩvaw0との間には、所定のマージンが設けられている。Ｉrm0とＩvaw0との間には必ずしもマージンが設けられていなくてもよい。その場合には、Ｉvaw0を超えてリード電流値が“１”側に近づいたメモリセルは、ウィークビットと判定される。即ち、マージンが設けられている場合に比べ、ウィークビットの判定がより厳しくなる。
【００５０】
同様に、適正なデータが“１”であるべき場合に、リード電流値がＩreadより低ければ“１”として読み出される。書き込み動作としてリセット動作がなされる際には、メモリセルアレイ１における複数のメモリセルの分布ＲＳＴは、図６における実線の曲線で示す状態にされる。
【００５１】
分布ＲＳＴが経時的に実線の曲線で示す状態から破線の曲線で示す状態に変化した場合、元の分布ＲＳＴに対して分布ＳＥＴ側に位置する領域５１にあるメモリセルは、リード電流値がＩreadより低いので“１”として読み出されるが、そのまま放置すると、リード電流値が“０”側に近づくように劣化していく可能性がある。
【００５２】
よって、領域５１にあるメモリセルは、記憶状態が所定の基準より悪いメモリセル、即ちウィークビットとして検出される。領域５１にあるメモリセルは、リード電流値がＩreadと値の記憶状態の良否の判定基準として設けられたしきい値Ｉrm1との間にあることで確認できる。
【００５３】
Ｉrm1は、例えば、ＩreadとＩvaw1との間に設定される。Ｉvaw1は、“１”のプログラムの完了の確認（ベリファイ）に使用されるしきい値である。
【００５４】
なお、Ｉrm1とＩvaw1との間には、所定のマージンが設けられている。Ｉrm1とＩvaw1との間には必ずしもマージンが設けられていなくてもよい。その場合には、Ｉvaw1を超えてリード電流値が“０”側に近づいたメモリセルは、ウィークビットと判定される。即ち、マージンが設けられている場合に比べ、ウィークビットの判定がより厳しくなる。
【００５５】
実施形態では、演算回路ブロック３５は、書き込みデータを構成する複数のバイナリデータのあて先の複数のメモリセルのうち、書き込み対象のバイナリデータと異なる値を記憶するメモリセルと、ウィークビットと、を特定する第１回路として機能する。そして、制御回路８３、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３は、特定されたこれらのメモリセルに対して一括にプログラムを実行する第２回路として機能する。
【００５６】
よって、ウィークビットに関しては、書き込み対象のバイナリデータが上書き形式でプログラムされることによって、適正な記憶状態に移行せしめられる。
【００５７】
例えば、領域５０にあったメモリセルは、リード電流値がＩvaw0よりも高い状態に移行せしめられる。領域５１にあったメモリセルは、リード電流値がＩvaw1よりも低い状態に移行せしめられる。
【００５８】
さらに、書き込み対象のバイナリデータと異なる値を記憶するメモリセルと、ウィークビットと、に対して一括にプログラムが実行されるので、書き込み対象のバイナリデータと異なる値を記憶するメモリセルに対するプログラムと、ウィークビットに対するプログラムと、が異なるタイミングで実行される場合に比べて、効率よくウィークビットの適正化を図ることが可能となる。
【００５９】
次に、図７〜図１３を用いて実施形態の半導体メモリ装置としてのメモリチップ１００の動作を説明する。
【００６０】
図７は、実施形態の半導体メモリ装置としてのメモリチップ１００の動作を示すフローチャートである。本図は、ライトコマンドに応じた動作のシーケンスを示している。また、図８〜図１３は、１つのレジスタ群３４１に具備される各レジスタの状態の遷移を、書き込み対象のバイナリデータが“１（ＲＳＴ）”である場合と“０（ＳＥＴ）”である場合とについて示した図である。
【００６１】
メモリコントローラ２１０からライトコマンドとともに入力された書き込みデータは、データレジスタブロック３４に入力される。図７に示されるように、書き込みデータに含まれる各バイナリデータは、対応するレジスタに格納される（Ｓ１０１）。
【００６２】
Ｓ１０１では、各バイナリデータはあて先のメモリセルに接続されたレジスタ群３４１が備えるレジスタＳＨＲに格納される。つまり、レジスタＳＨＲには、図８に示されるように、書き込み対象のバイナリデータに対応して“０”または“１”が格納される。
【００６３】
さらに、図９に示されるように、Ｓ１０１では、演算回路３５１は、レジスタＳＨＲの内容をレジスタＤＲに転送する。そして、演算回路３５１は、レジスタＥＲに、“１”を格納し、レジスタＥＲの内容をレジスタＳＡＥにコピーする。
【００６４】
Ｓ１０１に続いて、しきい値Ｉreadを用いて書き込みデータのあて先の複数のメモリセルのリードが実行される（Ｓ１０２）。書き込みデータのあて先の複数のメモリセルは、ローデコーダー２１によって選択されたワードラインＷＬに接続されたＭ個のメモリセルのうちの、それぞれカラムデコーダー３１によって選択されたビットラインＢＬに接続された複数のメモリセルである。
【００６５】
Ｓ１０２では、例えば、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、書き込みデータのあて先の複数のメモリセルのそれぞれに対し、リード電圧Ｖreadを印加する。個別のメモリセルでは、それぞれのセンスアンプ３２１は、リード電流値とＩreadとを比較し、リード電流値がＩreadより高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩreadより低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【００６６】
Ｓ１０２でレジスタＳＡ−ＲＤＡＴＡに格納されたバイナリデータは、あて先のメモリセルが記憶するバイナリデータとして見なされる。このバイナリデータの集合を、第１リードデータと表記する。
【００６７】
Ｓ１０２に続いて、書き込みデータと第１リードデータとが一致するか否かが判定される（Ｓ１０３）。
【００６８】
「書き込みデータと第１リードデータとが一致する」とは、あて先の全てのメモリセルにおいて、書き込み対象のバイナリデータとＳ１０２によってレジスタＳＡ−ＲＤＡＴＡに得られたバイナリデータとで値が一致することをいう。「書き込みデータと第１リードデータとが一致しない」とは、あて先のメモリセルのうちの１以上のメモリセルにおいて、書き込み対象のバイナリデータとＳ１０２によってレジスタＳＡ−ＲＤＡＴＡに得られたバイナリデータとで値が一致しないことをいう。
【００６９】
Ｓ１０３では、各演算回路３５１は、下記の式（１）および（２）の演算をこの順番で行う。ここで、“＝”の記号は、左辺の論理値に、右辺の論理値を代入することを意味する。また、“ｘｏｒ”は排他的論理和の演算子である。“ｎｏｔ（Ｘ）”は、Ｘの否定を意味する。
ＥＲ＝ＳＡ−ＲＤＡＴＡ  ｘｏｒ  ｎｏｔ（ＤＲ）  ・・・（１）
ＳＡＥ＝ＥＲ  ・・・（２）
【００７０】
その結果、図１０に示されるように、書き込み対象のバイナリデータとレジスタＳＡ−ＲＤＡＴＡに格納されたバイナリデータとで値が一致する場合（ｍａｔｃｈ）、レジスタＳＡＥには“１”が格納され、書き込み対象のバイナリデータとレジスタＳＡ−ＲＤＡＴＡに格納されたバイナリデータとで値が異なる場合（ｍｉｓｍａｔｃｈ）、レジスタＳＡＥには“０”が格納される。
【００７１】
あて先の全てのメモリセルに関してレジスタＳＡＥに“１”が格納された場合、制御回路８３は、例えば、データ出力回路８２に、ライトコマンドの実行完了をメモリコントローラ２１０へ通知させる。あて先のメモリセルのうちの何れかにおいてレジスタＳＡＥに“０”が格納された場合、Ｓ１０４の処理が実行される。
【００７２】
Ｓ１０４では、しきい値Ｉrm0を用いてあて先の複数のメモリセルのリード（読み出し動作）が実行される（Ｓ１０４）。Ｓ１０４によって検出されたバイナリデータの集合を、第２リードデータと表記する。Ｓ１０４に続いて、第２リードデータに基づいて、ＳＥＴ側のウィークビット（即ち領域５０にあるメモリセル）が特定される（Ｓ１０５）。
【００７３】
Ｓ１０４では、例えば、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、書き込みデータのあて先のそれぞれのメモリセルに対し、リード電圧Ｖreadを印加する。それぞれのセンスアンプ３２１は、リード電流値とＩrm0とを比較し、リード電流値がＩrm0より高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩrm0より低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【００７４】
ここで、各演算回路３５１は、レジスタＳＡＥが“１”である場合、対応するセンスアンプ３２１を動作可能に設定し、レジスタＳＡＥが“０”である場合、対応するセンスアンプ３２１を動作不可能に設定する。即ち、Ｓ１０５では、あて先の複数のメモリセルのうちの、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのみを対象としてリード（読み出し動作）が実行される。
【００７５】
なお、Ｓ１０４のリードの対象の設定方法はこれに限定されない。あて先の全てのメモリセルがリードの対象に設定されてもよい。
【００７６】
Ｓ１０５では、各演算回路３５１は、下記の式（３）および（４）の演算をこの順番で実行する。ここで、“ａｎｄ”は論理積の演算子である。
ＥＲ＝ＳＡＥ  ａｎｄ  ＳＡ−ＲＤＡＴＡ  ・・・（３）
ＳＡＥ＝ＥＲ  ・・・（４）
【００７７】
Ｓ１０４およびＳ１０５の処理の結果、図１１に示されるように、各レジスタの内容が変化する。なお、本図および以降の図において、“Ｘ−＞Ｙ”は、内容が“Ｘ”から“Ｙ”に変化することを示している。例えば、書き込み対象のバイナリデータが“０”であり“０”を記憶するメモリセルに関し、Ｓ１０４の処理によってレジスタＳＡ−ＲＤＡＴＡの内容が“０”のまま変化しなかった場合には（Ｉrm0：ｐａｓｓ）、Ｓ１０５の処理によってレジスタＥＲの内容が“１”から“０”に変化する。この変化は、対応するメモリセルがウィークビットではないと判定されたことに該当する。
【００７８】
これに対し、書き込み対象のバイナリデータが“０”であり“０”を記憶するメモリセルに関し、Ｓ１０４の処理によってレジスタＳＡ−ＲＤＡＴＡの内容が“０”から“１”に変化した場合には（Ｉrm0：ｆａｉｌ）、つまり対応するメモリセルが領域５０にある場合には、Ｓ１０５の処理においてレジスタＥＲの内容が“１”のまま変化しない。Ｓ１０５の処理においてレジスタＥＲの内容が“１”に維持されることは、対応するメモリセルがウィークビットであると特定されたことに該当する。
【００７９】
なお、書き込み対象のバイナリデータが“１”であり“１”を記憶するメモリセルに関しては、Ｓ１０４のリードにおいて“０”が検出される可能性はない。なぜなら、リード電流値がＩreadよりも低いメモリセルが“１”を記憶するメモリセルであると特定されているため、そのメモリセルがＩreadよりも高いしきい値Ｉrm0を用いた場合、当然に“１”として検出されるからである。よって、ここでは、書き込み対象のバイナリデータが“１”であり“１”を記憶するメモリセルに関して、“０”が検出されるケースの図示を省略している（Ｉrm0：Ａｌｗａｙｓ  １）。
【００８０】
Ｓ１０５に続いて、しきい値Ｉrm1を用いてあて先のメモリセル群のリードが実行される（Ｓ１０６）。Ｓ１０６によって検出されたバイナリデータの集合を、第３リードデータと表記する。Ｓ１０６に続いて、第３リードデータに基づいて、ＲＳＴ側のウィークビット（即ち領域５１にあるメモリセル）が特定される（Ｓ１０７）。
【００８１】
例えば、Ｓ１０６では、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、書き込みデータのあて先の各メモリセルに対し、リード電圧Ｖreadを印加する。それぞれのセンスアンプ３２１は、リード電流値とＩrm1とを比較し、リード電流値がＩrm1より高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩrm1より低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【００８２】
Ｓ１０６では、Ｓ１０４の場合と同様に、各演算回路３５１は、レジスタＳＡＥが“１”である場合、対応するセンスアンプ３２１を動作可能に設定し、レジスタＳＡＥが“０”である場合、対応するセンスアンプ３２１を動作不可能に設定する。即ち、Ｓ１０６では、あて先のメモリセルのうちの、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルから、Ｓ１０５の処理によってＳＥＴ側のウィークビットに該当しないメモリセルを除外したメモリセルのみを対象としてリードが実行される。
【００８３】
なお、Ｓ１０６のリードの対象の設定方法はこれに限定されない。あて先の全てのメモリセルがリードの対象に設定されてもよい。
【００８４】
Ｓ１０７では、各演算回路３５１は、下記の式（５）の演算を実行する。
ＥＲ＝ＳＡＥ  ａｎｄ  ｎｏｔ（ＳＡ−ＲＤＡＴＡ）  ・・・（５）
【００８５】
Ｓ１０６およびＳ１０７の処理の結果、図１２に示されるように、書き込み対象のバイナリデータが“１”であり“１”を記憶するメモリセルに関し、Ｓ１０６の処理によってレジスタＳＡ−ＲＤＡＴＡの内容が“１”のまま変化しなかった場合には（Ｉrm1：ｐａｓｓ）、Ｓ１０７の処理によってレジスタＥＲの内容が“１”から“０”に変化する。この変化は、対応するメモリセルがウィークビットではないと判定されたことに該当する。
【００８６】
これに対し、書き込み対象のバイナリデータが“１”であり“１”を記憶するメモリセルに関し、Ｓ１０６の処理によってレジスタＳＡ−ＲＤＡＴＡの内容が“１”から“０”に変化した場合には（Ｉrm1：ｆａｉｌ）、つまり対応するメモリセルが領域５１にある場合には、レジスタＥＲの内容が“１”のまま変化しない。Ｓ１０７の処理においてレジスタＥＲの内容が“１”に維持されることは、対応するメモリセルがウィークビットであると特定されたことに該当する。
【００８７】
なお、書き込み対象のバイナリデータが“０”であり“０”を記憶するメモリセルに関しては、Ｓ１０６のリードにおいて“１”が検出される可能性はない。なぜなら、リード電流値がＩreadよりも高いメモリセルが“０”を記憶するメモリセルであると特定されているため、そのメモリセルがＩreadよりも低いしきい値Ｉrm1を用いた場合、当然に“０”として検出されるからである。よって、ここでは、書き込み対象のバイナリデータが“０”であり“０”を記憶するメモリセルに関して、“１”が検出されるケースの図示を省略している（Ｉrm1：Ａｌｗａｙｓ  ０）。
【００８８】
Ｓ１０４〜Ｓ１０７の処理によって、レジスタＥＲは、対応するメモリセルがウィークビットとして特定された場合には、“１”が格納された状態となる。また、レジスタＥＲは、対応するメモリセルが、ウィークビットではないと判定された場合には、“０”が格納された状態となる。
【００８９】
Ｓ１０７に続いて、しきい値Ｉreadを用いてあて先のメモリセル群のリードが実行される（Ｓ１０８）。なお、Ｓ１０８のリードを、ＲＢＷ（Read  Before  Write）と表記することがある。Ｓ１０８によって検出されたバイナリデータの集合を、第４リードデータと表記する。
【００９０】
Ｓ１０８では、全てのメモリセルがリードの対象として設定される。即ち、各演算回路３５１は、レジスタＳＡＥに“１”を格納する。
【００９１】
そして、Ｓ１０２の場合と同様に、例えば、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、書き込みデータのあて先の複数のメモリセルのそれぞれに対し、リード電圧Ｖreadを印加する。それぞれのセンスアンプ３２１は、リード電流値とＩreadとを比較し、リード電流値がＩreadより高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩreadより低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【００９２】
なお、Ｓ１０８によって検出された第４リードデータは、第１リードデータと同じ内容を有するものである。第１リードデータを所定のレジスタに保存しておくことによって、Ｓ１０８の処理を省略してもよい。
【００９３】
Ｓ１０８に続いて、第４リードデータと、書き込みデータと、特定されたウィークビットと、に基づいて、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、がプログラムの実行対象として設定される（Ｓ１０９）。換言すると、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、が特定される。
【００９４】
Ｓ１０９では、例えば、演算回路３５１は下記の式（６）および（７）の演算をこの順番で実行する。ここで、“ｏｒ”は論理和の演算子である。
ＥＲ＝（ＳＡ−ＲＤＡＴＡ  ｘｏｒ  ＤＲ）  ｏｒ  ＥＲ  ・・・（６）
ＳＡＥ＝ＥＲ  ・・・（７）
【００９５】
式（６）の演算の結果、図１３に示されるように、書き込み対象のバイナリデータと第４リードデータのバイナリデータとで値が異なる場合には（ＲＢＷ  ｆａｉｌ）、レジスタＥＲには“１”が格納される。
【００９６】
これに対し、書き込み対象のバイナリデータと第４リードデータのバイナリデータとで値が同一であるメモリセルに関しては（ＲＢＷ  ｐａｓｓ）、レジスタＥＲには、そのメモリセルがウィークビットである場合には“１”が格納され、そのメモリセルがウィークビットではない場合には“０”が格納される。
【００９７】
即ち、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのうちのウィークビットと、については対応するレジスタ群３４１のレジスタＥＲに、プログラムの実行対象であることを意味する“１”が格納される。そして、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのうちの、ウィークビットに該当しないメモリセルについては、対応するレジスタ群３４１のレジスタＥＲに、プログラムの実行対象ではないことを意味する“０”が格納される。
【００９８】
レジスタＥＲの内容は式（７）の演算によってレジスタＳＡＥに転送される。そして、“０”のバイナリデータの書き込み（ＳＥＴ  ｐｒｏｇｒａｍ）と、“１”のバイナリデータの書き込み（ＲＳＴ  ｐｒｏｇｒａｍ）とが実行される（Ｓ１１０、Ｓ１１１）。
【００９９】
具体的には、Ｓ１１０では、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、対応するレジスタ群３４１のレジスタＳＡＥに“１”が格納されたメモリセルのうち、書き込み対象のバイナリデータが“０”であるメモリセルの両端にセット電圧を印加する。
【０１００】
これにより、書き込み対象のバイナリデータが“０”であるメモリセルのうちの、“１”を記憶しているメモリセルと、“０”を記憶しておりかつウィークビットに該当するメモリセルと、に対して、“０”のプログラムが実行される。
【０１０１】
同様に、Ｓ１１１では、制御回路８３は、対応するレジスタＳＡＥに“１”が格納されたメモリセルのうち、書き込み対象のバイナリデータが“１”であるメモリセルの両端にリセット電圧を印加する。
【０１０２】
これにより、書き込み対象のバイナリデータが“１”であるメモリセルのうちの、“０”を記憶しているメモリセルと、“１”を記憶しておりかつウィークビットに該当するメモリセルと、に対して、“１”のプログラムが実行される。
【０１０３】
Ｓ１１１に続いて、Ｉvaw0、Ｉvaw1を用いてベリファイ（プログラムの完了の確認）が実行され（Ｓ１１２）。そして、ベリファイＯＫ（ＰＡＳＳ）であるか、またはリトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔがリトライ回数のしきい値ＭＡＸに到達したか否かの判定が実行される（Ｓ１１３）。
【０１０４】
Ｓ１１２では、例えば、制御回路８３は、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３を制御して、あて先の複数のメモリセルのそれぞれの両端にリード電圧Ｖreadを印加する。
【０１０５】
そして、書き込み対象のバイナリデータが“０”であれば、センスアンプ３２１は、リード電流値とＩvaw0とを比較し、リード電流値がＩvaw0より高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩvaw0より低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【０１０６】
一方、書き込み対象のバイナリデータが“１”であれば、センスアンプ３２１は、リード電流値とＩvaw1とを比較し、リード電流値がＩvaw1より高ければ、“０”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納し、リード電流値がＩvaw1より低ければ、“１”を対応するレジスタ群３４１のレジスタＳＡ−ＲＤＡＴＡに格納する。
【０１０７】
各演算回路３５１は、下記の式（８）および（９）の演算をこの順番で実行する。
ＥＲ＝ＳＡ−ＲＤＡＴＡ  ｘｏｒ  ＤＲ  ・・・（８）
ＳＡＥ＝ＥＲ  ・・・（９）
【０１０８】
その結果、書き込み対象のバイナリデータが“０”であるメモリセルに関しては、リード電流値がＩvaw0より高ければ、レジスタＥＲおよびレジスタＳＡＥには“０”が格納され、リード電流値がＩvaw0より低ければ、レジスタＥＲおよびレジスタＳＡＥには“１”が格納される。
【０１０９】
書き込み対象のバイナリデータが“１”であるメモリセルに関しては、リード電流値がＩvaw1より低ければ、レジスタＥＲおよびレジスタＳＡＥには“０”が格納され、リード電流値がＩvaw1より高ければ、レジスタＥＲおよびレジスタＳＡＥには“１”が格納される。
【０１１０】
Ｓ１１３では、制御回路８３は、あて先の全てのメモリセルにかかるレジスタ群３４１のレジスタＥＲに“０”が格納された場合には、ベリファイＯＫ（ＰＡＳＳ）と判定する。あて先のメモリセルのうちレジスタ群３４１のレジスタＥＲに“１”が格納されたメモリセルがある場合には、ベリファイＮＧと判定する。
【０１１１】
ベリファイＯＫと判定された場合（Ｓ１１３、Ｙｅｓ）、ライトコマンドに応じた動作のシーケンスが終了する。
【０１１２】
ベリファイＮＧと判定されたか、またはリトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔがリトライ回数のしきい値ＭＡＸに到達した場合（Ｓ１１３、Ｎｏ）、リトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔがインクリメントされ（Ｓ１１４）、Ｓ１１０の処理が再び実行される。
【０１１３】
なお、リトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔは、例えば制御回路８３に具備され、制御回路８３によってインクリメントされる。リトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔは、例えば、ライトコマンドに応じた動作のシーケンスの開始時に、制御回路８３によってゼロにリセットされる。なお、リトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔが設けられる回路およびリトライ回数のカウンタＲｅｔｒｙ＿ｃｎｔを操作する回路は、これに限定されない。
【０１１４】
Ｓ１０３の処理において、書き込みデータと第１リードデータとが一致すると判定された場合（Ｓ１０３、Ｙｅｓ）、ライトコマンドに応じた動作のシーケンスが終了する。
【０１１５】
このように、書き込み先の全てのメモリセルのうちの、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、に対して一括にプログラムが実行される。それぞれのメモリセルは、所定の回数（しきい値ＭＡＸ）を上限として、ベリファイＯＫとなるまでプログラムが繰り返される。よって、プログラムの実行回数がしきい値ＭＡＸに至る前にベリファイＯＫとなった場合には、書き込み先の全てのメモリセルは、ウィークビットを含まない状態となる。
【０１１６】
なお、図５に例示した演算回路３５１およびレジスタ群３４１の構成と、式（１）〜（９）を用いて説明した演算回路３５１による演算方法は、一例である。演算回路ブロック３５が、Ｉread、Ｉrm0、Ｉrm1を用いて検出された第１〜第４リードデータに基づいて、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、を特定し、特定されたそれぞれのメモリセルをプログラムの実行対象と設定することができる限り、演算回路３５１、レジスタ群３４１、および演算回路３５１の演算方法は、種々に変形可能である。
【０１１７】
また、演算回路ブロック３５は、第１回路として機能し、制御回路８３、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３は、第２回路として機能する、として説明した。第１回路および第２回路の機能を担う回路は、これらに限定されない。
【０１１８】
以上述べたように、実施形態によれば、メモリチップ１００が書き込みデータを受信したとき、演算回路ブロック３５は、各演算回路３５１によって、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、を特定する（Ｓ１０３〜Ｓ１０９）。そして、制御回路８３、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３は、書き込み対象のバイナリデータと異なる値を記憶しているメモリセルと、ウィークビットと、に対し、書き込み対象のバイナリデータを一括にプログラムする（Ｓ１１０〜Ｓ１１４）。
【０１１９】
例えば、書き込み対象のバイナリデータと異なる値を記憶するメモリセルに対するプログラムと、ウィークビットに対するプログラムと、が異なるタイミングで実行される場合が考えられる。その場合、書き込み動作のループ処理（Ｓ１１０〜Ｓ１１４のループ処理に相当）が、２つ、必要となり得る。
【０１２０】
実施形態では、１つのループ処理（Ｓ１１０〜Ｓ１１４のループ処理）で、ウィークビットの適正化を含めた書き込みデータの書き込みを実現するので、書き込み対象のバイナリデータと異なる値を記憶するメモリセルに対するプログラムと、ウィークビットに対するプログラムと、が異なるタイミングで実行される場合に比べてトータルの処理時間を短縮することができる。よって、効率よくウィークビットの適正化を図ることが可能となり、メモリチップ１００の利便性が向上する。
【０１２１】
また、実施形態によれば、演算回路ブロック３５は、各演算回路３５１によって、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのうちのウィークビットに該当しないメモリセルを特定する（Ｓ１０３〜Ｓ１０９）。そして、制御回路８３、電源ドライブ回路７、Ｒｏｗ系回路２およびＣｏｌｕｍｎ系回路３は、書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのうちのウィークビットに該当しないメモリセルを、プログラムの実行対象から除外する（Ｓ１１０〜Ｓ１１４）。
【０１２２】
メモリセルに対するプログラムは、メモリセルの疲弊を促進する一因である。書き込み対象のバイナリデータと同一の値を記憶しているメモリセルのうちのウィークビットに該当しないメモリセルに対するプログラムが実行されないので、メモリセルの疲弊を抑制することが可能となる。
【０１２３】
なお、各メモリセルは、抵抗変化型のメモリセルである。センスアンプブロック３２は、各センスアンプ３２１によって、抵抗値に応じたリード電流値を検出する。演算回路ブロック３５は、書き込み対象のバイナリデータが“０”であるメモリセルに関しては、各演算回路３５１によって、リード電流値がＩreadとＩrm0との間にあるメモリセルを、ウィークビットとして特定する。また、演算回路ブロック３５は、書き込み対象のバイナリデータが“１”であるメモリセルに関しては、各演算回路３５１によって、リード電流値がＩreadとＩrm1との間にあるメモリセルを、ウィークビットとして特定する。Ｉrm0は、ＩreadとＩvaw0との間に設定されたしきい値であり、Ｉrm1はＩreadとＩvaw1との間に設定されたしきい値である。
【０１２４】
本発明のいくつかの実施形態を説明したが、これらの実施形態は、例として提示したものであり、発明の範囲を限定することは意図していない。これら新規な実施形態は、その他の様々な形態で実施されることが可能であり、発明の要旨を逸脱しない範囲で、種々の省略、置き換え、変更を行うことができる。これら実施形態やその変形は、発明の範囲や要旨に含まれるとともに、特許請求の範囲に記載された発明とその均等の範囲に含まれる。
【符号の説明】
【０１２５】
１  メモリセルアレイ、７  電源ドライブ回路、２１  ローデコーダー、３１  カラムデコーダー、３２  センスアンプブロック、３４  データレジスタブロック、３５  演算回路ブロック、８３  制御回路、１００  メモリチップ、２００  メモリシステム、２１０  メモリコントローラ、３００  ホスト、３２１  センスアンプ、３４１  レジスタ群、３５１  演算回路。
【図１】
2019160359.tif 000003
【図２】
2019160359.tif 000004
【図３】
2019160359.tif 000005
【図４】
2019160359.tif 000006
【図５】
2019160359.tif 000007
【図６】
2019160359.tif 000008
【図７】
2019160359.tif 000009
【図８】
2019160359.tif 000010
【図９】
2019160359.tif 000011
【図１０】
2019160359.tif 000012
【図１１】
2019160359.tif 000013
【図１２】
2019160359.tif 000014
【図１３】
2019160359.tif 000015