(57)【要約】【課題】不揮発性メモリにおいて将来的にデータリテンション特性に問題が発生する可能性が高い書き込み領域を実データ書き込み時に特定する。【解決手段】メモリ書き込み制御装置は、特定の型格の不揮発性メモリ装置に対して計測された書き込み動作にかかる総消費電流の分布に応じたデータを格納したデータ格納領域と、型格と同一の型格の不揮発性メモリ装置のメモリ領域に対する書き込み動作時に当該不揮発性メモリ装置に電源から流れる書き込み動作にかかる総消費電流値が、分布において総消費電流の大きい側にずれている度合をデータに基づいて評価することにより、メモリ領域の良否を判定する制御装置とを含む。【選択図】図１
2020030872.tif 000002
【特許請求の範囲】
【請求項１】
特定の型格の不揮発性メモリ装置に対して計測された書き込み動作にかかる総消費電流の分布に応じたデータを格納したデータ格納領域と、
前記型格と同一の型格の不揮発性メモリ装置のメモリ領域に対する書き込み動作時に当該不揮発性メモリ装置に電源から流れる書き込み動作にかかる総消費電流値が、前記分布において総消費電流の大きい側にずれている度合を前記データに基づいて評価することにより、前記メモリ領域の良否を判定する制御装置と
を含むメモリ書き込み制御装置。
【請求項２】
前記データはデータリテンション特性の劣化に関して許容可能な総消費電流の最大値を示すデータであり、前記制御装置は、前記測定された総消費電流値が前記最大値よりも大きい場合に前記メモリ領域が不良であると判定する請求項１記載のメモリ書き込み制御装置。
【請求項３】
前記最大値は前記同一の型格の不揮発性メモリ装置の用途に応じて異なる値である請求項２記載のメモリ書き込み制御装置。
【請求項４】
前記制御装置は、前記メモリ領域が不良であると判定すると、不良であることを示す信号を外部に送出する請求項１乃至３いずれか一項記載のメモリ書き込み制御装置。
【請求項５】
特定の型格の不揮発性メモリ装置に対して予め計測された書き込み動作にかかる総消費電流の分布に応じたデータをデータ格納領域から参照し、
前記型格と同一の型格の不揮発性メモリ装置のメモリ領域に対する書き込み動作時に当該不揮発性メモリ装置に電源から流れる書き込み動作にかかる総消費電流値を測定し、
前記測定された総消費電流値が、前記分布において総消費電流の大きい側にずれている度合を前記データに基づいて評価することにより、前記メモリ領域の良否を判定する
各段階を含む不揮発性メモリの不良判定方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本願開示は、メモリ書き込み制御装置及び不揮発性メモリの不良判定方法に関する。
【背景技術】
【０００２】
不揮発性メモリにはフラッシュメモリ、強誘電体メモリ、磁気抵抗変化メモリ等の様々な種類が存在する。フラッシュメモリには、大別してＮＡＮＤ型とＮＯＲ型とがある。ＮＡＮＤ型はその構造上集積度を上げやすいため、一般に、大容量を必要とするＳＳＤ（Solid State Drive）等に代表されるストレージ機器等で使用される。一方、ＮＯＲ型は、ＢＩＯＳ（Basic Input Output System）格納用、ログ格納用、ＦＰＧＡ（Field Programmable Gate Array）のコンフィギュレーションデータ格納用等に用いられる。
【０００３】
ＮＡＮＤ型を使用したＳＳＤの場合、内蔵されているＳＳＤコントローラによって運用中の信頼性が担保されている。一方、ＮＯＲ型は単体で使用することが殆どであり、メモリ装置にエラー訂正機能を備えたものも存在しているが、運用中に論理反転等の障害が発生することがある。
【０００４】
フラッシュメモリにおいては、コントロールゲートの寸法、ソース及びドレイン領域の不純物濃度のバラツキ、フローティングゲートや絶縁層の製造不良等によって、メモリセル毎に書き込み時間の長さが大きく変動する。そのため出荷試験の過程において、書き込み電圧を書き込み単位毎（ビット毎、ワード毎、ブロック毎等）に調整して、出荷するメモリ装置の書き込み時間の長さを所定の規定範囲内に収束させている。
【０００５】
元々の製造バラツキが小さいメモリセルについては、書き込み時間の長さが最初から規定範囲内に収まっているために調整不要であるか、或いは書き込み電圧の小規模な調整により書き込み時間の長さを規定範囲内に収めるように調整可能である。また元々の製造バラツキが中程度の大きさのメモリセルについては、書き込み電圧をある程度大きく調整することにより、書き込み時間の長さを規定範囲内に収めることが可能である。
【０００６】
元々の製造バラツキが非常に大きいメモリセルについては、規定範囲内に収まるように書き込み時間の長さを調整することができず、不良セル扱いとなる。そのようなメモリセルに対応するアドレスについては、冗長処理により予備のメモリセルで置き換える等の処理により救済することが可能である。不良セルの数が救済できない程に多い場合には、メモリ装置自体が不良品として破棄されることになる。
【０００７】
フラッシュメモリにおけるメモリセルの構成要素である絶縁層は、書き込み動作時及び消去動作時に高電圧が印加されることにより劣化が進む。絶縁層の劣化が進むと、メモリセルのデータリテンション特性が劣化する。その結果、時間経過と共にフローティングゲート内に蓄積された電荷が放電し、記憶されたデータが失われてしまう可能性がある。
【０００８】
上記の規定範囲内に収まっているメモリセルであっても、書き込み電圧を高くするように電圧調整した書き込み領域のメモリセルの場合は、平均的な書き込み電圧よりも高い書き込み電圧が書き込み動作毎に印加されることになる。従って、このようなメモリセルの場合には、平均的なメモリセルの場合よりも速い速度で絶縁層が劣化する。特に、大きく電圧調整した書き込み領域においては、平均的な書き込み電圧よりもかなり高い書き込み電圧が印加されることになり、将来的にデータリテンション特性に問題が発生する可能性が高いという問題がある。
【０００９】
上記のように将来的にデータリテンション特性に問題が発生するメモリセルを含むメモリ装置であっても、全てのメモリセルの書き込み時間の長さが所定の規定範囲内に収まっている場合、メモリメーカからは良品として出荷される。このようなメモリ装置においてデータリテンション特性の問題が顕在化するのは、セットメーカ（メモリ装置等の部品を購入して製品を製造し最終消費者に販売する製造業者）がその部品を装置に組み込んだ後であって、最終消費者での実運用中となる。セットメーカにとっては、将来的に問題が発生する可能性が高いメモリ装置が、市場に出荷する製品に実装されていることは好ましくない。
【先行技術文献】
【特許文献】
【００１０】
【特許文献１】特開２００１−１３２００号公報
【特許文献２】特開２００６−２５２３６１号公報
【発明の概要】
【発明が解決しようとする課題】
【００１１】
以上を鑑みると、不揮発性メモリにおいて将来的にデータリテンション特性に問題が発生する可能性が高い書き込み領域を実データ書き込み時に特定できることが望ましい。
【課題を解決するための手段】
【００１２】
メモリ書き込み制御装置は、特定の型格の不揮発性メモリ装置に対して計測された書き込み動作にかかる総消費電流の分布に応じたデータを格納したデータ格納領域と、前記型格と同一の型格の不揮発性メモリ装置のメモリ領域に対する書き込み動作時に当該不揮発性メモリ装置に電源から流れる書き込み動作にかかる総消費電流値が、前記分布において総消費電流の大きい側にずれている度合を前記データに基づいて評価することにより、前記メモリ領域の良否を判定する制御装置とを含む。
【発明の効果】
【００１３】
少なくとも１つの実施例によれば、不揮発性メモリにおいて将来的にデータリテンション特性に問題が発生する可能性が高い書き込み領域を実データ書き込み時に特定できる。
【図面の簡単な説明】
【００１４】
【図１】メモリ書き込み制御装置の構成の一例を示す図である。
【図２】書き込み動作時にメモリセルに流れる電流及びメモリセルの閾値の変化を示す図である。
【図３】総消費電流の分布の一例を示す図である。
【図４】総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。
【図５】メモリ装置の複数の異なる型格と各型格で利用可能な複数種類の書き込み命令とを示す表である。
【図６】複数種類の書き込み命令が設けられている場合におけるデータ書き込み装置の処理を説明するための図である。
【図７】実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。
【図８】メモリ書き込み制御装置の構成の別の一例を示す図である。
【図９】図８に示すメモリ書き込み制御装置により総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。
【図１０】実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。
【図１１】メモリ書き込み制御装置の構成の更に別の一例を示す図である。
【図１２】図１１に示されるメモリ書き込み制御装置が実行する総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。
【図１３】実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。
【図１４】実データ書き込み時に計測した総消費電流の分布の一例を示す図である。
【図１５】実データ書き込み時に計測した総消費電流の分布の別の一例を示す図である。
【図１６】実データ書き込み時に計測した総消費電流の分布の別の一例を示す図である。
【発明を実施するための形態】
【００１５】
以下に、本発明の実施例を添付の図面を用いて詳細に説明する。以下の図面において、同一又は対応する構成要素は同一又は対応する番号で参照し、その説明は適宜省略する。
【００１６】
図１は、メモリ書き込み制御装置の構成の一例を示す図である。図１及び以降の同様の図において、各ボックスで示される各回路又は機能ブロックと他の回路又は機能ブロックとの境界は、基本的には機能的な境界を示すものであり、物理的な位置の分離、電気的な信号の分離、制御論理的な分離等に対応するとは限らない。各回路又は機能ブロックは、他のブロックと物理的にある程度分離された１つのハードウェアモジュールであってもよいし、或いは他のブロックと物理的に一体となったハードウェアモジュール中の１つの機能を示したものであってもよい。
【００１７】
図１に示すメモリ書き込み制御装置は、データ書き込み装置１００及び制御装置１０１を含む。データ書き込み装置１００は例えばＲＯＭライタ等であり、メモリコントローラ１０、電流計１２、及び電源１３を含む。電源１３はデータ書き込み装置１００に内蔵されていてもよいし、外付けであってもよい。データ書き込み対象であるフラッシュメモリ１１をデータ書き込み装置１００に取り付け、制御装置１０１を用いてデータ書き込み装置１００を制御することにより、フラッシュメモリ１１に所望のデータを書き込むことができる。メモリコントローラ１０は、アドレス及びコマンド信号線、データ信号線、及びレディ／ビジー信号線等を含む信号線１４を介してフラッシュメモリ１１に接続される。
【００１８】
メモリコントローラ１０は、チップイネーブル、アウトプットイネーブル、ライトイネーブル等の制御信号をフラッシュメモリ１１に供給する。メモリコントローラ１０は更に、書き込み動作又は読み出し動作の対象となるアドレスを示すアドレス信号をフラッシュメモリ１１に供給する。フラッシュメモリ１１は、制御信号に応じて動作し、指定されたアドレスにデータを書き込んだり、指定されたアドレスからデータを読み出したりする。データは、テータ信号線を介してメモリコントローラ１０とフラッシュメモリ１１との間でやり取りされる。
【００１９】
なお一回のデータ書き込み動作又は読み出し動作における書き込み又は読み出しの単位は、特定のビット数又は特定のメモリセル数に限定されない。１つのメモリセルに対してデータを読み書きしてもよいし、例えば１ワード分の複数のメモリセルに対してデータを読み書きしてもよいし、１ブロック分の複数のメモリセルに対してデータを読み書きしてもよい。
【００２０】
フラッシュメモリ１１は、レディ／ビジー信号線を介してレディ／ビジー（ＲＤＹ／ＢＵＳＹ）信号をメモリコントローラ１０に送信する。レディ／ビジー信号は、フラッシュメモリ１１がプログラム動作中又はイレーズ動作中のビジー状態であるか、次の動作を実行可能なレディ状態であるかを示す信号である。レディ／ビジー信号は、第１の論理状態（例えばローレベル）のときにフラッシュメモリ１１がビジー状態であることを示し、第２の論理状態（例えばハイレベル）のときにフラッシュメモリ１１がレディ状態であることを示す。メモリコントローラ１０は、フラッシュメモリ１１に書き込み指示をした後、レディ／ビジー信号線１８のレディ／ビジー信号を監視することにより、書き込み動作の開始及び終了のタイミングを検出することができる。
【００２１】
なおメモリコントローラ１０は、レディ／ビジー信号を監視するのではなく、フラッシュメモリ１１の内部のステータスレジスタを参照することにより、書き込み動作の開始及び終了のタイミングを検出することもできる。フラッシュメモリ１１のステータスレジスタは、書き込み動作中であるか否かを示すビットを含む。このビットは、第１の論理状態（例えばローレベル）のときにフラッシュメモリ１１がビジー状態であることを示し、第２の論理状態（例えばハイレベル）のときにフラッシュメモリ１１がレディ状態であることを示す。メモリコントローラ１０は、フラッシュメモリ１１に書き込み指示をした後、定期的にステータスレジスタの値を読み出して確認することにより、書き込み動作の開始及び終了のタイミングを検出することができる。以下の説明では、レディ／ビジー信号を監視することにより書き込み動作の開始及び終了を検出する場合を例に取り、データ書き込み装置１００の動作を説明する。
【００２２】
メモリコントローラ１０は、コントローラ２０、読み書き制御ブロック２１、及び消費電流計測ブロック２２を含む。コントローラ２０は、全てハードウェアにより実装してもよいし、ソフトウェア（ファームウェア）に基づいて動作するプロセッサとして実装してもよい。
【００２３】
コントローラ２０は、書き込み命令及び読み出し命令等を示す制御信号を制御装置１０１から受け取る。またコントローラ２０は、書き込み動作の対象となる書き込みデータを示すデータ信号、及び書き込み動作又は読み出し動作の対象となるアドレスを示すアドレス信号を、制御装置１０１から受け取る。コントローラ２０は、制御信号が示す命令をデコードし、デコード結果に従って読み書き制御ブロック２１を制御する。コントローラ２０は、書き込みデータを読み書き制御ブロック２１に送り、読み出しデータを読み書き制御ブロック２１から受け取る。
【００２４】
コントローラ２０は、消費電流計測ブロック２２を制御することにより、フラッシュメモリ１１のメモリ領域に対する書き込み動作時に電流計１２の出力に基づいて書き込み動作にかかる総消費電流値を測定する。電流計１２は、例えば電源１３とフラッシュメモリ１１との間に接続された抵抗素子と当該抵抗素子の両端の電圧をデジタル値に変換するＡＤコンバータとを含み、電源１３からフラッシュメモリ１１に流れる消費電流値を示す当該デジタル値を出力してよい。コントローラ２０は、フラッシュメモリ１１からのレディ／ビジー信号に応じて書き込み動作の開始及び終了タイミングを検出し、当該書き込み動作中であることを示す書き込み中フラグを消費電流計測ブロック２２に供給してよい。書き込み中フラグは、書き込み動作期間において第１の値を示し、書き込み動作の期間以外において第２の値を示してよい。
【００２５】
消費電流計測ブロック２２は、書き込み中フラグが示す書き込み動作期間（書き込み動作の開始から終了までの期間）において、電流計１２の出力デジタル値が示す消費電流値を所定のサンプリング間隔で積算してよい。この積算値は、書き込み動作の期間においてフラッシュメモリ１１に流れる消費電流値を積分したものに相当する。サンプリング間隔が細かいほど、正確な消費電流値の積分値を求めることができるが、サンプリング間隔は特定の間隔に限定されない。消費電流計測ブロック２２は、上記積算演算により書き込み動作にかかる総消費電流値を求め、この総消費電流値を示す消費電流データをコントローラ２０に供給してよい。
【００２６】
図２は、書き込み動作時にメモリセルに流れる電流及びメモリセルの閾値の変化を示す図である。メモリセルに書き込み（プログラム）する際には、ゲートにプログラム電圧を印加し、ドレインにプログラム電圧の１／２の電圧を印加し、ソースをグラウンド電位に設定する。またはゲートにプログラム電圧を印加し、ドレイン及びソースをグラウンド電位に設定する。これらの電圧設定により、メモリセルのフローティングゲートに電子が注入され、メモリセルの閾値電圧が上昇する。
【００２７】
図２において、プログラム電圧３１−１を印加することにより、着目メモリセルに対する第１回目の書き込み動作（フローティングゲートへの電子注入動作）が行われる。この書き込み動作によりメモリセルの閾値電圧は電圧曲線３２に示されるように上昇するが、一回の書き込み動作では充分に上昇せず、基準閾値電圧Ｖｔｈよりも低い電圧値となっている。書き込み動作後に実行されるベリファイ動作においては、メモリセルのゲートにベリファイ電圧３４（＝Ｖｔｈ）を印加し、ドレインとソースとの間に電流が流れるか否かを確認する。一回の書き込み動作を実行しただけでは、ドレインとソースとの間に電流が流れ、書き込み動作が完了していないと判断される。
【００２８】
その後徐々に電圧値を上げながら、プログラム電圧３１−２乃至３１−６を印加して第２回目乃至第６回目の書き込み動作を実行すると共に、それぞれのベリファイ動作を実行する。これらの複数回の書き込み動作によりメモリセルの閾値電圧は電圧曲線３２に示されるように上昇していき、第６回目の書き込み動作終了後には充分に上昇して基準閾値電圧Ｖｔｈよりも高い電圧値となる。第６回目の書き込み動作後に実行されるベリファイ動作において、ドレインとソースとの間に電流が流れなくなり、書き込み動作が完了したと判断される。
【００２９】
上記の第１回目乃至第６回目の書き込み動作及びベリファイ動作により、一回の書き込み命令による書き込み動作が終了する。一回の書き込み命令により書き込み動作が実行されるメモリ領域の大きさは命令毎に決まっており、例えばビット単位、バイト単位、ワード単位、ページ単位、セクター単位等の異なる大きさのメモリ領域に対する書き込み命令が用意されている。書き込み単位毎に、上記の書き込み動作及びベリファイ動作が実行される。また前述のように所定の規定時間内に書き込み時間の長さが収まるように、書き込み単位毎に書き込み電圧の大きさが調整される。即ち例えば６回以上の書き込み動作を実行したのでは書き込み時間の長さが規定時間を超えてしまうのであれば、プログラム電圧３０−１乃至３１−６の電圧値を上昇させることにより、６回以内の書き込み動作で書き込みを終了させる。
【００３０】
以上の一回の書き込み命令の実行による書き込み動作時にフラッシュメモリ１１に流れる消費電流が図１２の再下段に示されている。プログラム電圧３１−２乃至３１−６の印加に応じてそれぞれ消費電流３３−１乃至３３−６が流れ、ベリファイ電圧３４の印加に応じて消費電流３５が流れる。また更にバックグラウンド電流（リーク電流等）として若干の電流が常時流れている。
【００３１】
図１に示す消費電流計測ブロック２２は、一回の書き込み命令による書き込み動作期間の開始時から終了時の間において、電流計１２の出力デジタル値が示す消費電流値（図２の最下段に示される消費電流の値）を所定のサンプリング間隔で積算してよい。この積算値が書き込み動作にかかる総消費電流値なる。サンプリング間隔としては、少なくとも消費電流３３−１乃至３３−６及び消費電圧３５がサンプルされ検出される間隔であり、消費電流３３−１乃至３３−６及び消費電流３５のパルス幅よりも充分短い間隔であることが好ましい。
【００３２】
以上の動作により、メモリコントローラ１０のコントローラ２０は、所望の書き込みメモリ領域への書き込み動作にかかる総消費電流値を測定することができる。書き込み電圧が高い程且つ書き込み電圧印加時間が長い程、書き込み動作によるメモリセルの絶縁層の劣化は大きくなる。従って、上記のようにして測定された総消費電流値は、一回の書き込み命令を実行する度に発生する絶縁層の劣化の度合を示す指標となる。
【００３３】
メモリコントローラ１０は測定した総消費電流値を示すデータを制御装置１０１に送信してよい。制御装置１０１は、受信した総消費電流値を示すデータをメモリ装置やハードディスク等のデータ格納領域（図４、図７、図９、図１０、図１２、図１３等に示すデータストレージ２００）に格納してよい。なおデータ書き込み装置１００のメモリコントローラ１０に充分なデータ格納領域をレジスタ等により用意しておき、このデータ格納領域に総消費電流値を示すデータを格納してもよい。以下の説明では、制御装置１０１のデータ格納領域に総消費電流値を示すデータを格納した場合を例にとり説明する。
【００３４】
制御装置１０１のデータ格納領域に格納されるデータが示す総消費電流値は、異なる型格のメモリ装置に対して測定されたそれぞれの総消費電流値であってよい。即ち、第１の型格のメモリ装置に対する第１の総消費電流値、第２の型格のメモリ装置に対する第２の総消費電流値等のように、複数の異なる型格のメモリ装置に対するそれぞれの総消費電流値が格納されていてよい。また更にある型格のメモリ装置に対する総消費電流値は、当該型格のメモリ装置が有する異なる種類の書き込み命令（例えば、バイト単位の書き込み命令、ワード単位の書き込み命令等）毎に測定された総消費電流値であってよい。即ち、第１の書き込み命令に対する第１の総消費電流値、第２の書き込み命令に対する第２の総消費電流値等のように、複数の異なる書き込み命令に対するそれぞれの総消費電流値が格納されていてよい。
【００３５】
また特定の型格のメモリ装置の特定の書き込みコマンドに対する総消費電流値のデータは、当該型格のメモリ装置に対して当該書き込み命令を異なる複数の書き込み領域に対して実行することにより得られる総消費電流の分布に応じたデータであってよい。ここで総消費電流の分布は、総消費電流値毎に示された当該総消費電流値を要するメモリセル（或いはメモリ書き込み単位）の数を示したヒストグラムにより示される頻度分布であってよい。総消費電流値のデータは、ヒストグラムそのもののデータであってもよいし、総消費電流の分布を示すデータとして例えば分布中心値及び分布の広がりを示す値（例えば標準偏差や最大値及び最小値等）であってもよい。或いは総消費電流値のデータは、データリテンション特性の劣化に関して許容可能な総消費電流の最大値を示すデータであってよい。
【００３６】
制御装置１０１のデータ格納領域に格納される総消費電流値のデータは、データ書き込み装置１００を用いて種々の型格のメモリ装置に対して種々の書き込み命令を実行することにより収集されたデータであってよい。また或いは、データ書き込み装置１００と同様に消費電流を測定する機能を有する他の書き込み装置を用いて予め収集されたデータであってもよい。これらの収集された総消費電流値のデータは、セットメーカが予め収集しておくのでもよいし、或いは他の業者が収集してもよい。
【００３７】
セットメーカが製品中にメモリ装置を実装する際に、当該メモリ装置（フラッシュメモリ１１）の総消費電流値を測定してよい。即ち、セットメーカは、制御装置１０１及びデータ書き込み装置１００を用いることにより、上述のようにしてフラッシュメモリ１１（ある型格のメモリ装置）へのデータ書き込み動作にかかる総消費電流値を測定してよい。制御装置１０１は、測定された書き込み動作にかかる総消費電流値が、前記の分布において総消費電流の大きい側にずれている度合をデータ（データ格納領域に格納される総消費電流値のデータ）に基づいて評価することにより、メモリ領域の良否を判定してよい。あるメモリ領域に対して測定された総消費電流値が分布の中心から右側（総消費電流が大きい側）にずれる度合が大きくなる程、当該メモリ領域におけるデータリテンション特性の劣化の度合が早くなる可能性がある。例えば、あるメモリ領域に対して測定された総消費電流値が分布の中心部よりも最大値側にかなり大きくずれている場合には、当該メモリ領域のデータリテンション特性の劣化はかなり速いと判断することができる。また例えば、あるメモリ領域に対して測定された総消費電流値が分布の中心部よりも最大値側に位置してはいるがずれの度合がそれ程大きくない場合には、当該メモリ領域のデータリテンション特性の劣化は平均よりも速いが特に問題はないと判断することができる。
【００３８】
データ格納領域に格納される総消費電流値のデータは、データリテンション特性の劣化に関して許容可能な総消費電流の最大値を示すデータであってよい。この場合において制御装置１０１は、あるメモリ領域に対して測定された書き込み動作にかかる総消費電流値が、許容可能な総消費電流値の最大値よりも大きい場合に、当該メモリ領域が不良であると判定してよい。許容可能な最大値を示すデータにより良否判定をすることにより、記憶領域を効率的に使用することが可能になるとともに、且つ単純な比較演算により書き込み領域の良否判断を行うことが可能となる。
【００３９】
なおここでいう不良とは、当該書き込み領域が記憶素子として使用不可能であることを意味するものではない。当該書き込み領域は、書き込んだデータを保持するという最低限の機能は有している。但し、そのデータリテンション特性の劣化の速度に問題があり、長い時間が経過した後にデータが失われる可能性があるために、当該書き込み領域を不良と判断している。
【００４０】
前述のように、フラッシュメモリ１１へのデータ書き込み動作にかかる総消費電流値を計測するのは、セットメーカがフラッシュメモリ１１を装置に組み込む際に図１のデータ書き込み装置１００により実データを書き込む時であってよい。即ち、例えばフラッシュメモリ１１がＢＩＯＳ格納用であれば、実際にＢＩＯＳを格納するときに総消費電流値を計測してよい。また例えばフラッシュメモリ１１がログ格納用であれば、実際にログを記録するときに総消費電流値を計測してよい。またフラッシュメモリ１１がＦＰＧＡのコンフィギュレーションデータ格納用であれば、実際にコンフィギュレーションデータを格納するときに総消費電流値を計測してよい。
【００４１】
実データ書き込み先のメモリ領域が不良であると判断すると、当該メモリ領域のアドレスを使用しないよう、以後の書き込み動作をコントローラ２０により制御してよい。或いは当該メモリ装置（実データを書き込もうとしたフラッシュメモリ１１）は不良品であるとして、当該実データを格納する用途には用いず、同一型格の他のメモリ装置で置き換えるようにしてもよい。
【００４２】
上記のように不良なメモリ領域のアドレスを使用しないように以後の書き込み動作を制御することは、メモリ容量に余裕があるアプリケーションや格納データの随時の削除が可能なアプリケーション等の場合に有効である。例えばログ情報を格納する用途にフラッシュメモリ１１を使用する場合、メモリ容量一杯にログ情報を格納してしまった後は、最も古いログ情報から削除して、新たなログ情報を格納していくことが考えられる。このような用途の場合、フラッシュメモリ１１の一部のアドレスを使用不可として運用しても、それ程の不都合は発生しない。このように不良なメモリ領域のアドレスを使用しないように以後の書き込み動作を制御することで、不良品として破棄されるメモリ装置の確率を少なくし、経済的なメモリ装置の使用が可能となる。
【００４３】
図３は、総消費電流の分布の一例を示す図である。図３において、横軸は相対値（規格範囲で正規化された値）で示された総消費電流値であり、縦軸は各総消費電流値における頻度である。図３に示す分布プロファイル４１は、特定の型格のメモリ装置の特定の書き込み命令に対して計測された総消費電流の分布の一例である。
【００４４】
例えば、当該型格のメモリ装置の全てのアドレスに対して当該書き込み命令により書き込み動作を実行し、前述のような方法で書き込み動作にかかる総消費電流値を計測することにより、総消費電流値の頻度を示すヒストグラムを作成することができる。当該ヒストグラムの包絡線（各総消費電流値の頻度値を結んだ線）が分布プロファイル４１となる。このような総消費電流の分布を、ある型格のメモリ装置のある書き込み命令に対して予め作成しておくことで、当該型格のメモリ装置における当該書き込み命令に関する総消費電流値のバラツキ具合を知ることができる。
【００４５】
なお、全てのアドレスに対して、書き込み動作後に消去動作を実行しその後に再度書き込み動作を実行するようにして、全てのアドレスに対する書き込み動作を複数回実行してもよい。そしてそれら複数回の計測で求められた総消費電流値を累積することにより、ヒストグラムを作成してよい。また必ずしも全てのアドレスでなく、一部のアドレスに対して総消費電流値の計測を行うことによりヒストグラムを作成してもよい。
【００４６】
また総消費電流の分布を求めるためには、好ましくは、当該型格のメモリ装置を複数個用意し、それら複数個の同一型格のメモリ装置に対して総消費電流値を計測してよい。そしてそれら複数個のメモリ装置の計測で求められた総消費電流値のデータを累積することにより、ヒストグラムを作成してよい。複数個の同一型格のメモリ装置に対して総消費電流値を計測することにより、１つのメモリ装置に対してのみ総消費電流値を計測する場合に比較して精度を高めることができると共に、製造ロットの違いによる特性バラツキの違い等を吸収することが可能になる。
【００４７】
分布プロファイル４１が示す総消費電流の分布に基づいて、例えば許容可能な総消費電流値の上限、即ち許容可能な総消費電流の最大値を定めることができる。図３に示す分布プロファイル４１はその分布を構成する総消費電流値が範囲Ｔ１に収まっている。この範囲Ｔ１に含まれる総消費電流値のうち、例えば閾値０．５以上である総消費電流値が測定されたメモリ領域については、将来的な劣化の大きい不良なメモリ領域であると判断してよい。実データ書き込み先のメモリ領域が不良であると判断すると、当該メモリセルを使用しないよう、以後の書き込み動作を制御してよい。なおこの際、閾値の位置（即ち許容範囲の上限の位置）は、メモリ装置の分布プロファイル４１の広がり及び当該メモリ装置の用途の両方に基づいて決めてよい。
【００４８】
用途に着目した場合、許容可能な総消費電流の最大値は、同一の型格の不揮発性メモリ装置の用途に応じて異なる値であってよい。例えば型格Ａであるメモリ装置の書き込み命令Ｘが分布プロファイル４１で示される総消費電流の分布を有しているとする。この型格Ａのメモリ装置の書き込み命令Ｘが高いデータリテンション特性が要求されるアプリケーションに使用される場合、許容範囲の広さが狭く設定されるように閾値の位置を設定してよい。即ち例えば、上限閾値は０．４に設定されてよい。また型格Ａのメモリ装置の書き込み命令Ｘが高いデータリテンション特性が要求されないアプリケーションに使用される場合、許容範囲の広さが比較的広く設定されるように閾値の位置を設定してよい。即ち例えば、上限閾値は０．９に設定されてよい。このように用途に応じて許容範囲の位置を設定することにより、用途に応じた適切なメモリ装置の品質管理が可能となる。
【００４９】
図４は、総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。図４に示すフローチャートの処理は、図１に示されるデータ書き込み装置１００及び制御装置１０１により実行される。
【００５０】
図４及び以降の図において、フローチャートに記載された各ステップの実行順序は一例にすぎず、本願の意図する技術範囲が、記載された実行順番に限定されるものではない。例えば、Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、Ａステップの次にＢステップを実行することが可能なだけでなく、Ｂステップの次にＡステップを実行することが、物理的且つ論理的に可能である場合がある。この場合、どちらの順番でステップを実行しても、当該フローチャートの処理に影響する全ての結果が同一であるならば、本願に開示の技術の目的のためには、Ｂステップの次にＡステップが実行されてもよいことは自明である。Ａステップの次にＢステップが実行されるように本願に説明されていたとしても、上記のような自明な場合を本願の意図する技術範囲から除外することを意図するものではなく、そのような自明な場合は、当然に本願の意図する技術範囲内に属する。
【００５１】
図４のステップＳ１において、制御装置１０１は、計測対象であるメモリ装置の型格を確認する。即ち、例えば型格がＡであるメモリ製品について総消費電流の分布を計測したい場合であれば、測定対象のメモリ装置が当該型格であることを確認する。具体的には、制御装置１０１は、データ書き込み装置１００のメモリコントローラ１０に対してフラッシュメモリ１１の型格を確認する型格確認要求を送信する。
【００５２】
ステップＳ２で、データ書き込み装置１００のメモリコントローラ１０は、型格確認要求に応じて、型格を示す識別子を読み出す命令をフラッシュメモリ１１に送信する。ステップＳ３で、フラッシュメモリ１１は、読み出し命令に応答して識別子データを送信する。ステップＳ４で、メモリコントローラ１０は、フラッシュメモリ１１から識別子データを受け取り、受け取った識別子データを制御装置１０１に送信する。
【００５３】
ステップＳ５で、制御装置１０１は、フラッシュメモリ１１に対する書き込み処理回数を設定する。前述のように、書き込み動作及び消去動作を繰り返して複数回の書き込み処理を実行することにより、より精度の高い分布データを収集することができる。
【００５４】
ステップＳ６で、制御装置１０１は、データ書き込み装置１００のメモリコントローラ１０に対して書き込み制御指示を発行する。具体的には、制御装置１０１は、確認した型格のメモリ装置において利用可能な複数種類の書き込み命令を１種類ずつ順番に選択し、選択された書き込み命令による書き込み指示及び当該書き込み命令の実行回数に関する指示をデータ書き込み装置１００に送信する。
【００５５】
図５は、メモリ装置の複数の異なる型格と各型格で利用可能な複数種類の書き込み命令とを示す表である。図５に示す表において、「デバイス型格」の列には型格Ａ、型格Ｂ、及び型格Ｃの３つの異なる型格が表のエントリとして示されている。「命令コマンド」の列には各型格のメモリ装置において設けられている複数種類の書き込み命令が列挙されている。例えば、型格Ｃのメモリ装置の場合には、バイト単位のプログラム命令、ワード単位のプログラム命令、ページ単位のプログラム命令、及びセクター単位のプログラム命令が設けられている。ここでページ単位プログラム命令及びセクター単位プログラム命令の場合、メモリ装置に内蔵されているページサイズのバッファ又はセクターサイズのバッファに格納されているデータが書き込みデータとなる。
【００５６】
図６は、複数種類の書き込み命令が設けられている場合におけるデータ書き込み装置１００の処理を説明するための図である。図６に示されるように、例えば書き込み対象メモリ装置の型格が型格Ｃであることを確認した場合、図４に示すステップＳ６のサブステップであるステップＳ６−１乃至Ｓ６−４において、複数種類の書き込み命令を１つずつ順次選択して書き込み指示を行う。具体的には、制御装置１０１は、ステップＳ６−１でバイト単位プログラム命令を選択して書き込み指示を発行する。また制御装置１０１は、ステップＳ６−２でワード単位プログラム命令を選択して書き込み指示を発行する。また制御装置１０１は、ステップＳ６−３でページ単位プログラム命令を選択して書き込み指示を発行する。また制御装置１０１は、ステップＳ６−４でセクター単位プログラム命令を選択して書き込み指示を発行する。なおより具体的には、１つの種類の書き込み命令に対する１つの書き込み指示の発行に伴い、図４に示されるステップＳ７乃至Ｓ１７の処理が実行され、その処理が完了した後に、次の種類の書き込み命令に対する書き込み指示が発行される。
【００５７】
図４に戻り、ステップＳ７で、メモリコントローラ１０はフラッシュメモリ１１に対して書き込み命令（プログラム命令）を発行する。ステップＳ８で、フラッシュメモリ１１は書き込み動作（プログラム動作）を開始する。この書き込み動作は、発行された書き込み命令が対象とする書き込み単位（バイト、ワード等）のメモリ領域に対する一回の書き込み命令実行に相当する。
【００５８】
ステップＳ９で、メモリコントローラ１０は消費電流の計測を開始する。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく動作を開始する。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【００５９】
ステップＳ１０で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ１１で、メモリコントローラ１０は、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ１２で、メモリコントローラ１０は、書き込み動作終了に応答して、消費電流の計測を終了する。ステップＳ１３で、メモリコントローラ１０は、書き込み動作にかかった総消費電流値を制御装置１０１に通知する。
【００６０】
ステップＳ１４で、制御装置１０１は、通知された総消費電流値を一時的に内部レジスタに保存する。ステップＳ１５で、メモリコントローラ１０は書き込み命令が指定された回数実行されたか否かを判断する。指定された回数実行されていない場合、メモリコントローラ１０は、ステップＳ７の処理及び以降の処理を再度実行する。指定された回数既に実行された場合、ステップＳ１６で、メモリコントローラ１０は制御装置１０１に書き込み完了通知を送信する。
【００６１】
ステップＳ１７で、制御装置１０１は、書き込み完了通知に応答して、測定された複数の総消費電流値に基づき分布プロファイルを作成する。即ち、総消費電流値の頻度を示すヒストグラムを作成し、当該ヒストグラムの包絡線（各総消費電流値の頻度値を結んだ線）を示す分布プロファイルを作成する。なおデジタルデータとしては、ヒストグラムそのものを分布プロファイルとしてもよい。制御装置１０１は更に、総消費電流の分布に応じたデータをデータストレージ２００等のデータ格納領域に格納する。格納対象のデータは総消費電流の分布を示すヒストグラムデータそのものでもよいし、包絡線を示すプロファイルデータでもよいし、分布を反映したデータ（中心値、標準偏差、許容可能な最大値等）でもよいし、これらの組み合わせであってもよい。
【００６２】
上記のステップＳ１７において、分布に応じたデータを格納するためのファイル名は、前述の複数種類の書き込み命令毎に設定されたファイル名であってよい。具体的には、図６に示されるように、バイト単位書き込み命令に対する総消費電流の分布に応じたデータを格納する場合には、ステップＳ１７−１で、ファイル名「Ｃ−１ｐｒｏ」を用いて分布に応じたデータが格納される。同様に、ワード単位書き込み命令、ページ単位書き込み命令、及びセクター単位書き込み命令の場合には、それぞれステップＳ１７−２乃至１７−４で、ファイル名「Ｃ−２ｐｒｏ」、「Ｃ−３ｐｒｏ」、及び「Ｃ−４ｐｒｏ」を用いて分布に応じたデータが格納される。
【００６３】
以上で総消費電流の分布を示すデータを取得する処理を終了する。
【００６４】
図７は、実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。図６に示すフローチャートは、図１に示されるデータ書き込み装置１００及び制御装置１０１により、実データの書き込み動作時に実行される。
【００６５】
ステップＳ２１で、制御装置１０１は、書き込みデータをデータストレージ２００等からロードする。この書き込みデータは、装置に実装するフラッシュメモリ１１に書き込むべきデータである。ステップＳ２２で、制御装置１０１は、書き込みデータをデータ書き込み装置１００に送信する。ステップＳ２３で、データ書き込み装置１００は書き込みデータを受信し、受信した書き込みデータを内蔵メモリ領域やレジスタ等に格納する。
【００６６】
ステップＳ２４で、制御装置１０１は、書き込み対象であるメモリ装置の型格を確認する。具体的には、制御装置１０１は、データ書き込み装置１００のメモリコントローラ１０に対してフラッシュメモリ１１の型格を確認する型格確認要求を送信する。
【００６７】
ステップＳ２５で、データ書き込み装置１００のメモリコントローラ１０は、型格確認要求に応じて、型格を示す識別子を読み出す命令をフラッシュメモリ１１に送信する。ステップＳ２６で、フラッシュメモリ１１は、読み出し命令に応答して識別子データを送信する。ステップＳ２７で、メモリコントローラ１０は、フラッシュメモリ１１から識別子データを受け取り、受け取った識別子データを制御装置１０１に送信する。
【００６８】
ステップＳ２８で、制御装置１０１は、データ書き込み装置１００のメモリコントローラ１０に対して書き込み制御指示を発行する。具体的には、制御装置１０１は、ステップＳ２４で確認した型格のメモリ装置において利用可能な複数種類の書き込み命令のうち所望の書き込み命令を選択し、当該書き込み命令による書き込み指示をデータ書き込み装置１００に送信する。
【００６９】
ステップＳ２９で、制御装置１０１は、メモリ領域の良否判定に用いる総消費電流プロファイルデータをデータストレージ２００から読み出す。具体的には、制御装置１０１は、ステップＳ２４で確認した型格のメモリ装置で利用可能な複数種類の書き込み命令のうち、ステップＳ２８で選択した種類の書き込み命令に対応するファイル名のデータを、データストレージから読み出す。このファイル名のデータは、図４のステップＳ１７（図６のステップＳ１７−１乃至１７−４）において格納されたデータである。
【００７０】
ステップＳ３０で、コントローラ２０はフラッシュメモリ１１に対して書き込み命令（プログラム命令）を発行する。ステップ３１で、フラッシュメモリ１１は書き込み動作（プログラム動作）を開始する。この書き込み動作は、発行された書き込み命令が対象とする書き込み単位（バイト、ワード等）のメモリ領域に対する一回の書き込み命令実行に相当する。
【００７１】
ステップＳ３２で、メモリコントローラ１０は消費電流の計測を開始する。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく動作を開始する。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【００７２】
ステップＳ３３で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ３４で、メモリコントローラ１０は、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ３５で、メモリコントローラ１０は、書き込み動作終了に応答して、消費電流の計測を終了する。ステップＳ３６で、メモリコントローラ１０は、書き込み動作にかかった総消費電流値を制御装置１０１に通知する。
【００７３】
ステップＳ３７で、制御装置１０１は、通知された総消費電流値が許容可能な範囲内にあるか否かを分布に応じたデータに基づいて判定する。より具体的には、通知された総消費電流値が許容可能な総消費電流の最大値よりも大きいか否かを判定してよい。
【００７４】
ステップＳ３８で、メモリコントローラ１０は、書き込みデータ分の書き込み命令が実行されたか否かを判定することにより、書き込みが終了したか否かを判定する。例えば、ステップＳ２３で受信し格納した書き込みデータが３００ワード分であり、ワード単位の書き込み命令が用いられている場合には、３００回の書き込み動作が実行されたか否かを判定する。書き込みが終了していない場合には、メモリコントローラ１０はステップＳ３０及びそれ以降の処理を再度実行する。書き込みが終了した場合には、ステップＳ３９で、メモリコントローラ１０は制御装置１０１に書き込み完了通知を送信する。
【００７５】
ステップＳ４０で、制御装置１０１は、書き込み完了通知に応答して、ステップＳ３７での判定結果に応じ、メモリ装置又は書き込み対象メモリ領域の総消費電流値が許容可能な規定範囲内に入っているか否かを判定する。規定範囲内に入っていない場合には、ステップＳ４１で、制御装置１０１は除外判定処理を実行する。具体的には、制御装置１０１は、書き込み対象のメモリ装置又はメモリ領域が不良である旨を示す判定結果を外部に送出してよい。ここで外部に送出するとは、例えば、判定結果をデータとしてデータストレージに格納したり、ディスプレイ表示として出力したり、通知として外部に送信したりしてよい。この判定結果はメモリ装置のみを特定するものであってもよいし、或いはメモリ装置に加え不良判定されたメモリ領域を更に特定するものであってもよい。この判定結果を受領したユーザは、当該メモリ装置又はメモリ領域のデータリテンション特性が将来的に早く劣化して問題となる可能性が高いことを知ることができる。
【００７６】
以上で実データ書き込み時のメモリ装置の良否を判定する処理を終了する。
【００７７】
図８は、メモリ書き込み制御装置の構成の別の一例を示す図である。図８に示すメモリ書き込み制御装置は、ＣＰＵ（Central Processing Unit）１０２、アドレスパス１０３、データバス１０４、メモリコントローラ１０Ａ、フラッシュメモリ１１、電流計１２、及び電源１３を含む。このメモリ書き込み制御装置は、例えばコンピュータ等であってもよい。電源１３はメモリ書き込み制御装置に内蔵されていてもよいし、外付けであってもよい。データ書き込み対象であるフラッシュメモリ１１は、メモリ書き込み制御装置に固定的に内蔵されたメモリユニットでもよいし、交換可能なメモリユニットであってもよい。
【００７８】
ＣＰＵ１０２がメモリコントローラ１０Ａを制御することにより、フラッシュメモリ１１に所望のデータを書き込むことができる。メモリコントローラ１０Ａは、アドレス及びコマンド信号線、データ信号線、及びレディ／ビジー信号線等を含む信号線１４を介してフラッシュメモリ１１に接続される。
【００７９】
メモリコントローラ１０Ａは、チップイネーブル、アウトプットイネーブル、ライトイネーブル等の制御信号をフラッシュメモリ１１に供給する。メモリコントローラ１０Ａは更に、書き込み動作又は読み出し動作の対象となるアドレスを示すアドレス信号をフラッシュメモリ１１に供給する。フラッシュメモリ１１は、制御信号に応じて動作し、指定されたアドレスにデータを書き込んだり、指定されたアドレスからデータを読み出したりする。データは、テータ信号線を介してメモリコントローラ１０Ａとフラッシュメモリ１１との間でやり取りされる。
【００８０】
メモリコントローラ１０Ａは、コントローラ２０Ａ及び読み書き制御ブロック２１を含む。コントローラ２０Ａは、書き込み命令及び読み出し命令等を示す制御信号をＣＰＵ１０２から受け取る。またコントローラ２０Ａは、書き込み動作の対象となる書き込みデータを示すデータ信号、及び書き込み動作又は読み出し動作の対象となるアドレスを示すアドレス信号を、ＣＰＵ１０２から受け取る。コントローラ２０Ａは、制御信号が示す命令をデコードし、デコード結果に従って読み書き制御ブロック２１を制御する。コントローラ２０Ａは、書き込みデータを読み書き制御ブロック２１に送り、読み出しデータを読み書き制御ブロック２１から受け取る。
【００８１】
ＣＰＵ１０２は、電流計１２の出力に基づいて書き込み動作にかかる総消費電流値を測定する。電流計１２は、例えば電源１３とフラッシュメモリ１１との間に接続された抵抗素子と当該抵抗素子の両端の電圧をデジタル値に変換するＡＤコンバータとを含み、電源１３からフラッシュメモリ１１に流れる消費電流値を示すデジタル値を出力してよい。
【００８２】
図９は、図８に示すメモリ書き込み制御装置により総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。図９に示されるステップＳ５１からステップＳ５８までの処理は、図４に示すフローチャートにおけるステップＳ１からステップＳ８までの処理と同等であるので、説明を省略する。
【００８３】
ステップＳ５９で、メモリコントローラ１０Ａは消費電流の計測開始タイミングをＣＰＵ１０２に通知する。ステップＳ６０で、ＣＰＵ１０２は消費電流の計測を開始する。ステップＳ６１で、ＣＰＵ１０２は消費電流を計測し続ける。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【００８４】
ステップＳ６２で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ６３で、メモリコントローラ１０Ａは、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ６４で、メモリコントローラ１０Ａは、書き込み動作終了に応答して、消費電流の計測終了タイミングをＣＰＵ１０２に通知する。ステップＳ６５で、ＣＰＵ１０２は、計測した総消費電流値を一時的に内部レジスタに保存する。
【００８５】
ステップＳ６６で、メモリコントローラ１０Ａは書き込み命令が指定された回数実行されたか否かを判断する。指定された回数実行されていない場合、メモリコントローラ１０Ａは、ステップＳ５７の処理及び以降の処理を再度実行する。指定された回数既に実行された場合、ステップＳ６７で、メモリコントローラ１０ＡはＣＰＵ１０２に書き込み完了通知を送信する。
【００８６】
ステップＳ６８で、ＣＰＵ１０２は、書き込み完了通知に応答して、測定された複数の総消費電流値に基づき分布プロファイルを作成する。ＣＰＵ１０２は更に、総消費電流の分布に応じたデータをデータストレージ２００等のデータ格納領域に格納する。格納対象のデータは総消費電流の分布を示すヒストグラムデータそのものでもよいし、包絡線を示すプロファイルデータでもよいし、分布を反映したデータ（中心値、標準偏差、許容可能な最大値等）でもよいし、これらの組み合わせであってもよい。
【００８７】
以上で総消費電流の分布を示すデータを取得する処理を終了する。
【００８８】
図１０は、実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。図１０に示すフローチャートは、図８に示されるメモリ書き込み制御装置により、実データの書き込み動作時に実行される。図１０に示されるステップＳ７１からステップＳ８１までの処理は、図７に示すフローチャートにおけるステップＳ２１からステップＳ３１までの処理と同等であるので、説明を省略する。
【００８９】
ステップＳ８２で、メモリコントローラ１０Ａは消費電流の計測開始タイミングをＣＰＵ１０２に通知する。ステップＳ８３で、ＣＰＵ１０２は消費電流の計測を開始する。ステップＳ８４で、ＣＰＵ１０２は消費電流を計測し続ける。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【００９０】
ステップＳ８５で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ８６で、メモリコントローラ１０Ａは、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ８７で、メモリコントローラ１０Ａは、書き込み動作終了に応答して、消費電流の計測終了タイミングをＣＰＵ１０２に通知する。ステップＳ８８で、ＣＰＵ１０２は、計測した総消費電流値が許容可能な範囲内にあるか否かを分布に応じたデータに基づいて判定する。より具体的には、通知された総消費電流値が許容可能な総消費電流の最大値よりも大きいか否かを判定してよい。
【００９１】
ステップＳ８９で、メモリコントローラ１０Ａは、書き込みデータ分の書き込み命令が実行されたか否かを判定することにより、書き込みが終了したか否かを判定する。例えば、ステップＳ７３で受信し格納した書き込みデータが３００ワード分であり、ワード単位の書き込み命令が用いられている場合には、３００回の書き込み動作が実行されたか否かを判定する。書き込みが終了していない場合には、メモリコントローラ１０ＡはステップＳ８０及びそれ以降の処理を再度実行する。書き込みが終了した場合には、ステップＳ９０で、メモリコントローラ１０ＡはＣＰＵ１０２に書き込み完了通知を送信する。
【００９２】
ステップＳ９１で、ＣＰＵ１０２は、書き込み完了通知に応答して、ステップＳ８８での判定結果に応じ、メモリ装置又は書き込み対象メモリ領域の総消費電流値が許容可能な規定範囲内に入っているか否かを判定する。規定範囲内に入っていない場合には、ステップＳ９２で、ＣＰＵ１０２は除外判定処理を実行する。具体的には、ＣＰＵ１０２は、書き込み対象のメモリ装置又はメモリ領域が不良である旨を示す判定結果を外部に送出してよい。ここで外部に送出するとは、例えば、判定結果をデータとしてデータストレージに格納したり、ディスプレイ表示として出力したり、通知として外部に送信したりしてよい。この判定結果はメモリ装置のみを特定するものであってもよいし、或いはメモリ装置に加え不良判定されたメモリ領域を更に特定するものであってもよい。なおＣＰＵ１０２は、今回の書き込み対象であるメモリ領域が不良であると判断し、当該メモリ領域のアドレスを使用しないよう、以後の書き込み動作を制御してもよい。
【００９３】
以上で実データ書き込み時のメモリ装置の良否を判定する処理を終了する。
【００９４】
図１１は、メモリ書き込み制御装置の構成の更に別の一例を示す図である。図１１に示すメモリ書き込み制御装置は、ＣＰＵ１０２、アドレスパス１０３、データバス１０４、メモリコントローラ１０Ｂ、フラッシュメモリ１１、電流計１２、及び電源１３を含む。このメモリ書き込み制御装置は、例えばコンピュータ等であってもよい。電源１３はメモリ書き込み制御装置に内蔵されていてもよいし、外付けであってもよい。データ書き込み対象であるフラッシュメモリ１１は、メモリ書き込み制御装置に固定的に内蔵されたメモリユニットでもよいし、交換可能なメモリユニットであってもよい。
【００９５】
メモリコントローラ１０Ｂは、コントローラ２０Ｂが消費電流プロファイル化機能と除外判定機能とを有することが、図１に示すメモリコントローラ１０と異なる。またメモリコントローラ１０Ｂは、アドレスパス１０３及びデータバス１０４を介してＣＰＵ１０２に接続されている。
【００９６】
図１２は、図１１に示されるメモリ書き込み制御装置が実行する総消費電流の分布を示すデータを取得する方法の一例を示すフローチャートである。
【００９７】
ステップＳ１０１において、ＣＰＵ１０２は、消費電流プロファイル取得指示をメモリコントローラ１０Ｂに送信する。ステップＳ１０２で、メモリコントローラ１０Ｂは、消費電流プロファイル取得指示に応じて、型格を示す識別子を読み出す命令をフラッシュメモリ１１に送信する。ステップＳ１０３で、フラッシュメモリ１１は、読み出し命令に応答して識別子データを送信する。ステップＳ１０４で、メモリコントローラ１０Ｂは、フラッシュメモリ１１から識別子データを受け取り、受け取った識別子データを内蔵のメモリ領域又はレジスタ等に格納する。ステップＳ１０５で、メモリコントローラ１０Ｂは、受信した識別子データに基づいてフラッシュメモリ１１の型格を検出する。
【００９８】
ステップＳ１０６で、メモリコントローラ１０Ｂは、フラッシュメモリ１１に対する書き込み処理回数を設定する。ステップＳ１０７で、メモリコントローラ１０Ｂは、フラッシュメモリ１１に対して書き込み命令（プログラム命令）を発行する。ステップＳ１０８で、フラッシュメモリ１１は書き込み動作（プログラム動作）を開始する。この書き込み動作は、発行された書き込み命令が対象とする書き込み単位（バイト、ワード等）のメモリ領域に対する一回の書き込み命令実行に相当する。
【００９９】
ステップＳ１０９で、メモリコントローラ１０Ｂは消費電流の計測を開始する。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく動作を開始する。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【０１００】
ステップＳ１１０で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ１１１で、メモリコントローラ１０Ｂは、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ１１２で、メモリコントローラ１０Ｂは、書き込み動作終了に応答して消費電流の計測を終了すると共に、測定された総消費電流値を一時的に内部レジスタ等に格納する。
【０１０１】
ステップＳ１１３で、メモリコントローラ１０Ｂは書き込み命令が指定された回数実行されたか否かを判断する。指定された回数実行されていない場合、メモリコントローラ１０Ｂは、ステップＳ１０７の処理及び以降の処理を再度実行する。指定された回数既に実行された場合、ステップＳ１１４で、メモリコントローラ１０Ｂは、測定された複数の総消費電流値に基づき分布プロファイルを作成する。メモリコントローラ１０Ｂは更に、総消費電流の分布に応じたデータを、内部メモリ領域又はレジスタ等或いはデータストレージ２００等のデータ格納領域に格納する。格納対象のデータは総消費電流の分布を示すヒストグラムデータそのものでもよいし、包絡線を示すプロファイルデータでもよいし、分布を反映したデータ（中心値、標準偏差、許容可能な最大値等）でもよいし、これらの組み合わせであってもよい。
【０１０２】
以上で総消費電流の分布を示すデータを取得する処理を終了する。
【０１０３】
図１３は、実データ書き込み時のメモリ装置の良否を判定する処理の一例を示すフローチャートである。図１３に示すフローチャートは、図１１に示されるメモリ書き込み制御装置により、実データの書き込み動作時に実行される。
【０１０４】
ステップＳ１２１で、ＣＰＵ１０２は、データ書き込みをメモリコントローラ１０Ｂに対して指示する。ステップＳ１２２で、メモリコントローラ１０Ｂは、型格を示す識別子を読み出す命令をフラッシュメモリ１１に送信する。ステップＳ１２３で、フラッシュメモリ１１は、読み出し命令に応答して識別子データを送信する。ステップＳ１２４で、メモリコントローラ１０Ｂは、フラッシュメモリ１１から識別子データを受け取り、受け取った識別子データを内蔵のメモリ領域又はレジスタ等に格納する。ステップＳ１２５で、メモリコントローラ１０Ｂは、受信した識別子データに基づいてフラッシュメモリ１１の型格を検出する。
【０１０５】
ステップＳ１２６で、メモリコントローラ１０Ｂは、書き込みデータをデータストレージ２００等からロードする。この書き込みデータは、装置に実装するフラッシュメモリ１１に書き込むべきデータである。ステップＳ１２７で、メモリコントローラ１０Ｂは、メモリ領域の良否判定に用いる総消費電流プロファイルデータをデータストレージ２００等から読み出す。具体的には、メモリコントローラ１０Ｂは、確認した型格のメモリ装置で利用可能な複数種類の書き込み命令のうち、選択した種類の書き込み命令に対応するファイル名のデータを、データストレージから読み出す。
【０１０６】
ステップＳ１２８で、メモリコントローラ１０Ｂは、上記選択した種類の書き込み命令（プログラム命令）をフラッシュメモリ１１に対して発行する。ステップ１２９で、フラッシュメモリ１１は書き込み動作（プログラム動作）を開始する。この書き込み動作は、発行された書き込み命令が対象とする書き込み単位（バイト、ワード等）のメモリ領域に対する一回の書き込み命令実行に相当する。
【０１０７】
ステップＳ１３０で、メモリコントローラ１０Ｂは消費電流の計測を開始する。具体的には、電流計１２の出力値（電流を示すデジタル値）を所定のサンプリング間隔で検出し、各検出値を積算していく動作を開始する。なお積算演算は、各サンプリング値の検出動作と並行して実行してもよいし、全てのサンプリング値の検出動作が完了してから実行してもよい。
【０１０８】
ステップＳ１３１で、フラッシュメモリ１１は書き込み動作を終了する。ステップＳ１３２で、メモリコントローラ１０は、例えばレディ／ビジー信号を監視することにより、フラッシュメモリ１１の書き込み動作が終了したことを検出する。ステップＳ１３３で、メモリコントローラ１０は、書き込み動作終了に応答して、消費電流の計測を終了する。
【０１０９】
ステップＳ１３４で、メモリコントローラ１０Ｂは、測定された総消費電流値が許容可能な範囲内にあるか否かを分布に応じたデータに基づいて判定する。より具体的には、測定された総消費電流値が許容可能な総消費電流の最大値よりも大きいか否かを判定してよい。
【０１１０】
ステップＳ１３５で、メモリコントローラ１０Ｂは、書き込みデータ分の書き込み命令が実行されたか否かを判定することにより、書き込みが終了したか否かを判定する。書き込みが終了していない場合には、メモリコントローラ１０はステップＳ１２８及びそれ以降の処理を再度実行する。書き込みが終了した場合には、ステップＳ１３６で、メモリコントローラ１０Ｂは、ステップＳ１３４での判定結果に応じ、メモリ装置又は書き込み対象メモリ領域の総消費電流値が許容可能な規定範囲内に入っているか否かを判定する。規定範囲内に入っていない場合には、ステップＳ１３７で、メモリコントローラ１０Ｂは除外判定処理を実行する。具体的には、メモリコントローラ１０Ｂは、書き込み対象のメモリ装置又はメモリ領域が不良である旨を示す判定結果を外部に送出してよい。ここで外部に送出するとは、例えば、判定結果をデータとしてデータストレージに格納したり、ディスプレイ表示として出力したり、通知として外部に送信したりしてよい。この判定結果はメモリ装置のみを特定するものであってもよいし、或いはメモリ装置に加え不良判定されたメモリ領域を更に特定するものであってもよい。なおメモリコントローラ１０Ｂは、今回の書き込み対象であるメモリ領域が不良であると判断し、当該メモリ領域のアドレスを使用しないよう、以後の書き込み動作を制御してもよい。
【０１１１】
その後ステップＳ１３８で、メモリコントローラ１０ＢはＣＰＵ１０２にデータ書き込み完了通知を送信する。以上で実データ書き込み時のメモリ装置の良否を判定する処理を終了する。
【０１１２】
図１４は、実データ書き込み時に計測した総消費電流の分布の一例を示す図である。図８の横軸は相対値（規格範囲で正規化された値）で示された総消費電流値であり、縦軸は各総消費電流値における頻度である。図８に示す分布プロファイル４１は、特定の型格のメモリ装置に対して予め計測された総消費電流の分布を示す頻度分布プロファイルの一例である。
【０１１３】
実データ分布４２は、上記と同一の型格のメモリ装置に対して実データ書き込み時に計測された総消費電流値を累積的に記録していき、各総消費電流値に対する頻度データを作成した場合に得られるであろうヒストグラムである。なお図７、図１０、及び図１３のフローチャートでは実データの総消費電流値を累積的に集めることはしていない。図１４に示す実データ分布４２は、仮に実データの総消費電流値を累積的に集めた場合に得られるであろうヒストグラムデータである。
【０１１４】
分布プロファイル４１に対して、メモリ装置の用途を考慮に入れて、許容可能な総消費電流値の最大値４３を例えば０．５に設定する。この最大値４３よりも大きな総消費電流値に対応するメモリ領域については、データリテンション特性の劣化速度が速い不良なメモリセルであると判断することになる。
【０１１５】
図１４に示されるように、実データ分布４２は、分布プロファイル４１よりも分布の広がり幅が狭いものとなっている。なお図１４では、説明の便宜上、実データ分布４２の分布の広がり幅が分布プロファイル４１の分布の広がり幅よりもかなり狭いものであるとして、実データ分布４２のヒストグラムを示してある。しかしながら同一の型格のメモリ装置に対して求めた分布プロファイル４１と実データ分布４２とは、本来はそれ程異なるものではない。
【０１１６】
図１４に示されるように実データを書き込んだメモリ装置の実データ分布４２が分布プロファイル４１よりも広がりが狭い場合、当該メモリ装置の殆どのメモリ領域は不良でないとの判定結果となる。つまり許容可能な最大値０．５より大きな総消費電流値が流されるメモリ領域は殆ど存在しない。従って、例えばＦＰＧＡのコンフィギュレーションデータ格納用にメモリ装置を用いる場合等には、当該メモリ装置が不良品であるとして排除されて別の良品により置き換えられる可能性は小さいことになる。また例えばログ情報の格納用にメモリ装置を用いる場合等には、当該メモリ装置中で使用不可であるとして用いられないアドレスは殆ど存在しないことになる。
【０１１７】
図１５は、実データ書き込み時に計測した総消費電流の分布の別の一例を示す図である。図１５の横軸は相対値（規格範囲で正規化された値）で示された総消費電流値であり、縦軸は各総消費電流値における頻度である。
【０１１８】
分布プロファイル４１は、特定の型格のメモリ装置に対して予め計測された総消費電流の分布を示す頻度分布プロファイルの一例である。実データ分布４２Ａは、上記と同一の型格のメモリ装置に対して実データ書き込み時に計測された総消費電流値を累積的に記録していき、各総消費電流値に対する頻度データを作成した場合に得られるであろうヒストグラムである。
【０１１９】
図１５に示される例においては、実データ分布４２Ａは、図１４に示される実データ分布４２よりも分布の広がり幅が広いものとなっている。実データ分布４２Ａの場合、当該メモリ装置の比較的多くのメモリ領域が不良であるとの判定結果となる。つまり許容可能な最大値＋０．５より大きな総消費電流値が流されるメモリ領域が比較的多く存在する。従って、例えばＦＰＧＡのコンフィギュレーションデータ格納用にメモリ装置を用いる場合等には、当該メモリ装置が不良品であるとして排除されて別の良品により置き換えられる可能性が高いことになる。また例えばログ情報の格納用にメモリ装置を用いる場合等には、当該メモリ装置中で使用不可であるとして用いられないアドレスが比較的数多く存在することになる。
【０１２０】
図１６は、実データ書き込み時に計測した総消費電流の分布の別の一例を示す図である。図１６の横軸は相対値（規格範囲で正規化された値）で示された総消費電流値であり、縦軸は各総消費電流値における頻度である。
【０１２１】
分布プロファイル４１は、特定の型格のメモリ装置に対して予め計測された総消費電流の分布を示す頻度分布プロファイルの一例である。実データ分布４２Ｂは、上記と同一の型格のメモリ装置に対して実データ書き込み時に計測された総消費電流値を累積的に記録していき、各総消費電流値に対する頻度データを作成した場合に得られるであろうヒストグラムである。
【０１２２】
図１６に示される例においては、実データ分布４２Ｂは、分布プロファイル４１よりも分布の広がり幅が狭いものとなっている。しかしながら実データ分布４２Ｂは、その総消費電流値の中心値が分布プロファイル４１の中心値とはずれており、約０．２５から約０．６近辺に多くの測定値が分布している。この場合、実データ分布４２Ｂの分布の広がり幅は充分狭いにも関わらず、当該メモリ装置の比較的多くのメモリ領域が不良であるとの判定結果となる。つまり許容可能な総消費電流値の上限０．５よりも大きな総消費電流値が流れるメモリ領域が比較的多く存在する。従って、例えばＦＰＧＡのコンフィギュレーションデータ格納用にメモリ装置を用いる場合等には、当該メモリ装置が不良品であるとして排除されて別の良品により置き換えられる可能性が高いことになる。また例えばログ情報の格納用にメモリ装置を用いる場合等には、当該メモリ装置中で使用不可であるとして用いられないアドレスが比較的数多く存在することになる。
【０１２３】
以上、本発明を実施例に基づいて説明したが、本発明は上記実施例に限定されるものではなく、特許請求の範囲に記載の範囲内で様々な変形が可能である。
【０１２４】
前述の各実施例においては、ＮＯＲ形のフラッシュメモリを想定している。ＮＡＮＤ形のフラッシュメモリの場合には、ＮＯＲ型のフラッシュメモリと比較して、コントローラが記憶データの正当性をより高い信頼性で担保しているが、ＮＡＮＤ型のフラッシュメモリに対して本願発明を適用してもよい。また書き込み時の総消費電流値にバラツキがあり、総消費電流値が大きい記憶素子ほど劣化が早くなるような不揮発性メモリであれば、フラッシュメモリに限らず、如何なる種類の不揮発性メモリに対しても本願発明を適用することが可能である。
【符号の説明】
【０１２５】
１０、１０Ａ、１０Ｂ  メモリコントローラ
１２  電流計
１３  電源
２０、２０Ａ、２０Ｂ  コントローラ
２１  読み書き制御ブロック
２２  消費電流計測ブロック
１００  データ書き込み装置
１０１  制御装置
１０２  ＣＰＵ
１０３  アドレスバス
１０４  データバス
２００  データストレージ
【図１】
2020030872.tif 000003
【図２】
2020030872.tif 000004
【図３】
2020030872.tif 000005
【図４】
2020030872.tif 000006
【図５】
2020030872.tif 000007
【図６】
2020030872.tif 000008
【図７】
2020030872.tif 000009
【図８】
2020030872.tif 000010
【図９】
2020030872.tif 000011
【図１０】
2020030872.tif 000012
【図１１】
2020030872.tif 000013
【図１２】
2020030872.tif 000014
【図１３】
2020030872.tif 000015
【図１４】
2020030872.tif 000016
【図１５】
2020030872.tif 000017
【図１６】
2020030872.tif 000018