(57)【要約】【課題】不揮発性メモリの書換え処理のスループットを向上させる【解決手段】ライト制御部が、複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定する。ライト処理部が、指定されたメモリブロックにライトデータを書き込む。検証部が、ライトデータが書き込まれたメモリブロックからリードデータを読み出してリードデータがライトデータと一致するか否かを複数のメモリセルの各々において検証する。リトライ抑止部が、ライトデータを再度書き込むリトライ処理の実行を複数のメモリセルのうちリードデータがライトデータと一致したメモリセルにおいて抑止する。リトライ制御部が、ライトデータの全てが書き込まれた複数のメモリセルのいずれかにおいてリードデータとライトデータとが一致しない場合には複数のメモリブロックの少なくとも一部を指定してリトライ処理を同時に実行させる。【選択図】図１０
2014041683.tif 000002
【特許請求の範囲】
【請求項１】
複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、
前記指定されたメモリブロックにライトデータを書き込むライト処理部と、
前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証部と、
前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、
前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させるリトライ制御部と
を具備する記憶制御装置。
【請求項２】
前記ベリファイ部は、前記リードデータが前記ライトデータと一致するか否かを検証するとともに前記リードデータが前記ライトデータと一致しない前記メモリセルの数を失敗ビット数として計数し、
前記リトライ制御部は、前記失敗ビット数が１より多く、かつ、当該失敗ビット数が所定の閾値未満である場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させる
請求項１記載の記憶制御装置。
【請求項３】
前記リトライ制御部は、前記失敗ビット数が前記所定の閾値未満でない場合には前記複数のメモリセルを前記メモリブロックごとに順に指定して前記リトライ処理を実行させる
請求項２記載の記憶制御装置。
【請求項４】
前記所定の閾値は、前記ライト処理部が同時に前記ライトデータを書き込むことが許容されるメモリセルの個数を超えない値である
請求項２記載の記憶制御装置。
【請求項５】
前記ライト処理部は、前記指定されたメモリブロック内のメモリセルの各々に前記ライトデータを供給することにより前記ライトデータを書込み、
前記リトライ抑止部は、前記リードデータが前記ライトデータと一致したメモリセルへの前記データの供給を遮断することにより前記リトライ処理の実行を抑止する
請求項１記載の記憶制御装置。
【請求項６】
前記リトライ制御部は、前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックの全てを指定して前記リトライ処理を同時に実行させる
請求項１記載の記憶制御装置。
【請求項７】
複数のメモリセルと、
前記複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、
前記指定されたメモリブロックにライトデータを書き込むライト処理部と、
前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証部と、
前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、
前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させるリトライ制御部と
を具備する不揮発性メモリ。
【請求項８】
ライト制御部が、複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御手順と、
ライト処理部が、前記指定されたメモリブロックにライトデータを書き込むライト処理手順と、
検証部が、前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証手順と、
リトライ抑止部が、前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止手順と、
リトライ制御部が、前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させるリトライ制御手順と
を具備するメモリ制御方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本技術は、記憶制御装置、不揮発性メモリ、および、メモリ制御方法に関する。詳しくは、書換えに成功したか否かを検証する記憶制御装置、不揮発性メモリ、および、メモリ制御方法に関する。
【背景技術】
【０００２】
近年の情報処理システムにおいては、補助記憶装置やストレージとして、不揮発性メモリ（ＮＶＭ：Non-Volatile memory）が用いられることがある。この不揮発性メモリは、大きなサイズを単位としたデータアクセスに対応したフラッシュメモリと、小さな単位での高速なランダムアクセスが可能な不揮発性ランダムアクセスメモリ（ＮＶＲＡＭ：Non-Volatile RAM）とに大別される。ここで、フラッシュメモリの代表例としては、ＮＡＮＤ型フラッシュメモリが挙げられる。
【０００３】
一方、不揮発性ランダムアクセスメモリの例としては、ＲｅＲＡＭなどが挙げられる。このほか、ＰＣＲＡＭ（Phase-Change RAM）、ＭＲＡＭ（Magnetoresistive RAM）なども知られている。特に、ＲｅＲＡＭは、ナノ秒（ｎｓ）オーダーの短い持続時間のパルスで書換えが可能である。そのため、ＲｅＲＡＭは、高速動作が可能な不揮発性メモリとして注目を浴びている。
【０００４】
これらの不揮発性メモリの書換え処理においては、一般に、メモリセルに対してデータを書き換えるライト処理が実行され、次いで、書換え時にエラーが生じたか否かを検証するベリファイ処理が実行される。そして、エラーが生じていれば、再度の書換えを行うリトライ処理が実行される。このライト処理やリトライ処理において同時に書き換えるビット数を多くするほど、書換えに必要な電流が増大する。例えばＮＯＲ（否定論理和）型フラッシュメモリでは１ビットあたりの書換え電流が１００マイクロアンペア（μＡ）程度である。このため、同時に８ビットを書き換える場合には、約８００μＡの電流が必要となる。また、ライト処理やリトライ処理の実行時間は、同時に書き換えるビット数に応じた時間である。例えば、同時に８ビットを書き換える場合の書換え速度が１マイクロ秒（μｓ）程度である場合、２５６ビットのライト処理およびリトライ処理のそれぞれに、約８μｓを要する。
【０００５】
書換え時に供給可能な電流の大きさは、主として電流経路が許容する電流と電源の容量とにより制限される。そこで、配線の接続を工夫して電圧ドロップが小さい電流経路を確保することにより、供給可能な電流を増大させた不揮発性メモリが提案されている（例えば、非特許文献１参照。）。
【先行技術文献】
【非特許文献】
【０００６】
【非特許文献１】K.Aratani, et.al"A Novel Resistance Memory with High Scalability and Nanosecond Switching", Technical Digest IEDM 2007, pp783-786.
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、上述の従来技術では、不揮発性メモリの書換え処理のスループットを向上させることができないおそれがある。電流経路において許容される電流を大きくしても、電源の容量を増大しない限りは、供給可能な電流の大きさは制限される。したがって、電源の容量により制限されるビット数以上に一度に書き換えるビット数を大きくすることができず、スループットを向上させることができないという問題がある。
【０００８】
本技術はこのような状況に鑑みて生み出されたものであり、不揮発性メモリの書換え処理のスループットを向上させることを目的とする。
【課題を解決するための手段】
【０００９】
本技術は、上述の問題点を解消するためになされたものであり、その第１の側面は、複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、上記指定されたメモリブロックにライトデータを書き込むライト処理部と、上記ライトデータが書き込まれた上記メモリブロックからリードデータを読み出して当該リードデータが上記ライトデータと一致するか否かを上記複数のメモリセルの各々において検証する検証部と、上記ライトデータを再度書き込むリトライ処理の実行を上記複数のメモリセルのうち上記リードデータが上記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、上記ライトデータの全てが書き込まれた上記複数のメモリセルのいずれかにおいて上記リードデータと上記ライトデータとが一致しない場合には複数の上記メモリブロックにおいて少なくとも一部のメモリブロックを指定して上記リトライ処理を同時に実行させるリトライ制御部とを具備する記憶制御装置、および、その制御方法である。これにより、複数のメモリセルのいずれかにおいてリードデータがライトデータと一致しない場合には複数のメモリブロックにおいて少なくとも一部のメモリブロックを指定してリトライ処理が同時に実行される。
【００１０】
また、この第１の側面において、上記ベリファイ部は、上記リードデータが上記ライトデータと一致するか否かを検証するとともに上記リードデータが上記ライトデータと一致しない上記メモリセルの数を失敗ビット数として計数し、上記リトライ制御部は、上記失敗ビット数が１より多く、かつ、当該失敗ビット数が所定の閾値未満である場合には複数の上記メモリブロックにおいて少なくとも一部のメモリブロックを指定して上記リトライ処理を同時に実行させてもよい。これにより、失敗ビット数が１より多く、かつ、当該失敗ビット数が所定の閾値未満である場合には複数のメモリブロックにおいて少なくとも一部のメモリブロックを指定してリトライ処理が同時に実行されるという作用をもたらす。
【００１１】
また、この第１の側面において、上記リトライ制御部は、上記失敗ビット数が上記所定の閾値未満でない場合には上記複数のメモリセルを上記メモリブロックごとに順に指定して上記リトライ処理を実行させてもよい。これにより、失敗ビット数が所定の閾値未満でない場合には前数のメモリセルを上記メモリブロックごとに順に指定してリトライ処理が実行されるという作用をもたらす。
【００１２】
また、この第１の側面において、上記所定の閾値は、上記ライト処理部が同時に上記ライトデータを書き込むことが許容されるメモリセルの個数を超えない値であってもよい。これにより、所定の閾値が、上記ライト処理部が同時に上記ライトデータを書き込むことが許容されるメモリセルの個数を超えないという作用をもたらす。
【００１３】
また、この第１の側面において、上記ライト処理部は、上記指定されたメモリブロック内のメモリセルの各々に上記ライトデータを供給することにより上記ライトデータを書込み、上記リトライ抑止部は、上記リードデータが上記ライトデータと一致したメモリセルへの上記データの供給を遮断することにより上記リトライ処理の実行を抑止してもよい。これにより、リードデータがライトデータと一致したメモリセルへのデータの供給を遮断することによりリトライ処理が抑止されるという作用をもたらす。
【００１４】
また、この第１の側面において、上記リトライ制御部は、上記ライトデータの全てが書き込まれた上記複数のメモリセルのいずれかにおいて上記リードデータと上記ライトデータとが一致しない場合には複数の上記メモリブロックの全てを指定して上記リトライ処理を同時に実行させてもよい。これにより、複数のメモリセルのいずれかにおいてリードデータがライトデータと一致しない場合には複数のメモリブロックの全てを指定してリトライ処理が同時に実行される。
【００１５】
また、本技術の第２の側面は、複数のメモリセルと、上記複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、上記指定されたメモリブロックにライトデータを書き込むライト処理部と、上記ライトデータが書き込まれた上記メモリブロックからリードデータを読み出して当該リードデータが上記ライトデータと一致するか否かを上記複数のメモリセルの各々において検証する検証部と、上記ライトデータを再度書き込むリトライ処理の実行を上記複数のメモリセルのうち上記リードデータが上記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、上記ライトデータの全てが書き込まれた上記複数のメモリセルのいずれかにおいて上記リードデータと上記ライトデータとが一致しない場合には複数の上記メモリブロックにおいて少なくとも一部のメモリブロックを指定して上記リトライ処理を同時に実行させるリトライ制御部とを具備する不揮発性メモリである。これにより、複数のメモリセルのいずれかにおいてリードデータがライトデータと一致しない場合には複数のメモリブロックにおいて少なくとも一部のメモリブロックを指定してリトライ処理が同時に実行される。
【発明の効果】
【００１６】
本技術によれば、不揮発性メモリの書換え処理のスループットが向上するという優れた効果を奏し得る。
【図面の簡単な説明】
【００１７】
【図１】第１の実施の形態におけるメモリシステムの一構成例を示すブロック図である。
【図２】第１の実施の形態における不揮発性メモリの一構成例を示すブロック図である。
【図３】第１の実施の形態におけるメモリセルアレイの一構成例を示すブロック図である。
【図４】第１の実施の形態におけるメモリブロックの一構成例を示す回路図である。
【図５】第１の実施の形態におけるカラムドライバの一構成例を示すブロック図である。
【図６】第１の実施の形態におけるリトライ抑止部の一構成例を示すブロック図である。
【図７】第１の実施の形態における検証部の一構成例を示すブロック図である。
【図８】第１の実施の形態におけるライトドライバユニットの一構成例を示すブロック図である。
【図９】第１の実施の形態におけるライトドライバブロックの一構成例を示すブロック図である。
【図１０】第１の実施の形態における不揮発性メモリの機能構成例を示すブロック図である。
【図１１】第１の実施の形態におけるリセット時にメモリセルに印加される電圧の一例を示す図である。
【図１２】第１の実施の形態におけるセット時にメモリセルに印加される電圧の一例を示す図である。
【図１３】第１の実施の形態におけるライト処理の一例を示すフローチャートである。
【図１４】第１の実施の形態におけるリセット処理の一例を示すフローチャートである。
【図１５】第１の実施の形態におけるセット処理の一例を示すフローチャートである。
【図１６】第１の実施の形態におけるリセット時の不揮発性メモリの動作の一例を示すタイミングチャートである。
【図１７】第１の実施の形態におけるセット時の不揮発性メモリの動作の一例を示すタイミングチャートである。
【図１８】第１の実施の形態の変形例におけるリセット時の不揮発性メモリの動作の一例を示すタイミングチャートである。
【図１９】第２の実施の形態におけるカラムドライバの一構成例を示すブロック図である。
【図２０】第２の実施の形態における検証部の一構成例を示すブロック図である。
【図２１】第２の実施の形態におけるリセット処理の一例を示すフローチャートである。
【図２２】第２の実施の形態におけるセット処理の一例を示すフローチャートである。
【発明を実施するための形態】
【００１８】
以下、本技術を実施するための形態（以下、実施の形態と称する）について説明する。説明は以下の順序により行う。
１．第１の実施の形態（全メモリブロックで同時にリトライ処理を実行する例）
２．第２の実施の形態（失敗ビット数が閾値未満であれば全メモリブロックで同時にリトライ処理を実行する例）
【００１９】
＜１．第１の実施の形態＞
［メモリシステムの構成例］
図１は、実施の形態におけるメモリシステムの一構成例を示すブロック図である。このメモリシステムは、ホストコンピュータ１００、メモリコントローラ１５０および不揮発性メモリ２００を備える。
【００２０】
ホストコンピュータ１００は、メモリシステム全体を制御するものである。具体的には、ホストコンピュータ１００は、コマンド、論理アドレス、および、データを生成してメモリコントローラ１５０に信号線１０９を介して供給する。また、ホストコンピュータ１００は、メモリコントローラ１５０からデータおよびステータスを受け取る。ここで、コマンドは、メモリシステムを制御するためのものであり、例えば、データのライト処理を指示するライトコマンドと、データのリード処理を指示するリードコマンドとを含む。論理アドレスはホストコンピュータ１００が定義したアドレス空間におけるアドレスである。データは、不揮発性メモリ２００に書き込まれるライトデータ、または、不揮発性メモリ２００から読み出されたリードデータである。ステータスは、コマンドの実行結果やメモリシステムの状況を通知する情報である。
【００２１】
メモリコントローラ１５０は、不揮発性メモリ２００を制御するものである。このメモリコントローラ１５０は、ホストコンピュータ１００から受け取った論理アドレスを物理アドレスに変換して不揮発性メモリ２００に信号線１５６を介して供給する。物理アドレスは、不揮発性メモリ２００においてメモリセルに割り当てられたアドレスである。
【００２２】
また、メモリコントローラ１５０は、信号線１５７を介して不揮発性メモリ２００からステータスを受け取り、必要に応じてステータスを更新してホストコンピュータ１００に供給する。
【００２３】
また、メモリコントローラ１５０は、ホストコンピュータ１００から受け取ったコマンドを解析して不揮発性メモリ２００に信号線１５８を介して供給する。さらに、メモリコントローラ１５０は、ホストコンピュータ１００から受け取ったライトデータについてエラー訂正コード（ＥＣＣ：Error Correcting Code）を生成する。そして、メモリコントローラ１５０は、そのＥＣＣを付加したライトデータを不揮発性メモリ２００に信号線１５９を介して供給する。また、メモリコントローラ１５０は、不揮発性メモリ２００から信号線１５９を介してＥＣＣが付加されたリードデータを受け取り、そのＥＣＣに基づいてリードデータにおけるエラーの検出および訂正を行ってホストコンピュータ１００に供給する。
【００２４】
不揮発性メモリ２００は、メモリコントローラ１５０の制御に従って、データを記憶するものである。この不揮発性メモリ２００は、メモリコントローラ１５０からコマンド、アドレス、および、データを受け取る。不揮発性メモリ２００はコマンドがライトコマンドである場合には、指定されたアドレスにデータを書き込み、リードコマンドである場合には、指定されたアドレスからリードデータを読み出す。そして、不揮発性メモリ２００は、ステータスを生成してメモリコントローラ１５０に供給する。また、不揮発性メモリ２００は、リードデータを読み出した場合には、そのリードデータをメモリコントローラ１５０に供給する。
【００２５】
［不揮発性メモリの構成例］
図２は、第１の実施の形態における不揮発性メモリ２００の一構成例を示すブロック図である。この不揮発性メモリ２００は、メモリ制御部４００およびメモリセルアレイ２６０を備える。メモリ制御部４００は、書換制御部２１０、アドレス回路２２０、データ入出力回路２３０、ロウドライバ２４０、プレートドライバ２５０、ロウデコーダ２７０、カラムデコーダ２８０およびカラムドライバ３００を備える。なお、メモリ制御部４００は、特許請求の範囲に記載の記憶制御装置の一例である。
【００２６】
書換制御部２１０は、メモリコントローラ１５０からコマンドを受け取り、そのコマンドに従って、データ入出力回路２３０、ロウドライバ２４０、プレートドライバ２５０、およびカラムドライバ３００を制御するものである。コマンドがリードコマンドである場合には、書換制御部２１０は、プレートドライバ２５０、ロウドライバ２４０およびカラムドライバ３００にリードデータの読出しを指示する制御信号を供給する。そして、書換制御部２１０は、カラムドライバ３００からリードデータの読出しが正常に終了したか否かの通知を受け取る。リードデータの読出しが正常に終了した場合には、書換制御部２１０は、リードデータをメモリコントローラ１５０に出力するように指示する制御信号をデータ入出力回路２３０に供給する。
【００２７】
一方、コマンドがライトコマンドである場合には、書換制御部２１０は、プレートドライバ２５０、ロウドライバ２４０およびカラムドライバ３００にリセットを指示する制御信号を供給する。また、書換制御部２１０は、カラムドライバ３００にイネーブル信号を供給する。イネーブル信号については後述する。
【００２８】
ここで、リセットは、「０」のビットが書き込まれているメモリセルにおいて、そのビットを「１」に書き換える処理である。なお、リセットは、「プログラム」とも呼ばれる。
【００２９】
そして、書換制御部２１０は、カラムドライバ３００からリセット時の検証結果を受け取る。ここで、リセット時の検証結果は、リセットにおいて、リセット対象のメモリセルの全てが「１」に書き換えられたか否かをカラムドライバ３００が検証した結果である。
【００３０】
リセット対象のメモリセルのいずれかが「１」に書き換えられなかった場合には、書換制御部２１０は、再度のリセットを指示する制御信号をロウドライバ２４０、プレートドライバ２５０、およびカラムドライバ３００に供給する。一方、リセット対象のメモリセルの全てが「１」に書き換えられた場合には、書換制御部２１０は、プレートドライバ２５０、ロウドライバ２４０およびカラムドライバ３００にセットを指示する制御信号を供給する。
【００３１】
ここで、セットは、「１」のビットが書き込まれているメモリセルにおいて、そのビットを「０」に書き換える処理である。なお、セットは、「消去」とも呼ばれる。
【００３２】
そして、書換制御部２１０は、カラムドライバ３００からセット時の検証結果を受け取る。ここで、セット時の検証結果は、セットにおいて、セット対象のメモリセルの全てが「０」に書き換えられたか否かをカラムドライバ３００が検証した結果である。
【００３３】
セット対象のメモリセルのいずれかが「０」に書き換えられなかった場合には、書換制御部２１０は、セットを指示する制御信号を再度、ロウドライバ２４０、プレートドライバ２５０、およびカラムドライバ３００に供給する。一方、セット対象のメモリセルの全てが「１」に書き換えられた場合には、書換制御部２１０は、ライトデータの書込みが正常に終了したと判断して、保持していたライトデータを削除するように指示する制御信号をデータ入出力回路２３０に供給する。なお、書換制御部２１０は、リセット、セットの順で指示しているが、セット、リセットの順で指示してもよい。
【００３４】
また、書換制御部２１０は、コマンドの実行結果を記載したステータスを生成してメモリコントローラ１５０に供給する。
【００３５】
アドレス回路２２０は、メモリコントローラ１５０から受け取ったアドレスをロウアドレスとカラムアドレスとに分離するものである。ロウアドレスは、メモリセルアレイ２６０におけるアクセス先の行を指定するものである。また、カラムアドレスは、メモリセルアレイ２６０におけるアクセス先の列を指定するものである。
【００３６】
データ入出力回路２３０は、書換制御部２１０の制御に従ってライトデータまたはリードデータを保持するものである。データ入出力回路２３０は、カラムドライバ３００からリードデータを受け取り、そのリードデータを保持する。そして、書換制御部２１０によりリードデータの出力が指示されると、データ入出力回路２３０は、リードデータをメモリコントローラ１５０に出力して、そのリードデータを削除する。また、データ入出力回路２３０は、メモリコントローラ１５０からライトデータを受け取り、そのライトデータを保持する。そして、書換制御部２１０の制御に従って、保持していたライトデータを削除する。
【００３７】
プレートドライバ２５０は、書換制御部２１０の制御に従って、プレート電圧を印加するものである。プレート電圧は、メモリセルアレイ２６０内のプレート線ＰＬに印加される電圧であり、メモリセルアレイ２６０にカラムドライバ３００がアクセスするために印加される。メモリセルアレイ２６０におけるプレート線ＰＬの配置については後述する。プレートドライバ２５０は、リセットとセットとのそれぞれにおいて、異なるプレート電圧を印加する。例えば、リセットにおいては、プレートドライバ２５０は、ビット線ＢＬの電圧よりも低いプレート電圧を供給し、セットにおいては、ビット線ＢＬの電圧よりも高いプレート電圧を供給する。ビット線ＢＬは、メモリセルアレイ２６０において、列方向に沿って配置された信号線である。
【００３８】
ロウデコーダ２７０は、アドレス回路２２０から受け取ったロウアドレスを解析して、そのロウアドレスに対応するワード線ＷＬを選択するものである。ワード線ＷＬは、メモリセルアレイ２６０において、行方向に沿って配置された信号線である。
【００３９】
ロウドライバ２４０は、書換制御部２１０の制御に従ってワード線ＷＬに電圧を印加するものである。リード、セットおよびリセットのいずれかが指示されると、ロウドライバ２４０は、ロウデコーダ２７０により選択されたワード線ＷＬに一定時間の間、ハイレベルの電圧を印加し、選択されていないワード線ＷＬにローレベルの電圧を印加する。
【００４０】
このワード線ＷＬに印加する書込み電圧としての波高値を持つ信号は、書込みパルスとも呼ばれる。ロウドライバ２４０は、書き込みパルスの印加タイミングと持続時間、及び印加電圧を制御する。なお、書き込みパルスによるセル駆動力は書き込みごとに同じとしてもよいが、可変としてもよい。また、セル駆動力の制御手法は、メモリセルの種類によって適、不適がある。例えば、メモリセルが抵抗変化型の場合、書き込みパルスによるセル駆動力を可変とする方法としては、印加電圧を制御する方法と、パルスの持続時間を一定としてパルス数を制御する方法と、パルスの持続時間を制御する方法とがある。ロウドライバ２４０は、これらを組み合わせて制御する方法を採用してもよい。
【００４１】
カラムデコーダ２８０は、アドレス回路２２０から受け取ったカラムアドレスを解析して、そのカラムアドレスに対応するビット線ＢＬを選択するものである。
【００４２】
カラムドライバ３００は、書換制御部２１０の制御に従ってビット線ＢＬに電圧を印加するものである。書換制御部２１０によりリードが指示されると、カラムドライバ３００は、カラムデコーダ２８０により選択されたビット線ＢＬにハイレベルの電圧を印加し、選択されていないワード線ＷＬにローレベルの電圧を印加する。この選択されたビット線ＢＬの接続先のメモリセルが、アクセス先のメモリセルである。そして、カラムドライバ３００は、アクセス先のメモリセルからデータを読み出し、そのデータをリードデータとしてデータ入出力回路２３０に信号線２３９を介して供給する。
【００４３】
書換制御部２１０によりリセットが指示されると、カラムドライバ３００は、アクセス先のメモリセルからデータをプレリードデータとして読み出す。カラムドライバ３００は、データ入出力回路２３０からライトデータを読み出し、そのライトデータとプレリードデータとをビット単位で比較する。カラムドライバ３００は、ライトデータにおいて「１」であり、かつ、プレリードデータにおいて「０」のビットに対応するメモリセルをリセット対象とする。カラムドライバ３００は、ビット線ＢＬを介してリセット対象のメモリセルをリセットする。リセット後において、カラムドライバ３００は、リセット対象のメモリセルの全てがリセットされたか否かを検証し、その検証結果を書換制御部２１０に供給する。
【００４４】
書換制御部２１０によりセットが指示されると、カラムドライバ３００は、ライトデータとプレリードデータとをビット単位で比較する。カラムドライバ３００は、ライトデータにおいて「０」であり、かつ、プレリードデータにおいて「１」のビットに対応するメモリセルをセット対象とする。カラムドライバ３００は、ビット線ＢＬを介してセット対象のメモリセルをセットする。セット後において、カラムドライバ３００は、セット対象のメモリセルの全てがセットされたか否かを検証し、その検証結果を書換制御部２１０に供給する。
【００４５】
メモリセルアレイ２６０は、マトリックス状に配列された複数のメモリセルを備える。各々のメモリセルとして、例えば、可変抵抗素子を用いるＲｅＲＡＭが用いられる。なお、ＲｅＲＡＭ以外の不揮発性の記憶素子をメモリセルとして用いてもよい。例えば、ＦＧ（Floating Gate）型やＭＯＮＯＳ（metal-oxide-nitride-oxide-silicon）型のＮＡＮＤフラッシュメモリセルを使用してもよい。
【００４６】
［メモリセルアレイの構成例］
図３は、第１の実施の形態におけるメモリセルアレイ２６０の一構成例を示すブロック図である。このメモリセルアレイ２６０は、複数のメモリブロック２６１を備える。メモリブロック２６１は、データの書込み単位でメモリセルアレイ２６０を分割した各領域である。この書込み単位は、データの書換えにおいて、メモリ制御部４００がメモリセルアレイ２６０に供給することができる電流の大きさにより決定される。一度に、最大で１８ビットを書き換える電流をメモリ制御部４００が供給可能である場合には、書換え単位は１８ビット以下（例えば、１６ビット）とされる。
【００４７】
例えば、マトリックス状に配列されたメモリセルの行数が１６、列数が２５６であり、書込み単位が１６ビットである場合、２５６列を１６分割することにより、メモリブロック＃１乃至＃１６が設けられる。分割した結果、メモリブロック＃１乃至＃１６のそれぞれには、１６行、１６列のメモリセルが配列される。それらのメモリセルには、プレート線ＰＬ、ワード線ＷＬ、および、ビット線ＢＬがそれぞれ接続される。メモリブロック＃１乃至＃１６のそれぞれのメモリセルの行数および列数は１６であるから、メモリブロック＃１乃至＃１６のそれぞれには、１６本のワード線ＷＬと１６本のビット線ＢＬとが設けられる。なお、ブロック分割は仮想的なものであり、カラムドライバ３００にとって単にメモリセルのアドレスが異なるに過ぎない。このため、ブロック分割は、カラムドライバ３００に入力されるアドレスに応じて、例示した以外の態様（ブロックの大きさや数）に変更可能である。
【００４８】
［メモリブロックの構成例］
図４は、第１の実施の形態におけるメモリブロック２６１の一構成例を示す回路図である。このメモリブロック２６１は、１６行、１６列に配列された１６×１６個のメモリセル２６２を備える。メモリセル２６２のそれぞれは、アクセストランジスタ２６３および可変セル抵抗２６４を備える。
【００４９】
アクセストランジスタ２６３は、カラムドライバ３００によるメモリセル２６２へのアクセスを制御するためのトランジスタである。このアクセストランジスタ２６３は、半導体基板に形成され、ソース電極およびドレイン電極を構成する２つの不純物領域を有する。これらの不純物領域の基板領域上にゲート絶縁膜を介在させてポリシリコン等からなるゲート電極が形成される。ゲート電極はワード線ＷＬに接続され、ソース電極およびドレイン電極のうちの一方がビット線ＢＬに接続され、他方が可変セル抵抗２６４に接続される。ロウアドレスに対応するワード線ＷＬにハイレベルの電圧が印加されると、そのワード線に接続されたアクセストランジスタ２６３がオン状態となる。そして、カラムドライバ３００は、オン状態のアクセストランジスタ２６３を介して、可変セル抵抗２６４にアクセスすることができる。
【００５０】
可変セル抵抗２６４は、プレート線ＰＬとビット線ＢＬとにそれぞれ印加される電圧により抵抗値を変化させる抵抗である。この可変セル抵抗２６４は、下部電極と上部電極と、それらの電極間に挟まれた絶縁膜および導体膜とを備える。下部電極は、アクセストランジスタ２６３に接続され、上部電極はプレート線ＰＬに接続される。
【００５１】
絶縁体膜の材料としては、例えば、ＳｉＮ、ＳｉＯ２およびＧｄ２Ｏ３等の絶縁体が挙げられる。導体膜の材料としては、例えば、Ｃｕ、ＡｇおよびＡｌの中からから選ばれる一つ以上の金属元素を含有する金属膜、合金膜（例えばＣｕＴｅ合金膜）、金属化合物膜等が挙げられる。なお、イオン化しやすい性質を有するならば、Ｃｕ、ＡｇおよびＡｌ以外の金属元素を用いてもよい。導体膜は、「導電性イオンの供給層」として形成されている。
【００５２】
例えば、ビット線ＢＬの電圧よりプレート線ＰＬの電圧を一定電圧以上高くすると、可変セル抵抗２６４の導体膜に含まれるＣｕ、ＡｇおよびＡｌが、イオン化して陰極側に引き寄せられる性質を持つようになる。そして、これら金属の導電性イオンが絶縁体膜に注入される。このため、絶縁体膜の絶縁性が低下し、その低下とともに導電性を持つようになる。このように抵抗値が低い状態を、例えば、「１」の値を保持する状態とする。
【００５３】
一方、プレート線ＰＬよりビット線ＢＬの電圧を一定電圧以上高くすると、絶縁体膜に注入されていた導電性イオンが導体膜に戻され、抵抗値が高い状態となる。このように抵抗値が高い状態を、例えば「０」の値を保持する状態とする。なお、抵抗値が低い状態を「０」の値を保持する状態とし、抵抗値が高い状態を「１」の値を保持する状態と定義してもよい。
【００５４】
［カラムドライバの構成例］
図５は、第１の実施の形態におけるカラムドライバ３００の一構成例を示すブロック図である。このカラムドライバ３００は、リトライ抑止部３１０、センスアンプユニット３２０、ドライバ制御部３３０、検証部３４０、および、ライトドライバユニット３５０を備える。
【００５５】
センスアンプユニット３２０は、アクセス先のメモリセルに接続されたビット線ＢＬの電圧を増幅するものである。このセンスアンプユニット３２０は、リトライ抑止部３１０を介してビット線ＢＬの電圧を検出して増幅する。センスアンプユニット３２０は、増幅した電圧の示すデータをリードデータとしてドライバ制御部３３０および検証部３４０に信号線３２９を介して供給する。
【００５６】
センスアンプユニット３２０は、メモリブロックごとに少なくとも１つのセンスアンプを有する。例えば、センスアンプユニット３２０は、列ごとにセンスアンプを備える。なお、列ごとにセンスアンプを備えると、回路規模が大きくなるため、センスアンプユニット３２０は、メモリブロックごとに１つのセンスアンプを備える構成としてもよい。この場合、センスアンプの接続先のビット線を切り替えるスイッチをカラムドライバ３００内に設け、ドライバ制御部３３０などが、そのスイッチを制御する構成とする。
【００５７】
ドライバ制御部３３０は、ライトドライバユニット３５０を制御してメモリセルをセットまたはリセットさせるものである。このドライバ制御部３３０は、書換制御部２１０からリセットまたはセットを指示する制御信号とイネーブル信号ＥＮ_１乃至ＥＮ_１６とを受け取る。このイネーブル信号ＥＮ_Ｋ（Ｋは、１乃至１６の整数）は、メモリブロック＃Ｋ内のメモリセルを一括してリセットまたはセットするタイミングを示す信号である。
【００５８】
制御信号によりセットが指示されると、ドライバ制御部３３０は、センスアンプユニット３２０を介してメモリセルからリードデータをプレリードデータとして読み出し、データ入出力回路２３０からライトデータを読み出して、これらをビット単位で比較する。ドライバ制御部３３０は、比較結果からリセットマスクデータＲＭ［１］乃至［２５６］を生成してライトドライバユニット３５０に供給する。リセットマスクデータは、ライトデータにおいてリセットされ、かつ、プレリードデータにおいてセットされているビットについてはリセットする旨を示し、それ以外のビットについてはマスクする旨を示す。例えば、リセットマスクデータには、リセット対象のビットである場合に「０」が設定され、そうでない場合に「１」が設定される。
【００５９】
また、イネーブル信号ＥＮ_１乃至ＥＮ_１６により全てのメモリブロックがリセットされると、ドライバ制御部３３０は、プレリードデータにおいてセットされているビットに対応するビットをライトデータにおいてセットする。ドライバ制御部３３０は、このライトデータをライトデータＷＤ［１］乃至［２５６］として検証部３４０に信号線３３８を介して供給する。
【００６０】
一方、セットが指示されると、ドライバ制御部３３０はプレリードデータおよびライトデータをビット単位で比較する。ドライバ制御部３３０は、比較結果からセットマスクデータＳＭ［１］乃至［２５６］を生成してライトドライバユニットに供給する。セットマスクデータは、ライトデータにおいてセットされ、かつ、プレリードデータにおいてリセットされているビットについてはセットする旨を示し、それ以外のビットについてはマスクする旨を示す。例えば、セットマスクデータには、セット対象のビットである場合に「１」が設定され、そうでない場合に「０」が設定される。図５において、マスクデータＭ［１］乃至［２５６］は、リセットマスクデータＲＭ［１］乃至［２５６］およびセットマスクデータＳＭ［１］乃至［２５６］を含む。
【００６１】
また、全てのメモリブロックがセットされると、ドライバ制御部３３０は、データ入出力回路２３０から取得したライトデータＷＤ［１］乃至［２５６］を検証部３４０に信号線３３８を介して供給する。
【００６２】
ライトドライバユニット３５０は、書換制御部２１０およびドライバ制御部３３０の制御に従って、メモリセルをセットまたはリセットするものである。このライトドライバユニット３５０は、リセットまたはセットを指示する制御信号とイネーブル信号ＥＮ_１乃至ＥＮ_１６とを書換制御部２１０から受け取る。
【００６３】
制御信号によりリセットが指示されると、イネーブル信号ＥＮ_１乃至ＥＮ_１６のそれぞれは、順に、一定期間の間、ローレベルに設定される。ライトドライバユニット３５０は、イネーブル信号ＥＮ_Ｋがローレベルに設定されたときに、メモリブロック＃Ｋ内の全てのメモリセルをリセットする。これにより、メモリブロック＃１乃至＃１６が順にリセットされる。
【００６４】
一方、制御信号によりセットが指示されると、イネーブル信号ＥＮ_１乃至ＥＮ_１６のそれぞれは、順に、一定期間の間、ハイレベルに設定される。ライトドライバユニット３５０は、イネーブル信号ＥＮ_Ｋがハイレベルに設定されたときに、メモリブロック＃Ｋ内の全てのメモリセルをセットする。これにより、メモリブロック＃１乃至＃１６が順にセットされる。
【００６５】
このように、メモリブロックの単位で順にリセットまたはセットが行われるのは、メモリ制御部４００が一度に供給することができる電流に制限があるためである。
【００６６】
ただし、制御信号により再度リセットが指示されると、イネーブル信号ＥＮ_１乃至ＥＮ_１６は同時にローレベルに設定される。これにより、ライトドライバユニット３５０は、メモリブロック＃１乃至＃１６において所定数のブロックを一括してリセットする。
また、制御信号により再度セットが指示されると、イネーブル信号ＥＮ_１乃至ＥＮ_１６は同時にハイレベルに設定される。これにより、ライトドライバユニット３５０は、メモリブロック＃１乃至＃１６において所定数のブロックを一括してセットする。再度のリセットまたはセットの処理を以下、「リトライ処理」と称する。ここで、再度のセットおよびリセットにおいてライトドライバユニット３５０が一括して指定するメモリブロックの個数は、メモリ制御部４００が一度に供給可能な電流により制限されるが、全てのメモリブロックを一括して指定することが望ましい。全てのメモリブロックを指定すると、一部のメモリブロックを指定する場合よりスループットが向上するためである。以下、ライトドライバユニット３５０は、全てのメモリブロックを一括して指定するものとする。
【００６７】
このように、メモリブロックに対して一括してリトライ処理を行うことにより、順にリトライ処理を行う場合よりも、リトライ処理の時間が短くなり、スループットが向上する。ここで、再度のセットまたはリセットにおいて、メモリブロックが一括してリトライ処理を行っても、一度に書き換えることが許容されるビット数より大きなビット数がリセットまたはセットされる可能性は低い。この理由については後述する。
【００６８】
なお、ライトドライバユニット３５０は、特許請求の範囲に記載のライト処理部の一例である。
【００６９】
検証部３４０は、リセット対象のメモリセルの全てがリセットされたか否かを検証し、セット対象のメモリセルの全てがセットされたか否かを検証するものである。この検証部３４０は、ドライバ制御部３３０からライトデータを受け取ると、センスアンプユニット３２０を介してアクセス先のメモリセルからデータをベリファイリードデータとして読み出す。検証部３４０は、ライトデータとベリファイリードデータとをビット単位で比較する。検証部３４０は、ビットごとに比較した結果から検証結果ＶＦＰ［１］乃至［２５６］を生成してリトライ抑止部３１０に供給する。例えば、ライトデータおよびベリファイリードデータにおいてｋビット目が一致した場合に検証結果ＶＦＰ［ｋ］に「１」の値が設定され、一致しなかった場合に「０」が設定される。ここで、ｋは、１乃至２５６の整数である。
【００７０】
また、検証部３４０は、ライトデータおよびベリファイリードデータの全てのビットが一致したか否かを示す信号を検証結果ＶＦＰＡＬＬとして生成し、書換制御部２１０に供給する。例えば、全てのビットが一致した場合に検証結果ＶＦＰＡＬＬに「１」の値が設定され、いずれかのビットが一致しなかった場合に「０」が設定される。
【００７１】
リトライ抑止部３１０は、ライトデータおよびベリファイリードデータが一致したメモリセル、すなわちセットまたはリセットが成功したメモリセルにおいて、再度のセットまたはリセットを抑止するものである。このリトライ抑止部３１０の構成の詳細については後述する。
【００７２】
このように、リセットが成功したメモリセルにおいて再度のリセットが抑止され、また、リセットが失敗する確率は低いため、再度のリセットが指示された場合に、実際にリセットされるビット数は少ない。例えば、リセットに失敗する確率を仮に５パーセント程度とすると、２５６ビットをリセットした場合、１２または１３ビットがリセットに失敗し、再度リセットされる。再度リセットされるビット数が少ないため、再度のリセットにおいてメモリブロックを一括してリセットしても、一度に書き換えることが許容されるビット数（例えば、「１８」）より大きなビット数がリセットされる可能性は低い。セットについても同様である。
【００７３】
［リトライ抑止部の構成例］
図６は、第１の実施の形態におけるリトライ抑止部３１０の一構成例を示すブロック図である。リトライ抑止部３１０は、ビット線ＢＬごとに、抑止制御トランジスタ３１１を備える。
【００７４】
抑止制御トランジスタ３１１は、セットまたはリセットが成功したメモリセルにおけるリトライ処理を抑止するものである。例えば、ｐＭＯＳトランジスタが、抑止制御トランジスタ３１１として用いられる。抑止制御トランジスタ３１１は、ビット線ＢＬ［ｋ］に挿入され、ゲート電極には、検証結果ＶＦＰ［ｋ］が入力される。検証結果ＶＦＰ［ｋ］の値が「０」である場合には、抑止制御トランジスタ３１１はオン状態となり、ライトドライバユニット３５０は、ビット線ＢＬ［ｋ］を介してのセットまたはリセットを行うことができる。一方、検証結果ＶＦＰ［ｋ］の値が「１」である場合、すなわち書換えに成功した場合には、抑止制御トランジスタ３１１はオフ状態となり、ビット線ＢＬ［ｋ］を介してライトドライバユニット３５０からのデータの供給が遮断される。これにより、リトライ処理が抑止される。
【００７５】
［検証部の構成例］
図７は、第１の実施の形態における検証部３４０の一構成例を示すブロック図である。この検証部３４０は、メモリセルアレイ２６０の列数（例えば、２５６）と同じ数のＮＯＲ（排他的論理和）ゲート３４１と、１つのＡＮＤ（論理積）ゲート３４２とを備える。
【００７６】
ＮＯＲゲート３４１は、入力された値の排他的論理和を出力するものである。このＮＯＲゲート３４１は２つの入力端子を備え、それらのうちの一方には、データ入出力回路２３０からのリードデータＲＤ［ｋ］が入力され、他方にはドライバ制御部３３０からのライトデータＷＤ［ｋ］が入力される。ＮＯＲゲート３４１は、これらの入力値の排他的論理和を検証結果ＶＦＰ［ｋ］としてリトライ抑止部３１０とＡＮＤゲート３４２とに供給する。
【００７７】
ＡＮＤゲート３４２は、入力された値の論理積を出力するものである。このＡＮＤゲート３４２には、ＶＦＰ［１］乃至［２５６］が入力される。ＡＮＤゲート３４２は、これらの入力値の論理積を検証結果ＶＦＰＡＬＬとして書換制御部２１０に供給する。
【００７８】
［ライトドライバユニットの構成例］
図８は、第１の実施の形態におけるライトドライバユニット３５０の一構成例を示すブロック図である。このライトドライバブロック３５１は、メモリセルの列数と同数のライトドライバを有する。これらのライトドライバは、データの書込み単位で複数のライトドライバブロック３５１に分割される。例えば、メモリセルの列数、すなわちライトドライバの個数が２５６個であり、データの書込み単位が１６ビットである場合、これらのライトドライバは、ライトドライバブロック＃１乃至＃１６に分割される。
【００７９】
それぞれのライトドライバブロック３５１は、１６ビットのマスクデータ（リセットマスクデータまたはセットマスクデータ）が入力され、１６本のビット線ＢＬが接続される。また、ライトドライバブロック＃Ｋには、イネーブル信号ＥＮ_Ｋが入力される。
【００８０】
［ライトドライバブロックの構成例］
図９は、第１の実施の形態におけるライトドライバブロック３５１の一構成例を示すブロック図である。このライトドライバブロック３５１は、データの書込み単位のビット数（例えば、「１６」）と同数のライトドライバ３５２を備える。
【００８１】
ライトドライバ３５２は、マスクデータおよびイネーブル信号に従って、メモリセルをリセットまたはセットするものである。このライトドライバ３５２は、書換制御トランジスタ３５３、３５４、３５５、および、３５６を備える。
【００８２】
書換制御トランジスタ３５３は、イネーブル信号に従って、ビット線ＢＬにメモリセルをリセットするための電流を供給するものである。書換制御トランジスタ３５６は、イネーブル信号に従って、ビット線ＢＬにメモリセルをセットするための電流を供給するものである。また、書換制御トランジスタ３５４は、マスクデータに従って、ビット線ＢＬにメモリセルをリセットするための電流を供給するものである。書換制御トランジスタ３５５は、マスクデータに従って、ビット線ＢＬにメモリセルをセットするための電流を供給するものである。
【００８３】
例えば、ｐＭＯＳトランジスタが書換制御トランジスタ３５３および３５４として用いられ、ｎＭＯＳトランジスタが書換制御トランジスタ３５５および３５６として用いられる。
【００８４】
書換制御トランジスタ３５３のソース電極には、ライト電圧Ｖｗが印加され、ドレイン電極は書換制御トランジスタ３５４に接続され、ゲート電極にはイネーブル信号が入力される。書換制御トランジスタ３５４のソース電極は書換制御トランジスタ３５３に接続され、ドレイン電極は書換制御トランジスタ３５５に接続され、ゲート電極にはマスクデータが入力される。
【００８５】
また、書換制御トランジスタ３５５のソース電極は書換制御トランジスタ３５４に接続され、ドレイン電極は書換制御トランジスタ３５６に接続され、ゲート電極にはマスクデータが入力される。書換制御トランジスタ３５６のソース電極は書換制御トランジスタ３５５にされ、ドレイン電極には基準電圧Ｖｓｓが印加され、ゲート電極にはイネーブル信号が入力される。ここで、ライト電圧Ｖｗは、基準電圧Ｖｓｓより大きな電圧である。
【００８６】
この構成により、イネーブル信号およびマスクデータがローレベルである場合には、書換制御トランジスタ３５３および３５４がオンとなる。これにより、ビット線ＢＬにライト電圧Ｖｗが印加され、そのビット線ＢＬに接続されたメモリセルがリセットされる。一方、イネーブル信号およびマスクデータがハイレベルである場合には、書換制御トランジスタ３５５および３５６がオンとなる。これにより、ビット線ＢＬに基準電圧Ｖｓｓが印加され、そのビット線ＢＬに接続されたメモリセルがセットされる。
【００８７】
［メモリ制御部の機能構成例］
図１０は、第１の実施の形態における不揮発性メモリ２００の機能構成例を示すブロック図である。不揮発性メモリ２００は、データ入出力回路２３０、カラムドライバ３００、書換制御部２１０、および、メモリセルアレイ２６０の機能を有する。また、書換制御部２１０は、ライト制御部２１１およびリトライ制御部２１２の機能を有する。カラムドライバ３００は、リトライ抑止部３１０、ドライバ制御部３３０、検証部３４０およびライトドライバユニット３５０の機能を有する。
【００８８】
ライト制御部２１１は、メモリブロック＃１乃至＃１６を順に指定して、ライトドライバユニット３５０にライトデータを書き込ませるものである。このライト制御部２１１は、メモリコントローラ１５０からコマンドを受け取る。コマンドがライトコマンドである場合には、ライト制御部２１１は、制御信号によりドライバ制御部３３０およびライトドライバユニット３５０にリセットを指示する。また、ライト制御部２１１は、イネーブル信号ＥＮ_１乃至ＥＮ_１６により、メモリブロック＃１乃至＃１６を順に指定する。
【００８９】
制御信号によりリセットが指示されると、ドライバ制御部３３０は、メモリセルアレイ２６０からプレリードデータを読み出し、データ入出力回路２３０からライトデータを読み出して、これらをビット単位で比較する。ドライバ制御部３３０は、ドライバ制御部３３０は、比較結果からリセットマスクデータＲＭ［１］乃至［２５６］を生成してライトドライバユニット３５０に供給する。
【００９０】
また、イネーブル信号ＥＮ_１乃至ＥＮ_１６により全てのメモリブロックがリセットされると、ドライバ制御部３３０は、プレリードデータにおいてセットされているビットに対応するビットをセットしたライトデータＷＤ［１］乃至［２５６］を生成する。ドライバ制御部３３０は、このライトデータを検証部３４０に供給する。
【００９１】
制御信号によりセットが指示されると、ライトドライバユニット３５０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６に従って、メモリブロック＃１乃至＃１６に順にアクセスして、リセットマスクデータの示すリセット対象のメモリセルをリセットする。
【００９２】
検証部３４０は、ドライバ制御部３３０からライトデータを受け取ると、メモリセルアレイ２６０からベリファイリードデータを読み出す。検証部３４０は、ライトデータとベリファイリードデータとをビット単位で比較する。検証部３４０は、ビットごとに比較した結果から検証結果ＶＦＰ［１］乃至［２５６］を生成してリトライ抑止部３１０に供給する。
【００９３】
また、検証部３４０は、ライトデータおよびベリファイリードデータの全てのビットが一致したか否かを示す信号を検証結果ＶＦＰＡＬＬとして生成し、リトライ制御部２１２に供給する。
【００９４】
リトライ抑止部３１０は、リセットが成功したメモリセルにおいて、再度のリセットを抑止する。
【００９５】
リトライ制御部２１２は、ライトデータおよびベリファイリードデータのいずれかのビットが一致していない場合に、メモリブロック＃１乃至＃１６を指定してリトライ処理を同時に実行させるものである。このリトライ制御部２１２は、ライトデータおよびベリファイリードデータのいずれかのビットが一致していない場合に、制御信号によりドライバ制御部３３０およびライトドライバユニット３５０にリセットを指示する。また、リトライ制御部２１２は、イネーブル信号ＥＮ_１乃至ＥＮ_１６により、メモリブロック＃１乃至＃１６を一括して指定する。
【００９６】
そして、ドライバ制御部３３０は、リセットマスクデータＲＭ［１］乃至［２５６］をライトドライバユニット３５０に再度供給し、検証部３４０にＷＤ［１］乃至［２５６］を再度供給する。
【００９７】
ライトドライバユニット３５０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６に従って、メモリブロック＃１乃至＃１６を一括して再度リセットする。検証部３４０は、検証結果ＶＦＰ［１］乃至［２５６］をリトライ抑止部３１０に供給し、検証結果ＶＦＰＡＬＬをリトライ制御部２１２に供給する。
【００９８】
そして、ライトデータおよびベリファイリードデータの全てのビットが一致した場合には、ライト制御部２１１は、制御信号によりセットを指示し、イネーブル信号ＥＮ_１乃至ＥＮ_１６により、メモリブロック＃１乃至＃１６を順に指定する。ドライバ制御部３３０、ライトドライバユニット３５０、検証部３４０、リトライ抑止部３１０、および、リトライ制御部２１２は、セット時と同じ要領で動作する。これにより、ライトデータがメモリセルアレイ２６０に書き込まれる。
【００９９】
このように、全メモリブロックに対して一括してリトライ処理を行うことにより、順にリトライ処理を行う場合よりも、リトライ処理の時間が短くなり、スループットが向上する。なお、リセットが成功したメモリセルにおいてリトライ抑止部３１０がリトライ処理を抑止するため、メモリブロックに対して一括してリトライ処理を実行しても、書込み単位より大きなビット数がリセットされる可能性は低い。
【０１００】
図１１は、第１の実施の形態におけるリセット時にメモリセル２６２に印加される電圧の一例を示す図である。イネーブル信号ＥＮ_１およびリセットマスクデータＲＭ［１］がローレベルである場合には、ライトドライバ＃１において、書換制御トランジスタ３５３および３５４がオン状態となる。これにより、ライト電圧Ｖｗがビット線ＢＬ［１］を介してメモリセル２６２に印加される。このライト電圧Ｖｗは、プレート電圧Ｖｐｐよりも一定電圧以上高い電圧であるため、ライトドライバ＃１からメモリセル２６２へ電流が流れ、メモリセル２６２は、「１」に書き換えられてリセットされる。言い換えれば、イネーブル信号ＥＮ_１によりライトドライバブロック３５１全体に対してリセットが指示され、リセットマスクデータＲＭ［１］によりリセット対象のビットが指示された場合に、そのビットがリセットされる。
【０１０１】
一方、イネーブル信号ＥＮ_１またはリセットマスクデータＲＭ［１］がハイレベルである場合には、ライトドライバ＃１において、書換制御トランジスタ３５３または３５４がオフ状態となる。これにより、プレート電圧Ｖｐｐよりも一定電圧以上高いライト電圧Ｖｗが印加されず、ビット線ＢＬ［１］の接続先のメモリセル２６２は書き換えられない。
【０１０２】
図１２は、第１の実施の形態におけるセット時にメモリセル２６２に印加される電圧の一例を示す図である。イネーブル信号ＥＮ_１およびセットマスクデータＳＭ［１］がハイレベルである場合には、ライトドライバ＃１において、書換制御トランジスタ３５５および３５６がオン状態となる。これにより、基準電圧Ｖｓｓがビット線ＢＬ［１］を介してメモリセル２６２に印加される。この基準電圧Ｖｓｓは、プレート電圧Ｖｐｐよりも一定電圧以上低い電圧であるため、メモリセル２６２からライトドライバ＃１へ電流が流れ、メモリセル２６２は、「０」に書き換えられてセットされる。言い換えれば、イネーブル信号ＥＮ_１によりライトドライバブロック３５１全体に対してセットが指示され、セットマスクデータＳＭ［１］によりセット対象のビットが指示された場合に、そのビットがセットされる。
【０１０３】
一方、イネーブル信号ＥＮ_１またはセットマスクデータＳＭ［１］がローレベルである場合には、ライトドライバ＃１において、書換制御トランジスタ３５５または３５６がオフ状態となる。これにより、プレート電圧Ｖｐｐよりも一定電圧以上低い基準電圧Ｖｓｓが印加されず、ビット線ＢＬ［１］の接続先のメモリセル２６２は書き換えられない。
【０１０４】
［不揮発性メモリの動作例］
図１３は、第１の実施の形態におけるライト処理の一例を示すフローチャートである。この動作は、ライトコマンドが不揮発性メモリ２００に入力されたときに開始する。不揮発性メモリ２００は、ライトデータをメモリコントローラ１５０から取得して保持する（ステップＳ９０１）。不揮発性メモリ２００は、ライトコマンドにより指定されたアドレスに書き込まれているデータをプレリードデータとして読み出す（ステップＳ９０２）。不揮発性メモリ２００は、ライトデータとプレリードデータとをビット単位で比較する。
【０１０５】
そして、不揮発性メモリ２００は、比較結果からリセットマスクデータを生成する（ステップＳ９０３）。不揮発性メモリ２００は、リセットマスクデータに基づいてリセット処理を実行する（ステップＳ９１０）。次いで、不揮発性メモリ２００は、ライトデータとプレリードデータとの比較結果から、セットマスクデータを生成する（ステップＳ９０４）。不揮発性メモリ２００は、セットマスクデータに基づいてセット処理を実行する（ステップＳ９２０）。ステップＳ９２０の後、不揮発性メモリ２００は、ライト処理を終了する。
【０１０６】
図１４は、第１の実施の形態におけるリセット処理の一例を示すフローチャートである。不揮発性メモリ２００は、イネーブル信号ＥＮ_１乃至ＥＮ_１６のいずれかをローレベルにすることによりメモリブロック＃１乃至＃１６のいずれかをリセットする（ステップＳ９１１）。不揮発性メモリ２００は、１６ブロックの全てをリセットしたか否かを判断する（ステップＳ９１２）。全てをリセットしていない場合には（ステップＳ９１２：Ｎｏ）、不揮発性メモリ２００はステップＳ９１１に戻る。
【０１０７】
全てのブロックをリセットした場合には（ステップＳ９１２：Ｙｅｓ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６において、ライトデータとベリファイリードデータとをビット単位で比較する。不揮発性メモリ２００は、比較結果から、書換えに成功したか否かをビットごとに検証する（ステップＳ９１３）。不揮発性メモリ２００は、書換えに成功したビットの再度のリセットを抑止する（ステップＳ９１４）。
【０１０８】
不揮発性メモリ２００は、リセット対象の全ビットの書換えに成功したか否かを判断する（ステップＳ９１５）。リセット対象の全ビットの書換えに成功していなければ（ステップＳ９１５：Ｎｏ）、不揮発性メモリ２００は、イネーブル信号ＥＮ_１乃至ＥＮ_１６の全てをローレベルにする。これにより、メモリブロック＃１乃至＃１６が一括して再度リセットされる（ステップＳ９１８）。ステップＳ９１８の後、不揮発性メモリ２００は、ステップＳ９１３に戻る。
【０１０９】
一方、リセット対象の全ビットの書換えに成功した場合には（ステップＳ９１５：Ｙｅｓ）、不揮発性メモリ２００は、リセット処理を終了する。
【０１１０】
図１５は、第１の実施の形態におけるセット処理の一例を示すフローチャートである。不揮発性メモリ２００は、イネーブル信号ＥＮ_１乃至ＥＮ_１６のいずれかをハイレベルにすることによりメモリブロック＃１乃至＃１６のいずれかをセットする（ステップＳ９２１）。不揮発性メモリ２００は、１６ブロックの全てをセットしたか否かを判断する（ステップＳ９２２）。全てセットしていない場合には（ステップＳ９２２：Ｎｏ）、不揮発性メモリ２００はステップＳ９２１に戻る。
【０１１１】
全てのブロックをセットした場合には（ステップＳ９２２：Ｙｅｓ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６において、ライトデータとベリファイリードデータとをビット単位で比較する。不揮発性メモリ２００は、比較結果から、書換えに成功したか否かをビットごとに検証する（ステップＳ９２３）。不揮発性メモリ２００は、書換えに成功したビットの再度のセットを抑止する（ステップＳ９２４）。
【０１１２】
不揮発性メモリ２００は、セット対象の全ビットの書換えに成功したか否かを判断する（ステップＳ９２５）。セット対象の全ビットの書換えに成功していなければ（ステップＳ９２５：Ｎｏ）、不揮発性メモリ２００は、イネーブル信号ＥＮ_１乃至ＥＮ_１６の全てをハイレベルにする。これによりメモリブロック＃１乃至＃１６が一括して再度セットされる（ステップＳ９２８）。ステップＳ９２８の後、不揮発性メモリ２００は、ステップＳ９２３に戻る。
【０１１３】
一方、セット対象の全ビットの書換えに成功した場合には（ステップＳ９２５：Ｙｅｓ）、不揮発性メモリ２００は、セット処理を終了する。
【０１１４】
図１６は、第１の実施の形態におけるリセット時の不揮発性メモリ２００の動作の一例を示すタイミングチャートである。不揮発性メモリ２００における書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６を順に一定期間ローレベルにする。これにより、メモリブロック＃１乃至１６が順にリセットされる。
【０１１５】
不揮発性メモリ２００におけるドライバ制御部３３０は、リセット対象のビットをローレベルにしたリセットマスクデータＲＭ［１］乃至［２５６］を生成する。これにより、リセット対象のメモリセルがリセットされる。
【０１１６】
全てのメモリブロックがリセットされると、不揮発性メモリ２００における検証部３４０は、リセットが成功したか否かを全ビットについて検証し、リセットが成功したビットをハイレベルにした検証結果ＶＦＰ［１］乃至［２５６］を生成する。これにより、リセットに成功したメモリセルに対する再度のリセットが抑止される。また、検証部３４０は、リセット対象の全てのビットのリセットに成功したか否かを示す検証結果ＶＦＰＡＬＬを生成する。
【０１１７】
ＶＦＰＡＬＬがローレベル、すなわちリセット対象の全ビットのリセットに成功していない場合には、書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６を同時にローレベルにする。これにより、メモリブロック＃１乃至＃１６が一括して再度リセットされる。
【０１１８】
図１７は、第１の実施の形態におけるセット時の不揮発性メモリ２００の動作の一例を示すタイミングチャートである。不揮発性メモリ２００における書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６を順に一定期間ハイレベルにする。これにより、メモリブロック＃１乃至１６が順にセットされる。
【０１１９】
不揮発性メモリ２００におけるドライバ制御部３３０は、セット対象のビットをハイレベルにしたセットマスクデータＳＭ［１］乃至［２５６］を生成する。これにより、セット対象のメモリセルがセットされる。
【０１２０】
全てのメモリブロックがリセットされると、不揮発性メモリ２００における検証部３４０は、セットが成功したか否かを全ビットについて検証し、セットが成功したビットをハイレベルにした検証結果ＶＦＰ［１］乃［２５６］を生成する。これにより、セットに成功したメモリセルに対する再度のセットが抑止される。また、検証部３４０は、セット対象の全てのビットのセットに成功したか否かを示す検証結果ＶＦＰＡＬＬを生成する。
【０１２１】
ＶＦＰＡＬＬがローレベル、すなわちセット対象の全ビットのセットに成功していない場合には、書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６を同時にハイレベルにする。これにより、メモリブロック＃１乃至＃１６が一括して再度セットされる。
【０１２２】
このように、第１の実施の形態によれば、ライトデータの再度の書込みにおいて、メモリ制御部４００が所定数のメモリブロックを指定して同時にライトデータを書き込むため、再度の書込みにおいて順に書き込む場合よりもスループットが向上する。なお、書込みに成功したビットにおいて再度の書込みが抑止され、また、書込みが失敗する確率は低いため、再度の書込みにおいて、実際に書込みが実行されるビット数は少ない。このため、書込み単位より大きなビット数が書き込まれる可能性は低い。
【０１２３】
［変形例］
第１の実施の形態においては、メモリ制御部４００がメモリブロックの全てに対して一括してリトライを行う構成を例示していたが、一部のメモリブロックに対して一括してリトライを行ってもよい。書込みを行うメモリセルアレイ２６０内のメモリセル数が多くなると、それらの全てに対して一括してリトライを行うことが困難になることがあるためである。例えば、第１の実施の形態に例示した構成と比較してメモリセルアレイ２６０のメモリセル数が２倍（５１２ビット）であり、１６ビットごとに３２個のメモリブロックに分割してデータを書き込む場合を考える。書込みが失敗する確率が第１の実施の形態と同等であるとすると、３２個のメモリブロックに対して一括してリトライを行ったときに、書込み単位より大きなビット数が書き込まれる可能性がある。この場合には、メモリ制御部４００は、１６メモリブロックごとに一括してリトライを行えばよい。変形例のメモリ制御部４００は、メモリブロックの一部を指定してリトライ処理を実行する点において第１の実施の形態と異なる。
【０１２４】
図１８は、第１の実施の形態の変形例におけるリセット時の不揮発性メモリ２００の動作の一例を示すタイミングチャートである。書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_３２を順に一定期間ローレベルにして、３２個のメモリブロックを順にリセットする。
【０１２５】
ドライバ制御部３３０は、リセット対象のビットをローレベルにしたリセットマスクデータＲＭ［１］乃至［５１２］を生成する。これにより、リセット対象のメモリセルがリセットされる。
【０１２６】
３２個の全メモリブロックがリセットされると、検証部３４０は、リセットが成功したか否かを全ビットについて検証し、リセットが成功したビットをハイレベルにした検証結果ＶＦＰ［１］乃至［５１２］を生成する。また、検証部３４０は、リセット対象の全てのビットのリセットに成功したか否かを示す検証結果ＶＦＰＡＬＬを生成する。
【０１２７】
ＶＦＰＡＬＬがローレベル、すなわちリセット対象の全ビットのリセットに成功していない場合には、書換制御部２１０は、イネーブル信号ＥＮ_１乃至ＥＮ_１６を同時にローレベルにして、３２個のうち１６個のメモリブロックを一括して再度リセットする。次いで、書換制御部２１０は、イネーブル信号ＥＮ_１７乃至ＥＮ_３２を同時にローレベルにして、残りのメモリブロックを一括して再度リセットする。セット処理についても同様にメモリブロクの一部が一括してセットされる。
【０１２８】
このように、変形例によれば、メモリセルアレイ２６０のメモリセル数に関らず、スループットを向上させることができる。
【０１２９】
＜２．第２の実施の形態＞
［カラムドライバの構成例］
図１９は、第２の実施の形態におけるカラムドライバ３００の一構成例を示すブロック図である。第１の実施の形態においては、書込みに失敗するビット数は、書込み単位より少ないとの想定の下に、リトライ処理において所定数のメモリブロックに一括してライトデータを書き込んでいた。しかし、書込みに失敗する確率が比較的高いと、書込みに失敗するビット数が書込み単位以上となることもありうる。第２の実施の形態の不揮発性メモリ２００は、書込みに失敗したビット数を計数して所定の閾値未満である場合にのみ、所定数のメモリブロックに一括してライトデータを書き込む点において第１の実施の形態と異なる。
【０１３０】
第２の実施の形態のカラムドライバ３００において、検証部３４０は、書込みに失敗したビット数を計数する。検証部３４０は、その計数値を失敗ビット数ＣＮＴとして書換制御部２１０に供給する。第２の実施の形態の書換制御部２１０は、失敗ビット数ＣＮＴが書込み単位未満である場合に、所定数のメモリブロックに一括してリトライ処理を実行するように指示する。一方、失敗ビット数ＣＮＴが閾値未満でない場合には、書換制御部２１０は、メモリブロック＃１乃至１６に対して順にリトライ処理を実行するように指示する。ここで、閾値は、一度に書き換えることが許容されるビット数以下の値（例えば、「１６」）に設定される。
【０１３１】
［検証部の構成例］
図２０は、第２の実施の形態における検証部３４０の一構成例を示すブロック図である。第２の実施の形態の検証部３４０は、失敗ビットカウンタ３４３をさらに備える。ＮＯＲゲート３４１は、検証結果ＶＦＰ［１］乃至［２５６］を失敗ビットカウンタ３４３にさらに供給する。
【０１３２】
失敗ビットカウンタ３４３は、書込みに失敗したビット数を計数するものである。この失敗ビットカウンタ３４３は、検証結果ＶＦＰ［１］乃至［２５６］のうち「０」の値の個数を計数して、その計数値を失敗ビット数ＣＮＴとして書換制御部２１０に供給する。
【０１３３】
［不揮発性メモリの動作例］
図２１は、第２の実施の形態におけるリセット処理の一例を示すフローチャートである。第２の実施の形態のリセット処理は、ステップＳ９１６、Ｓ９１７、および、Ｓ９１９をさらに実行する点において第１の実施の形態と異なる。リセット対象の全ビットの書換えに成功していない場合には（ステップＳ９１５：Ｎｏ）、不揮発性メモリ２００は、書込みに失敗したビット数を計数する（ステップＳ９１６）。そして、不揮発性メモリ２００は、失敗ビット数ＣＮＴが閾値未満であるか否かを判断する（ステップＳ９１７）。
【０１３４】
失敗ビット数ＣＮＴが閾値未満である場合には（ステップＳ９１７：Ｙｅｓ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６を一括して再度リセットする（ステップＳ９１８）。一方、失敗ビット数ＣＮＴが閾値未満でない場合には（ステップＳ９１７：Ｎｏ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６をブロックごとに再度リセットする（ステップＳ９１９）。ステップＳ９１８またはＳ９１９の後、不揮発性メモリ２００は、ステップＳ９１３に戻る。
【０１３５】
図２２は、第２の実施の形態におけるセット処理の一例を示すフローチャートである。第２の実施の形態のセット処理は、ステップＳ９２６、Ｓ９２７、および、Ｓ９２９をさらに実行する点において第１の実施の形態と異なる。セット対象の全ビットの書換えに成功していない場合には（ステップＳ９２５：Ｎｏ）、不揮発性メモリ２００は、書込みに失敗したビット数を計数する（ステップＳ９２６）。そして、不揮発性メモリ２００は、失敗ビット数ＣＮＴが閾値未満であるか否かを判断する（ステップＳ９２７）。
【０１３６】
失敗ビット数ＣＮＴが閾値未満である場合には（ステップＳ９２７：Ｙｅｓ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６を一括して再度セットする（ステップＳ９２８）。一方、失敗ビット数ＣＮＴが閾値未満でない場合には（ステップＳ９２７：Ｎｏ）、不揮発性メモリ２００は、メモリブロック＃１乃至＃１６をブロックごとに再度セットする（ステップＳ９２９）。ステップＳ９２８またはＳ９２９の後、不揮発性メモリ２００は、ステップＳ９２３に戻る。
【０１３７】
このように、本技術の第２の実施の形態によれば、不揮発性メモリ２００は、失敗ビット数が閾値未満であれば、所定数のメモリブロックに一括してライトデータを書き込むことができる。このため、リトライのビット数を閾値未満に抑止しつつ、スループットを向上させることができる。
【０１３８】
なお、上述の実施の形態は本技術を具現化するための一例を示したものであり、実施の形態における事項と、特許請求の範囲における発明特定事項とはそれぞれ対応関係を有する。同様に、特許請求の範囲における発明特定事項と、これと同一名称を付した本技術の実施の形態における事項とはそれぞれ対応関係を有する。ただし、本技術は実施の形態に限定されるものではなく、その要旨を逸脱しない範囲において実施の形態に種々の変形を施すことにより具現化することができる。
【０１３９】
なお、本技術は以下のような構成もとることができる。
（１）複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、
前記指定されたメモリブロックにライトデータを書き込むライト処理部と、
前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証部と、
前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、
前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させるリトライ制御部と
を具備する記憶制御装置。
（２）前記ベリファイ部は、前記リードデータが前記ライトデータと一致するか否かを検証するとともに前記リードデータが前記ライトデータと一致しない前記メモリセルの数を失敗ビット数として計数し、
前記リトライ制御部は、前記失敗ビット数が１より多く、かつ、当該失敗ビット数が所定の閾値未満である場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させる
前記（１）記載の記憶制御装置。
（３）前記リトライ制御部は、前記失敗ビット数が前記所定の閾値未満でない場合には前記複数のメモリセルを前記メモリブロックごとに順に指定して前記リトライ処理を実行させる
前記（２）記載の記憶制御装置。
（４）前記所定の閾値は、前記ライト処理部が同時に前記ライトデータを書き込むことが許容されるメモリセルの個数を超えない値である
前記（２）または（３）記載の記憶制御装置。
（５）前記ライト処理部は、前記指定されたメモリブロック内のメモリセルの各々に前記ライトデータを供給することにより前記ライトデータを書込み、
前記リトライ抑止部は、前記リードデータが前記ライトデータと一致したメモリセルへの前記データの供給を遮断することにより前記リトライ処理の実行を抑止する
前記（１）乃至（４）のいずれかに記載の記憶制御装置。
（６）前記リトライ制御部は、前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックの全てを指定して前記リトライ処理を同時に実行させる
前記（１）乃至（５）のいずれかに記載の記憶制御装置。
（７）複数のメモリセルと、
前記複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御部と、
前記指定されたメモリブロックにライトデータを書き込むライト処理部と、
前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証部と、
前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止部と、
前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックの少なくとも一部のメモリブロックを指定して前記リトライ処理を同時に実行させるリトライ制御部と
を具備する不揮発性メモリ。
（８）ライト制御部が、複数のメモリセルにおけるデータの書込み単位であるメモリブロックを順に指定するライト制御手順と、
ライト処理部が、前記指定されたメモリブロックにライトデータを書き込むライト処理手順と、
検証部が、前記ライトデータが書き込まれた前記メモリブロックからリードデータを読み出して当該リードデータが前記ライトデータと一致するか否かを前記複数のメモリセルの各々において検証する検証手順と、
リトライ抑止部が、前記ライトデータを再度書き込むリトライ処理の実行を前記複数のメモリセルのうち前記リードデータが前記ライトデータと一致したメモリセルにおいて抑止するリトライ抑止手順と、
リトライ制御部が、前記ライトデータの全てが書き込まれた前記複数のメモリセルのいずれかにおいて前記リードデータと前記ライトデータとが一致しない場合には複数の前記メモリブロックにおいて少なくとも一部のメモリブロッククを指定して前記リトライ処理を同時に実行させるリトライ制御手順と
を具備するメモリ制御方法。
【符号の説明】
【０１４０】
１００  ホストコンピュータ
１５０  メモリコントローラ
２００  不揮発性メモリ
２１０  書換制御部
２１１  ライト制御部
２１２  リトライ制御部
２２０  アドレス回路
２３０  データ入出力回路
２４０  ロウドライバ
２５０  プレートドライバ
２６０  メモリセルアレイ
２６１  メモリブロック
２６２  メモリセル
２６３  アクセストランジスタ
２６４  可変セル抵抗
２７０  ロウデコーダ
２８０  カラムデコーダ
３００  カラムドライバ
３１０  リトライ抑止部
３１１  抑止制御トランジスタ
３２０  センスアンプユニット
３３０  ドライバ制御部
３４０  検証部
３４１  ＮＯＲゲート
３４２  ＡＮＤゲート
３４３  失敗ビットカウンタ
３５０  ライトドライバユニット
３５１  ライトドライバブロック
３５２  ライトドライバ
３５３、３５４、３５５、３５６  書換制御トランジスタ
４００  メモリ制御部
【図１】
2014041683.tif 000003
【図２】
2014041683.tif 000004
【図３】
2014041683.tif 000005
【図４】
2014041683.tif 000006
【図５】
2014041683.tif 000007
【図６】
2014041683.tif 000008
【図７】
2014041683.tif 000009
【図８】
2014041683.tif 000010
【図９】
2014041683.tif 000011
【図１０】
2014041683.tif 000012
【図１１】
2014041683.tif 000013
【図１２】
2014041683.tif 000014
【図１３】
2014041683.tif 000015
【図１４】
2014041683.tif 000016
【図１５】
2014041683.tif 000017
【図１６】
2014041683.tif 000018
【図１７】
2014041683.tif 000019
【図１８】
2014041683.tif 000020
【図１９】
2014041683.tif 000021
【図２０】
2014041683.tif 000022
【図２１】
2014041683.tif 000023
【図２２】
2014041683.tif 000024