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