(57)【特許請求の範囲】
【請求項１】
フラッシュメモリの特定アドレスに特定のデータを書き込むプログラムコマンドシーケンスライト処理ステップと、
前記フラッシュメモリに実際にデータが書き込まれたか否かを確認するために前記フラッシュメモリからデータを読み出して判定するデータポーリング処理ステップとの間に、少なくとも次に書き込むデータを用意するための処理時間と遅延時間を加えた合計遅延時間が、前記フラッシュメモリの書き込み時間の度数分布特性をあらかじめ求めて、書き込み時間の分布が所定の比率以上入る一定の遅延時間になるように前記データポーリング処理を遅延させる遅延処理ステップとを、
有するフラッシュメモリの書き込み方法。
【発明の詳細な説明】
【０００１】
【発明の属する技術分野】
本発明は、フラッシュメモリの書き込み方法に関するもので、特に書き込み時間の短縮を図るものに関する。
【０００２】
【従来の技術】
図２はフラッシュメモリと、このフラッシュメモリの書き込みを行うＣＰＵの関係を示す説明図である。
図２において、ＣＰＵ１は、図示しないＲＯＭやＲＡＭと接続され、例えばＲＯＭに格納されたプログラムにしたがってフラッシュメモリ３への書き込みを行い、ＲＡＭをワークエリアとして使っている。チップセレクト回路２は、フラッシュメモリ３がどのアドレスに割り当てられるかを決める。アドレス線４は、一部はチップセレクト回路２に供給され、一部はそのままフラッシュメモリ３のアドレス端子に接続される。また、データ線５と制御線６はフラッシュメモリ３のデータ端子と制御端子に接続される。
【０００３】
図３は上述したＣＰＵ１によってフラッシュメモリ３の書き込みを行う際、ＣＰＵ１によって実行される書き込みアルゴリズムのプログラム内容を示すフローチャートで、例えば富士通社のＭＢＭ２９ＬＶ８００Ｔ（フラッシュメモリの型名）を例にとったものである。
この図３は複数ワード（または複数バイト）用の書き込みフローチャートを示し、まず、ステップＳ１０１からスタートし、ステップＳ１０２とＳ１０３のプログラムコマンドライト処理とデバイスのデータポーリング処理によって１ワード（あるいは１バイト）の書き込みを行い、ステップＳ１０４で複数ワード（あるいは複数バイト）の最後のワード（あるいはバイト）かどうかを判定し、もし終わりならば、ステップＳ１０５に移行して終了し、もし終わりでないならば、ステップＳ１０６に移行して、次のアドレスのデータを用意し、ステップＳ１０２に戻り、次のワード（あるいはバイト）の書き込みを行う。
【０００４】
ここで、前記ステップＳ１０２でのプログラムコマンドライト処理のシーケンス内容は、図４に示すフローチャートにしたがって実行される。
図４に示すフローチャートにおいて、ステップＳ１０７〜Ｓ１０９では、フラッシュメモリ３の特定のアドレスに特定のデータを書くことにより、データを書き込む命令シーケンスをなす。すなわち、ステップＳ１０７では、「５５５５」のアドレスに「ＡＡ」のデータを書き込み、ステップＳ１０８では、「２ＡＡＡ」のアドレスに「５５」のデータを書き込み、ステップＳ１０９では、「５５５５」のアドレスに「Ａ０」のデータを書き込む命令シーケンスをなす。そして、ステップＳ１１０で書き込むアドレスを指定して、書き込みデータを書く。
【０００５】
ところで、通常のフラッシュメモリでは書き込んでもすぐには書けずに、しばらく書き込まれるのに時間がかかる。これが実際にいつ書き込まれたかを確認するために、次に前記ステップＳ１０３でのデータポーリング処理という動作に入る。このステップＳ１０３でのデータポーリング処理のアルゴリズムは、図５に示すフローチャートにしたがって実行される。
まず、ステップＳ１２０から開始すると、ステップＳ１２１に移行する。ステップＳ１２１では、同じアドレスのデータを読んでみる。すなわち、書き込みアドレスをＶＡ  にして、その８ビットのデータＤＱ０〜ＤＱ７をリードする。上述した図４に示すステップＳ１１０で書き込んでから実際に書き込めるまで、同じアドレスから読んだデータの下位から８ビット目は実際に書き込むデータの反転が読めるようになっている。したがって、ステップＳ１２２に移行し、リードした下位から８ビット目のデータＤＱ７と書き込んだデータの８ビット目のデータＤａｔａと一致しているか否かを判定して同じならば、データが書き込めたものとしてステップＳ１２７に移行し、１ワード（または１バイト）の書き込みを終わる。
【０００６】
リードした８ビット目のデータＤＱ７  が書き込むべきデータと反転した値ならば、それはまだ書けていないということでステップＳ１２３へ移行する。ステップＳ１２３では、ステップＳ１２１で読んだ値の６ビット目のデータＤＱ５  を調べる。このデータＤＱ５  はステップＳ１１０で書き込んだ時に「０」になり、タイムアウトで「１」になる。したがって、ステップＳ１２３でタイムアウトで無い時はＮＯの方、すなわちステップＳ１２１に移行し、ポーリングを継続する。ステップＳ１２３でタイムアウトになった時には、ステップＳ１２４に移行し、再度データＤＱ０〜ＤＱ７を読み出し、ステップＳ１２５に移行して確認のためにデータＤＱ７  を再チェックする。そして、データＤＱ７  が書き込むべきデータＤａｔａと同じならばステップＳ１２７に移行し、正しく書けたものとする。
一方、データＤＱ７  が書き込むべきデータの反転した値ならば、タイムアウトで書けなかったものと見なして、ステップＳ１２６へ移行して、書き込みエラーと見なす。なお、図３には図示しないが、図５で書き込みエラーになったときの処理がステップＳ１０４の前に入る。
【０００７】
次に、通常のフラッシュメモリの書き込み時間の特性を説明する。
書き込み時間は、書き込み電圧・書き込み温度にも依存するが、あまり大きくは変わらない。大きく変化するのは書き込み回数による変化である。
図６にフラッシュメモリの書き込み回数と書き込み時間との関係特性の例を示す。図６に示すようにある回数を越えると、急激に書き込み時間が増加する特性を示す。
また、典型的な書き込み時間の度数分布は、図７のようにある時間帯に集中している（場合によっては度数分布により形成される山が複数存在する場合がある）。なお、図７に示す度数分布は当然図６のように書き込み回数に従って変化していくが、通常は図６の左側の平坦な部分で使うので、図７の度数分布はほぼ一定と見なせる。
【０００８】
【発明が解決しようとする課題】
ところで、フラッシュメモリの書き込みを行う際、図３ないし図５のようなプログラムが実行されるＣＰＵは、演算速度の速いＣＰＵの場合はあまり問題が無いが、遅いＣＰＵを使った場合に、図５に示すデータポーリング処理において、ステップＳ１２１〜Ｓ１２３のループに時間がかかる場合がある。例えば、通常１６μｓで書けるフラッシュメモリに対して、ステップＳ１２１〜Ｓ１２３を１回ループすると１０μｓかかってしまうケースがあった。この場合に、例えばポーリングのタイミングが、図７に示す書き込み時間の度数分布において、ポーリングタイミングＡのようだったとする。このとき、時刻ｔ１（例えば１２μｓ）ではほとんどの場合に書き込みは終わっていない。そして、次に、ポーリングのタイミングｔ２（例えば２２μｓ）に来た時はほとんど書き込みは終わっている。
【０００９】
しかしながら、例えばｔ３（例えば１６μｓ）のタイミングでポーリングをすればほとんどの場合書き込みは終わっているはずで、ｔ２−ｔ３（例えば、２２−１６＝６μｓ）の時間だけ書き込みが遅くなってしまっている。これは、１ワード（あるいは１バイト）では６μｓしか差が出ないが、例えば６４ｋワード（あるいは６４ｋバイト）を一度に書く場合には、６μｓ×６４ｋ＝３８４ｍｓと人間の感覚に取って無視できない時間となる。また、もっと大量のデータを書く場合には差はもっと大きくなるという問題点があった。
【００１０】
さらに、もう一つの問題は、図３に示す書き込みアルゴリズムのフローチャートにおいて、ステップＳ１０２〜Ｓ１０４とＳ１０６により形成されるループの中で実際にはステップＳ１０６の時間がかなり大きいという問題である。実際に、次のアドレスのデータはポインタなどにより指定されていることが多く、それを用意するのに例えば２０μｓ要していた。
【００１１】
そこで、本発明は上述した点に鑑みてなされたもので、フラッシュメモリに書くときにデータポーリング時間をフラッシュメモリの特性に合わせて最適に設定することにより無駄な時間を省いてフラッシュメモリの書き込み時間を短縮することができるフラッシュメモリの書き込み方法を提供することを目的とする。
【００１２】
【課題を解決するための手段】
上記目的を達成するために、本発明に係るフラッシュメモリの書き込み方法は、フラッシュメモリの特定アドレスに特定のデータを書き込むプログラムコマンドシーケンスライト処理ステップと、フラッシュメモリに実際にデータが書き込まれたか否かを確認するためにフラッシュメモリからデータを読み出して判定するデータポーリング処理ステップとの間に、少なくとも次に書き込むデータを用意するための処理時間と遅延時間を加えた合計遅延時間が、フラッシュメモリの書き込み時間の度数分布特性をあらかじめ求めて、書き込み時間の分布が所定の比率以上入る一定の遅延時間になるように前記データポーリング処理を遅延させる遅延処理ステップを設けたものである。
【００１５】
【発明の実施の形態】
本発明に係るフラッシュメモリの書き込み方法は、図７に示す如くフラッシュメモリの書き込み時間の度数分布において、フラッシュメモリの書き込み時間の度数分布特性に依存する遅延時間、データポーリング処理を遅延させる遅延処理ステップを設ける。このために、フラッシュメモリの書き込み時間の度数分布特性をあらかじめ求めて、書き込み時間の分布が所定の比率以上入る書き込み時間、すなわち、ほとんどの書き込みが終わる時間ｔ３（例えば９５％：１６μｓ）を遅延時間として設定し、それまでの間はポーリングはせずに、次のアドレスのデータを用意するようにする。
以下、具体的な書き込み方法について詳述する。
【００１６】
図１は本発明に係るフラッシュメモリの書き込み方法のアルゴリズムを示すフローチャートであり、図３に示す従来例の書き込みアルゴリズムのフローチャートに対応するものである。なお、図１に示すフローチャートにおいて、ステップＳ２０２でのプログラムコマンドシーケンスライト処理とステップＳ２０５でのデバイスのデータポーリング処理は、従来例の図４と図５に示すフローチャートによる処理と変わらなく、これら図１と図４及び図５に示すフローチャートは図２に示すＣＰＵ１によって実行される。
【００１７】
図１に示すフローチャートにおいて、まず、ステップＳ２０１からスタートする。次に、ステップＳ２０２に移行しプログラムコマンドシーケンスのライトを行う。これは、図３に示す従来例のステップＳ１０２と同じであり、その具体的な内容としては、図４に示すフローチャートのアルゴリズムを有する。次に、ステップＳ２０３に移行する。ここで、次のアドレスのデータを用意しておく。またはアドレスの計算などをしておくだけでもよい。そして、このステップＳ２０３の処理時間と次のステップＳ２０４でのディレイ時間とを合わせて、その合算時間が、図７に示すフラッシュメモリの書き込み時間と度数分布の関係特性図における時間ｔ３になるようにする。もし、ステップＳ２０３の処理時間だけでｔ３を超えるならば、ステップＳ２０４は必要無い。すなわち、ステップＳ２０３とステップＳ２０４を、図７に示す如くフラッシュメモリの書き込み時間の度数分布において、フラッシュメモリの書き込み時間の度数分布特性に依存する遅延時間、データポーリング処理を遅延させる遅延処理ステップとする。
【００１８】
そして、ステップＳ２０５に移行すると、ほとんどのケースでは一度目のポーリングでデータの書き込みは完了したことになる。すなわち、図５に示すデータポーリングのアルゴリズムのフローチャートにおいて、一度でステップＳ１２２からＳ１２７の方へ分岐する。ステップＳ２０５でのデータポーリング処理を経た後は、ステップＳ２０６に移行する。この場合、すでにステップＳ２０３で次のアドレスになっているが、それを加味した形で判定する。そして、まだ、書き込むデータがある場合にはステップＳ２０２に移行し、ステップＳ２０２〜Ｓ２０６のループを書き込みが終わるまで繰り返す。
【００１９】
したがって、上記実施の形態によれば、フラッシュメモリに書くときにデータポーリング時間をフラッシュメモリの特性に合わせて最適にし、その時間を利用して次の各データのアドレスの計算やデータの取得をあらかじめ行っておくことによりフラッシュメモリの書き込み時間を短縮することができる。
【００２０】
【発明の効果】
以上のように、本発明によれば、フラッシュメモリの特定アドレスに特定のデータを書き込むプログラムコマンドシーケンスライト処理ステップと、フラッシュメモリに実際にデータが書き込まれたか否かを確認するためにフラッシュメモリからデータを読み出して判定するデータポーリング処理ステップとの間に、少なくとも次に書き込むデータを用意するための処理時間と遅延時間を加えた合計遅延時間が、フラッシュメモリの書き込み時間の度数分布特性をあらかじめ求めて、書き込み時間の分布が所定の比率以上入る一定の遅延時間になるように前記データポーリング処理を遅延させる遅延処理ステップを設けたことにより、フラッシュメモリに書くときにデータポーリング時間をフラッシュメモリの特性に合わせて最適に設定することにより、無駄な時間を省いてフラッシュメモリの書き込み時間を短縮することができる。
【図面の簡単な説明】
【図１】本発明に係るフラッシュメモリへの書き込みアルゴリズムを示すフローチャートである。
【図２】本発明及び従来例におけるフラッシュメモリとフラッシュメモリの書き込みを行うＣＰＵとの関係を示す説明図である。
【図３】従来例によるフラッシュメモリへの書き込みアルゴリズムを示すフローチャートである。
【図４】本発明及び従来例におけるプログラムコマンドシーケンスライト処理のシーケンス内容を示すフローチャートである。
【図５】本発明及び従来例におけるデータポーリング処理のアルゴリズムを示すフローチャートである。
【図６】フラッシュメモリの書き込み回数と書き込み時間との関係特性図である。
【図７】フラッシュメモリの書き込み時間の度数分布を示す特性図である。
【符号の説明】
Ｓ２０２  プログラムコマンドシーケンスライト処理ステップ
Ｓ２０３  次のアドレスのデータの用意処理ステップ
Ｓ２０４  遅延処理ステップ
Ｓ２０５  データポーリング処理ステップ
Ｓ２０６  ラストアドレス判定ステップ
【図１】
0003582692.tif 000002
【図２】
0003582692.tif 000003
【図３】
0003582692.tif 000004
【図４】
0003582692.tif 000005
【図５】
0003582692.tif 000006
【図６】
0003582692.tif 000007
【図７】
0003582692.tif 000008