(57)【要約】【課題】電源オン／オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる情報処理装置及情報処理装置におけるデータ管理方法を提供する。【解決手段】フラッシュメモリー装置の２つのブロックＡ，Ｂは、それぞれ１つの管理領域と複数のデータ領域とに分割され、管理領域にはＲＯＭ状態とブロック状態と選択領域の各情報が格納される。電源オン時のデータ読出し時には、まず各ブロックＡ，Ｂの管理領域を読み出す（Ｓ１１，Ｓ１２）。管理領域Ａのブロック状態が「使用中」であれば選択領域の指すデータ領域からデータを読み出す。一方、「消去可」であればブロックＡのデータ消去を行う（Ｓ１５）。ブロックＢも同様に処理される（Ｓ１７〜Ｓ２０）。なお、電源オフ時のデータ書込みの際は、ブロックの全てのデータ領域が使い終わると、ブロック状態が「使用中」から「消去可」に変更される。【選択図】図８
2012123733.tif 000002
【特許請求の範囲】
【請求項１】
所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置であって、
ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される１つの管理領域と、複数のデータ格納領域とに分割された複数のブロックと、
前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出手段と、
前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定手段と、
前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込手段と、
前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去手段と、
を備えたことを特徴とする情報処理装置。
【請求項２】
前記ブロックは二つであり、前記ローテーションでは前記二つのブロックを交互に使用することを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記選択情報は、読出元のデータ格納領域を指す読出位置の情報であり、
前記読出手段は、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報の指すデータ格納領域からデータを読み出し、
前記判定手段は、前記使用中のブロックにおける前記選択情報の指す読出位置が最終位置であるか否かを判定することを特徴とする請求項１又は２に記載の情報処理装置。
【請求項４】
前記ブロック状態を示す前記不使用には、消去可と消去済とがあり、
前記書込手段は、前記選択情報の指す読出位置が最終位置となったブロックの前記ブロック状態を消去可の値に変更し、
前記消去手段は、前記ブロック状態が消去可の値になったブロックのデータを消去するとともに、消去状態になったブロックの前記管理領域内のブロック状態を消去済の値に変更することを特徴とする請求項１乃至３のいずれか一項に記載の情報処理装置。
【請求項５】
前記書込手段は、前記次のブロックの先頭位置の前記データ格納領域にデータを書き込んだ後、当該次のブロックの前記選択情報を前記先頭位置のデータ格納領域を指す値に更新することを特徴とする請求項１乃至４のいずれか一項に記載の情報処理装置。
【請求項６】
前記管理領域には、ブロックが使用可能状態か使用不能状態かを示すＲＯＭ状態が更に格納され、前記ＲＯＭ状態が使用可能状態であるブロックは使用するが、使用不能状態であるブロックは使用しないことを特徴とする請求項１乃至５のいずれか一項に記載の情報処理装置。
【請求項７】
前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オン時に行うことを特徴とする請求項１乃至６のいずれか一項に記載の情報処理装置。
【請求項８】
前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オフ時又は省電力モード移行時に行うことを特徴とする請求項１乃至７のいずれか一項に記載の情報処理装置。
【請求項９】
電源の異常遮断時には、前記ブロックの消去処理を行うべき条件が成立していても、前記消去手段による前記ブロックの消去処理は行わず、前記書込手段による前記データの書込処理を行うことを特徴とする請求項１乃至８のいずれか一項に記載の情報処理装置。
【請求項１０】
前記管理領域には前記複数のブロックのうち当該ブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納され、
一のブロックの前記管理領域内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される前記別ブロック状態の値を、タイミングを同期させて更新することを特徴とする請求項１乃至９のいずれか一項に記載の情報処理装置。
【請求項１１】
所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置におけるデータ管理方法であって、
前記不揮発性メモリーは、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される１つの管理領域と、複数のデータ格納領域とに分割された複数のブロックを備え、
前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出ステップと、
前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定ステップと、
前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込ステップと、
前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去ステップと、
を備えたことを特徴とする情報処理装置におけるデータ管理方法。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、電源オン時に不揮発性メモリーからデータを読み出すとともに、電源オン中に更新などされたデータを電源オフ時に不揮発性メモリーに書き込む処理を行う情報処理装置及び情報処理装置におけるデータ管理方法に関する。
【背景技術】
【０００２】
例えばフラッシュメモリーのような不揮発性メモリーを備えた情報処理装置では、前回の電源オフ時に不揮発性メモリーに書き込んだデータを、電源オン時に不揮発性メモリーから読み出すとともに、電源オン後の稼動中に更新などされたデータを電源オン時に不揮発性メモリーに書き込む構成となっている。保存すべきデータとしては、例えばプリンターなどの情報処理装置では、インクカートリッジのインク残量などを挙げることができる。
【０００３】
フラッシュメモリーなどの不揮発性メモリーは、所定記憶容量を有する複数のブロックに分割されており、１つのブロックがデータを消去する際の最小単位となっている。記憶素子の構成上、ブロック単位で消去し初期状態にした後でないと、任意データを書き込むことができない。
【０００４】
例えば特許文献１には、フラッシュメモリーを利用したデータ管理方法が開示されている。このデータ管理方法では、フラッシュメモリーのブロックにデータ格納ブロックを確保し、電源断時も保持するデータを格納し、消去処理は別にして、データの書き換え時は複数のデータ格納ブロックをローテーションで使用しデータの書込処理のみを行う。
【０００５】
データ格納ブロックを、ブロック管理領域とデータ管理領域とデータ格納エリアで構成し、ブロック管理領域には、現ブロックの状態情報及び他のブロックの消去状況を格納し、データ管理領域はデータ格納エリアのデータエリアと同数のデータ管理テーブルで構成し、データ格納エリアは複数の均等サイズのデータエリアで構成されていた。
【０００６】
使用ブロックはブロック管理領域内の現ブロック使用有無テーブルを検索することで特定できる。また、使用ブロック内の書込み先のデータエリアの特定は、使用ブロック内のデータ管理領域を最若番データ管理テーブルから使用順序方向に確認していき未使用のデータエリアを検出することで行われる。
【先行技術文献】
【特許文献】
【０００７】
【特許文献１】特開２０００−２２２２９２号公報
【発明の概要】
【発明が解決しようとする課題】
【０００８】
しかしながら、特許文献１のデータ管理方法では、データ管理領域にデータエリアと同数用意されたデータ管理テーブルを検索対象とし、最若番データ管理テーブルから使用順序方向に確認していき未使用のデータエリアを検出する検索が必要なので、データエリアを検索する構成に比べれば効率的であるものの、やはり時間を要していた。
【０００９】
また、読出し先のデータエリアも、データ管理領域にデータエリアと同数用意されたデータ管理テーブルを検索対象とし、最若番データ管理テーブルから使用順序方向に確認していきデータ番号がその番号から特定されるデータ内容が欲しいものであるか否かを確認して、読み出し位置を検出する必要があった。
【００１０】
このため、読み出し時にも書き込み時にも、データ管理テーブルを検索をいちいち検索しなければならず、その検索処理に時間がかかり、データを読出し・書込みを行うためのデータ処理時間が比較的長くなるという問題があった。
【００１１】
本発明は、上記課題に鑑みてなされたものであり、その目的の一つは、電源オン／オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる情報処理装置及情報処理装置におけるデータ管理方法を提供することにある。
【課題を解決するための手段】
【００１２】
上記目的の一つを達成するために、本発明の態様の一つは、所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置であって、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される１つの管理領域と、複数のデータ格納領域とに分割された複数のブロックと、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出手段と、前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定手段と、前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込手段と、前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去手段と、を備えたことを要旨とする。
【００１３】
本発明の一実施態様によれば、情報処理装置の電源オン時に、読出手段は、ブロック状態が使用中である一つのブロックの管理領域内の選択情報から規定される読出位置のデータ格納領域からデータを読み出す。また、情報処理装置の電源オフ時には、書込手段は、判定手段の判定結果に基づき、ブロック状態が使用中のブロックの管理領域内の選択情報が前記読出位置が最終位置でないとする値である場合、その読出位置の次の位置のデータ格納領域にデータを書き込む。一方、判定手段の判定結果に基づき、選択位置が読出位置が最終位置であるとする値である場合、書込手段は、次のブロック中の先頭位置のデータ格納領域にデータを書き込むとともに、当該次のブロックの管理領域内のブロック状態を不使用から使用中に変更する。そして、消去手段は、次のブロックの先頭位置のデータ格納領域へのデータの書込みを終えた後、読出位置が最終位置となった（つまり全てのデータ格納領域が使用済みとなった）ブロックのデータを、少なくともこのブロックの先頭位置に書込みを行うまでに消去するとともに消去後のこのブロックの管理領域内のブロック状態を使用中から不使用に変更する。このため、複数のブロックがそれぞれ備える管理領域内のブロック状態と選択情報とから、各ブロックの各データ格納領域のうち、読出元の位置や、書込先の位置を簡単に取得することができる。例えば、従来のようにデータ管理領域内にデータ格納領域と同数用意されたデータ管理テーブルをいちいち検索しなくても、管理領域内のブロック状態と選択位置の二情報を用いて、読出元と書込先を速やかに把握できる。このように電源オン／オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる。従って、電源オン時のデータの読出し及び電源オフ時のデータの書込みを速やかに行うことができる。また、データ格納領域が全て使用済みとなってからブロックに消去処理を施すので、不揮発性メモリー内の複数のブロックに施される消去の回数を少なく済ませることができる。
【００１４】
本発明の態様の一つである情報処理装置では、前記ブロックは二つであり、前記ローテーションでは前記二つのブロックを交互に使用することが好ましい。
本発明の一実施態様によれば、二つのブロックを交互に使用するので、データの記憶に使用するブロック数を少なく抑えることができる。
【００１５】
本発明の態様の一つである情報処理装置では、前記選択情報は、読出元のデータ格納領域を指す読出位置の情報であり、前記読出手段は、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報の指すデータ格納領域からデータを読み出し、前記判定手段は、前記使用中のブロックにおける前記選択情報の指す読出位置が最終位置であるか否かを判定することが好ましい。
【００１６】
本発明の一実施態様によれば、選択情報が読出元のデータ格納領域を指す読出位置の情報であるので、読出手段は、情報処理装置の電源オン時に、ブロック状態が使用中のブロックの選択情報の指すデータ格納領域からデータを読み出せばよい。また、判定手段は、使用中のブロックにおける選択情報の指す読出位置が最終位置であるか否かを判定すればよい。このように選択情報の指す値をそのまま使用して、読出位置の特定や、読出位置が最終位置であるか否かの判定を行うことができる。例えば選択情報を書込位置の情報とした場合、書込位置から１つ前の読出位置を求める演算が必要になるが、読出位置であれば、そのような演算の必要がない。
【００１７】
本発明の態様の一つである情報処理装置では、前記ブロック状態を示す前記不使用には、消去可と消去済とがあり、前記書込手段は、前記選択情報の指す読出位置が最終位置となったブロックの前記ブロック状態を消去可の値に変更し、前記消去手段は、前記ブロック状態が消去可の値になったブロックのデータを消去するとともに、消去状態になったブロックの前記管理領域内のブロック状態を消去済の値に変更することが好ましい。
【００１８】
本発明の一実施態様によれば、書込手段は、選択情報の指す読出位置が最終位置となったブロックのブロック状態を消去可の値に変更する。消去手段は、ブロック状態が消去可の値であると、その消去可の値のブロック状態が格納されたブロックのデータを消去するとともに、消去状態になったブロックの管理領域内のブロック状態を消去済の値に変更する。従って、書込手段がブロックの最終位置のデータ格納領域まで書込に使い終わったことを、ブロック状態の値により消去手段に伝え、消去手段がその使い終わったブロックの消去を行うことができる。
【００１９】
本発明の態様の一つである情報処理装置では、前記書込手段は、前記次のブロックの先頭位置の前記データ格納領域にデータを書き込んだ後、当該次のブロックの前記選択情報を前記先頭位置のデータ格納領域を指す値に更新することが好ましい。
【００２０】
本発明の一実施態様によれば、書込手段は、次のブロックの先頭位置のデータ格納領域にデータを書き込んだ後、当該次のブロックの選択情報を先頭位置のデータ格納領域を指す値に更新する。このため、読出手段は選択情報の指す先頭位置のデータ格納領域からデータを読み出すことができる。
【００２１】
本発明の態様の一つである情報処理装置では、前記管理領域には、ブロックが使用可能状態か使用不能状態かを示すＲＯＭ状態が更に格納され、前記ＲＯＭ状態が使用可能状態であるブロックは使用するが、使用不能状態であるブロックは使用しないことが好ましい。
【００２２】
本発明の一実施態様によれば、管理領域に格納されたＲＯＭ状態が使用可能状態であるブロックは使用されるが、使用不能状態であるブロックは使用されない。従って、故障などが原因で使用不能なブロックへのデータの書込みを回避できる。
【００２３】
本発明の態様の一つである情報処理装置では、前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オン時に行うことが好ましい。
本発明の一実施態様によれば、消去手段によるブロックのデータの消去は電源オン時に行われる。例えば電源オフ時に行う構成とした場合は、情報処理装置が停電やコンセント抜けなどの何らかの原因による不意な電源遮断が発生したときに、比較的時間を要する消去処理を行っているとデータの書込みミスが起こる可能性が高くなる。これに対して、電源オン時に消去処理が行われれば、この種のデータの書込みミスの発生を少なく抑えることができる。
【００２４】
本発明の態様の一つである情報処理装置では、前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オフ時又は省電力モード移行時に行うことが好ましい。
【００２５】
本発明の一実施態様によれば、消去手段によるブロックのデータの消去は、情報処理装置の電源オフ時又は省電力モード移行時に行われる。従って、情報処理装置の電源オン時に消去処理が行われる構成に比べ、情報処理装置を電源オン操作から早期に動作可能状態にすることができる。
【００２６】
本発明の態様の一つである情報処理装置では、電源の異常遮断時には、前記ブロックの消去処理を行うべき条件が成立していても、前記消去手段による前記ブロックの消去処理は行わず、前記書込手段による前記データの書込処理を行うことが好ましい。
【００２７】
本発明の一実施態様によれば、電源の異常遮断時には、ブロックの消去処理を行うべき条件が成立していても、消去処理が行われることなく、データの書込処理が行われる。従って、消去処理を行ったために書込み時間が不足し、データを最後まで書込みできなくなる書込みミスを少なく抑えることができる。
【００２８】
本発明の態様の一つである情報処理装置では、前記管理領域には前記複数のブロックのうち当該ブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納され、一のブロックの前記管理領域内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される前記別ブロック状態の値を、タイミングを同期させて更新することが好ましい。
【００２９】
本発明の一実施態様によれば、一のブロックの管理領域内のブロック状態の値が更新されるときには、他のブロックにおける対応する別ブロック状態の値が、タイミングを同期させて更新される。例えば消去処理の途中で発生した電源の異常遮断が原因で、二つのブロックの各管理領域内のブロック状態が共に使用中になっても、どちらの使用中が間違いであるかを別ブロック状態の値から推定（特定）できるので、間違いである側のブロックの消去処理を改めて行うことが可能になる。
【００３０】
本発明の態様の一つは、所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置におけるデータ管理方法であって、前記不揮発性メモリーは、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される１つの管理領域と、複数のデータ格納領域とに分割された複数のブロックを備え、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出ステップと、前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定ステップと、前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込ステップと、前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去ステップと、を備えたことを要旨とする。本発明の一実施態様によれば、上記情報処理装置に係る発明と同様の作用効果を得ることができる。
【図面の簡単な説明】
【００３１】
【図１】本発明を具体化した第１実施形態における情報処理装置の概略構成を示すブロック図。
【図２】ＣＰＵの機能構成とフラッシュメモリー装置の概略構成を示すブロック図。
【図３】メモリーセルの構造を示す模式図。
【図４】電源オフ時に保存されるべきデータが記憶される２つのブロックの構成を示す模式図。
【図５】１つのブロックにおける管理領域の詳細を示す模式図。
【図６】ブロック中の各データ領域とフラグの値との対応関係を示す図。
【図７】工場出荷状態の管理領域のデータ内容を示す図。
【図８】電源オン時におけるデータ読出し処理ルーチンを示すフローチャート。
【図９】電源オフ時におけるデータ書込み処理ルーチンを示すフローチャート。
【図１０】電源オン／オフ１回目〜６回目の管理領域のデータ遷移を示す図。
【図１１】電源オン／オフ７回目〜１３回目の管理領域のデータ遷移を示す図。
【図１２】電源オン／オフ１４回目の管理領域のデータ遷移を示す図。
【図１３】第２実施形態における工場出荷状態の管理領域のデータ内容を示す図。
【図１４】電源オン／オフ８回目の管理領域のデータ遷移を示す図。
【図１５】電源オン時におけるデータ読出し処理ルーチンを示すフローチャート。
【図１６】電源オフ時におけるデータ書込み処理ルーチンを示すフローチャート。
【図１７】第３実施形態における管理領域の詳細を示す模式図。
【図１８】電源オン／オフ６回目の管理領域のデータ遷移を示す図。
【図１９】管理領域異常時の対策を含むデータ読出し処理ルーチンを示すフローチャート。
【発明を実施するための形態】
【００３２】
（第１実施形態）
以下、本発明を具体化した第１実施形態を図１〜図１２に基づいて説明する。図１に示すように、情報処理装置１１は、全体的な制御を司るコントローラー１２、装置内の各部に電力を供給する電源回路１３、操作部１４、表示部１５、駆動回路１６及びアクチュエーター１７などを備える。
【００３３】
情報処理装置１１は、コントローラー１２が駆動回路１６を介してアクチュエーター１７を駆動制御することにより所定動作を行う。特に本例の情報処理装置１１は、例えば消費材１８が取り付けられ、消費材１８の消費を伴う所定動作を行う。情報処理装置１１の一例としてはプリンターなどを挙げることができる。プリンターの場合、インクやトナー等の印刷に使用される印刷用材料と、印刷が施される用紙やフィルムなどの印刷媒体とが、消費材１８に該当する。消費材１８のうち印刷用材料の取り付けは、具体的には、インクを収容するインクカートリッジ又はトナーを収容するトナー収容体を、プリンター本体の所定箇所に装着することにより行われる。また、消費材１８のうち印刷媒体の取り付けは、印刷媒体の給送トレイへのセット又は印刷媒体が収容された給送カセットのプリンター本体へのセットにより行われる。もちろん、情報処理装置１１は、プリンターに限定されるものではなく、消費材が消費される装置に広く適用できる。また、情報処理装置は、消費材の消費を伴う所定動作を行うものに限定されず、例えばスキャナー、デジタルフォトフレーム、デジタルカメラなどであってもよい。
【００３４】
また、情報処理装置１１には、操作部１４の１つとして電源スイッチ１４Ａ（但し、図１では操作部１４の１つである電源スイッチ１４Ａのみ図示）が設けられている。ユーザーは電源スイッチ１４Ａを操作することにより、情報処理装置１１の電源をオン／オフする。電源スイッチ１４Ａは電源回路１３に接続されており、電源スイッチ１４Ａがオン操作された際の電源オン信号と、オフ操作された際の電源オフ信号とが電源回路１３に入力される。電源回路１３は、電源オフ状態で電源スイッチ１４Ａが操作された際に電源オン信号を入力すると、情報処理装置１１の電源をオンして装置内の各部に所定電圧の電力を供給し、この電源オン状態で電源スイッチ１４Ａが操作された際に電源オフ信号を入力すると、情報処理装置１１の電源をオフして装置内の各部への電力の供給を停止する。また、電源回路１３は省電力機能を有している。電源回路１３は、情報処理装置１１が動作を停止してから何も操作されないまま所定時間が経過すると、表示部１５の表示を暗くしたり消したりするなどの省電力モードに移行する。省電力モードに移行したときには、電源回路１３はコントローラー１２、表示部１５及び駆動回路１６などへの供給電力を通常モード時より小さな省電力モード時の低電力に制限する。
【００３５】
また、図１に示すように、コントローラー１２は、コンピューター２０を備えている。コンピューター２０は、ＣＰＵ２１（中央処理装置）、ＡＳＩＣ２２（Application Specific IC（特定用途向けＩＣ））、ＲＡＭ２３、不揮発性メモリーの一例であるフラッシュメモリー装置２４及び入出力インターフェイス２５を備えている。ＣＰＵ２１は、フラッシュメモリー装置２４に記憶されたプログラムを実行することにより情報処理装置１１に所定動作を行わせるためのアクチュエーター１７の駆動制御、ユーザーが操作部１４を操作した際の操作信号の受付け、操作信号などに応じて表示部１５の表示内容を切り替える表示制御などを行う。本例のアクチュエーター１７は、所定動作を行うための複数個のアクチュエーター群からなる。例えば情報処理装置１１がプリンターの場合、アクチュエーター群として、用紙などの印刷媒体を搬送するための搬送モーターと、用紙に印刷を施す記録ヘッドとが少なくとも備えられている。
【００３６】
ＡＳＩＣ２２は、所定動作を行うために必要な処理を行うとともにアクチュエーター１７の少なくとも一部を制御する。情報処理装置１１が例えばプリンターの場合、ＡＳＩＣ２２は、情報処理装置１１が入力した画像データを基に記録ヘッドが使用可能なヘッド制御データを生成する画像処理を行い、生成したヘッド制御データを記録ヘッドへ転送することにより、記録ヘッドの制御を司る。ＣＰＵ２１がソフトウェアで処理を行う構成は比較的処理時間がかかるので、ＡＳＩＣ２２がハードウェアで処理を行うことにより処理時間の短縮を図っている。もちろん、ＡＳＩＣ２２を廃止し、全ての処理及び制御をＣＰＵ２１が行う構成としてもよい。
【００３７】
フラッシュメモリー装置２４には、情報処理装置１１が所定動作を行うためのプログラム（例えばファームウェア）や各種の設定データなどが記憶されている。また、フラッシュメモリー装置２４には、情報処理装置１１が所定動作を行うことにより更新されるデータを少なくとも含むデータＤが記憶される。ＣＰＵ２１はフラッシュメモリー装置２４にアクセスしてプログラム及び各種設定データを読み出す。さらにＣＰＵ２１は、情報処理装置１１の電源オン時にフラッシュメモリー装置２４からデータＤを読み出してＲＡＭ２３に展開する。ＣＰＵ２１は情報処理装置１１が所定動作を行うのに伴い更新される最新のデータＤをＲＡＭ２３に書き込んで更新する。また、ＣＰＵ２１は、情報処理装置１１の電源オフ時にＲＡＭ２３の最新のデータＤを読み出してそのデータＤをフラッシュメモリー装置２４に書き込むことにより、更新されたデータＤを電源オフ中においても保存する。
【００３８】
次に、ＣＰＵ２１の機能構成及びフラッシュメモリー装置２４の構成を、図２を用いて説明する。なお、本実施形態のフラッシュメモリー装置２４には、所定のプログラムの一部である、図８に示すデータ読出処理ルーチンのプログラム、及び図９に示すデータ書込処理ルーチンのプログラムが記憶されている。
【００３９】
図２では、ＣＰＵ２１が例えばフラッシュメモリー装置２４から読み出した所定のプログラムを実行することによりその内部に構築される機能部分を示している。すなわち、図２に示すように、上記プログラムを実行するＣＰＵ２１の内部には、所定の判定処理を行う第１判定部３１、第２判定部３２、第３判定部３３の他、データＤの読出処理を行う読出部３４、データＤの書込処理を行う書込部３５及びデータの消去処理を行う消去部３６などが構築される。もちろん、各部３１〜３６は、集積回路等のハードウェアにより構築したり、ソフトウェアとハードウェアの協働により構築したりしてもよい。なお、これら各部３１〜３６の機能の詳細については後述する。
【００４０】
図２に示すように、フラッシュメモリー装置２４は、メモリー制御回路４１及びフラッシュメモリー部４２を備えている。メモリー制御回路４１は、ＣＰＵ２１と通信可能に接続されており、ＣＰＵ２１から、読出し、書込み、消去などを指示する各種のコマンド、読出し先、書込み先、消去先のアドレスを入力する。また、メモリー制御回路４１は、書込みコマンド入力時にＣＰＵ２１から書込み対象となるデータを入力し、読出しコマンド入力時にフラッシュメモリー部４２の指定のアドレスから読み出された読出し対象のデータをＣＰＵ２１へ出力する。
【００４１】
メモリー制御回路４１は、ＣＰＵ２１からの読出し、書込み、消去などのコマンドに応じた制御信号、読出し先、書込み先、消去先のアドレスを指定するアドレス信号をフラッシュメモリー部４２へ出力することにより、データの読出し、書込み、消去などをフラッシュメモリー部４２に指示する。これにより、読出し先のアドレスからのデータの読出し、書込み先のアドレスへのデータの書込み、消去先のアドレスにあるデータの消去が行われる。
【００４２】
ここで、情報処理装置１１がプリンターの場合、データＤは、インクやトナー等の印刷用材料の残量など、所定動作の実施と共に変化する可変情報と、アクチュエーター１７の駆動開始位置（原点）などの工場出荷時に設定された不変情報（固定情報）とから構成される。もちろん、印刷媒体の残量を検出するセンサーを備えたプリンターでは、可変情報の一情報として印刷媒体の残量を含めてもよい。また、情報処理装置１１の使用料金ユーザーから徴収する構成の場合、所定動作の回数（プリンターの場合であれば例えば印刷枚数）などと共に変化する課金情報を、データの一情報として含めてもよい。なお、可変情報には時間情報（経過時間計測情報や時刻情報）も含めてもよい。
【００４３】
図２に示すように、メモリー制御回路４１はレジスター群４３を内蔵する。レジスター群４３のうちの状態レジスター４４（ステイタスレジスター）は、フラッシュメモリー装置２４がＣＰＵ２１から受け付けたコマンドに基づいて、メモリー制御回路４１が行うデータの読出し、データの書込み、さらにはデータの消去などの制御を行う際の状態を管理する。状態レジスター４４は、指示されたコマンドに基づく制御中はビジー信号を出力し、コマンドに基づく制御を終えるとその出力がビジー信号からレディー信号へ切り換わる。このため、ＣＰＵ２１は状態レジスター４４からの信号に基づいて、指示したコマンドに基づく制御を終えたことを判断できるようになっている。
【００４４】
ＣＰＵ２１は、メモリー制御回路４１へ消去コマンドを送った後、状態レジスター４４から、レディー信号から切り換わったビジー信号を入力するうちはデータの消去処理中であると判断し、そのビジー信号がレディー信号に切り換わったことをもって、消去処理が終了したと判断する。もちろん、状態レジスター４４に替えてもしくは追加して、消去処理専用の消去レジスターを設け、ＣＰＵ２１が消去レジスターからの信号に基づき消去処理の終了を把握する構成を採用してもよい。
【００４５】
フラッシュメモリー部４２には、フラッシュメモリーセル４５、ロウデコーダー４６、カラムデコーダー４７などを備えている。なお、フラッシュメモリー部４２は、その他に、公知のコマンドデコーダー、制御論理回路、ロウアドレスバッファー、カラムアドレスバッファー、データ制御回路、及び入出力バッファー（いずれも図示せず）を備えている。
【００４６】
フラッシュメモリーセル４５は、複数のメモリーセル（メモリー素子）（図示省略）をマトリクス配列して構成されている。各メモリーセルは互いに交差する複数本のワード線と複数本のビット線の交差部に配置されている。ロウデコーダー４６はワード線の選択駆動等を行い、一方のカラムデコーダー４７はビット線の選択駆動等を行う。
【００４７】
メモリー制御回路４１から転送されるアドレス信号のうちロウアドレスがロウデコーダー４６に転送され、カラムアドレスがカラムデコーダー４７に転送される。これにより、指定のロウアドレスとカラムアドレスとで特定されるメモリーセルが選択される。
【００４８】
ＣＰＵ２１は電源オン時にフラッシュメモリー装置２４に読出しコマンドを送ることにより、データＤを読み出す処理を行い、メモリー制御回路４１から送られてきたデータＤをＲＡＭ２３に書き込む。そして、情報処理装置１１の稼働中（電源オン状態）は、ＲＡＭ２３にアクセスすることによりデータＤの読出し及び書込みを行い、書込みを行うことによりデータＤは更新される。また、ＣＰＵ２１は電源オフ時にフラッシュメモリー装置２４に書込みコマンドを送ることにより、ＲＡＭ２３のデータＤをフラッシュメモリー装置２４へ書き込む処理を行う。
【００４９】
図３に示すように、フラッシュメモリーセル４５は、ブロック０，１，…，Ｎの合計（Ｎ＋１）個のブロックＢＬに分割されている。ここで、ブロックＢＬは全て同じ記憶容量を有し、データを消去する際の最小単位（消去単位）となる。本例では、１つのブロックＢＬの記憶容量が一例として４キロバイトである。
【００５０】
本実施形態では、図３に示す（Ｎ＋１）個のブロック０〜Ｎのうち、データＤを保存するための領域として図４に示す二つのブロックＡ，Ｂを使用する。
図４に示すように、二つのブロックＡ，Ｂは、ブロックを８分割することにより８つの領域に分割されている。これら８つの領域は、１つの管理領域ＣＡと、７個のデータ格納領域（以下、単に「データ領域ＤＡ」という）（図４ではデータ領域０〜６）とからなる。７個のデータ領域ＤＡは、データＤが書き込まれる領域である。
【００５１】
ここで、従来の情報処理装置はＥＥＰＲＯＭにデータＤを保存していた関係から、データＤは従来使用のＥＥＰＲＯＭの記憶容量にほぼ等しいデータ容量を有している。そのため、本実施形態では、一例として、データ領域ＤＡの記憶容量がＥＥＰＲＯＭの記憶容量に等しくなるようにブロックの分割数を決めている。１つのブロックの記憶容量が４キロバイトである本例では、従来のＥＥＰＲＯＭの記憶容量が５１２バイトであるので、ブロックを８分割することにより、１つのデータ領域ＤＡの記憶容量を、従来と同内容のデータＤを記憶できるように５１２バイトにしている。もちろん、ブロックＡ，Ｂの分割数は、データ領域ＤＡがデータＤを格納しうる記憶容量になる限りにおいて適宜の数を採用することができる。例えばブロックをＫ（但しＫは３以上の自然数）分割して、１個の管理領域ＣＡと（ｋ−１）個のデータ領域ＤＡとからなる構成であればよい。３分割してデータ領域ＤＡを２個とした構成や、４分割してデータ領域ＤＡを３個とした構成、さらには１６分割してデータ領域ＤＡを１５個とした構成などでもよい。また、ブロックの分割もＫ等分に限定されず、管理領域ＣＡとデータ領域ＤＡが異なる記憶容量となる分割方法も採用できる。
【００５２】
図５は、二つのブロックＡ，Ｂの構成を詳細に示したものである。但し、図５では、二つのブロックＡ，Ｂは同じ構成なので、ブロックＡのみを示す。図５に示すように、管理領域ＣＡは、ＲＯＭ状態ＲＳ、ブロック状態ＢＳ及び選択領域ＳＡ（選択情報）の３種類の管理情報を格納するための３つのフラグ領域ＦＡ１〜ＦＡ３を備えている。本実施形態では、各フラグ領域ＦＡ１〜ＦＡ３は、それぞれ１バイトの記憶容量を有している。
【００５３】
フラッシュメモリー装置２４では、ブロックのデータが消去されると、ブロック中の各１バイトは「ＦＦ」（16進数）の値をとる。このため、各フラグ領域ＦＡ１〜ＦＡ３は、データ（フラグ値）が消去されたときには「ＦＦ」の値をとる。なお、以下の説明において、各フラグ領域ＦＡ１〜ＦＡ３に格納される管理情報の値は、特に断りがない限り、16進数で表すものとする。
【００５４】
次に管理領域ＣＡに格納される３つの情報ＲＳ，ＢＳ，ＳＡについて説明する。まずＲＯＭ状態ＲＳとは、フラッシュメモリー部４２のブロックが壊れていないか否かをチェックするための情報である。ＣＰＵ２１は通常動作時においては、ブロックの消去処理終了後に、消去処理終了時点の値「ＦＦ」（16進数）をとるＲＯＭ状態ＲＳに「ＤＢ」（16進数）を書き込む。電源オン時にＲＯＭ状態ＲＳの情報を読み込み、その値が「ＤＢ」の場合はそのブロックは使用可であり、その値が「ＤＢ」以外の場合はブロックが壊れていると判断する。ＲＯＭ状態ＲＳが「ＤＢ」以外の値で壊れているブロックは使用不能になる。
【００５５】
本実施形態では、例えばフラッシュメモリー搭載の情報処理装置１１の工場出荷時に、ＲＯＭ状態ＲＳの格納領域に「ＦＦ」「ＤＢ」以外の設定値（例えば「５１」（16進数））を書き込んでいる。出荷後の初回電源オン時にＲＯＭ状態ＲＳから設定値を読み込んだ場合は、ＣＰＵ２１がフラッシュメモリー装置２４の所定記憶領域に保存されている初期状態のデータＤを読み出し、その初期状態のデータＤを、ブロックＡの最初のデータ領域（本例ではデータ領域０）に書き込む。但し、初期状態のデータＤのうち、消費材１８の種類や残量（又は消費量）などを含む初期値については、消費材１８の収容部（本体ケース等）に実装されたメモリー素子から読み込んだそのときセットされている消費材１８に応じた初期値が採用される。例えば情報処理装置１１がプリンターである場合、消費材１８の一例であるインクカートリッジに実装されたメモリー素子とＣＰＵ２１が通信してインク情報（品番、インク色、インク残量など）を読み込んで、そのインク情報を初期状態のデータＤの一部として採用する。また、給送カセットに収容された印刷媒体の枚数を検出可能なセンサーを有するプリンターの場合、センサーにより検出された印刷媒体の枚数を初期状態のデータＤの一部として採用する。
【００５６】
ブロック状態ＢＳとは、対象のブロックが使用可能か否かを示す情報である。つまり、対象のブロックが使用中か不使用かを示す情報である。本実施形態では、対象のブロックのブロック状態ＢＳとして、「使用中」「消去可」「消去済」の３つの状態のいずれか１つを示す。詳しくは、ＣＰＵ２１は、ブロックの消去処理終了後に、「７Ｆ消去済」を書き込む。そして、ＣＰＵ２１は、使用するブロックの状態を「３Ｆ（使用中）」に上書きする。また、対象のブロックの全データ領域（つまり領域０〜領域７）を全て使用した場合に「１Ｆ（消去可）」に上書きする。ＣＰＵ２１は、ブロック状態が「１Ｆ（消去可）」のときに対象のブロックの消去処理を実行する。なお、ブロック状態ＢＳには、大きくは使用中と不使用の状態があり、その不使用が「消去可」と「消去済」の２つの状態に分かれる。
【００５７】
選択領域ＳＡとは、ブロック中のどのデータ領域ＤＡを使用中かを識別するための情報である。選択領域ＳＡには、７個のデータ領域０〜６のうち選択されているデータ領域ＤＡの領域番号に対応する１バイトのフラグ値が格納される。図６に選択領域ＳＡのフラグ値の一例を示す。図６に示すように、データ領域０にはフラグ「７Ｆ」（16進数）、データ領域１にはフラグ「３Ｆ」、データ領域２にはフラグ「１Ｆ」、データ領域３にはフラグ「０Ｆ」、データ領域４にはフラグ「０７」、データ領域５にはフラグ「０３」、データ領域６にはフラグ「０１」が対応付けられている。ここで、データが消去されたときには１バイトのフラグ値は「ＦＦ」になる。フラッシュメモリー装置２４の場合、１バイトデータの変更は、ビットの「１」を「０」に落とす桁落とししかできないので、データ領域０〜６の順番に、徐々にフラグ値が小さくなるように設定されている。
【００５８】
ここで、ＣＰＵ２１により構築される各判定部３１〜３３、読出部３４、書込部３５及び消去部３６の機能を説明する。図２に示す第１判定部３１は、対象ブロック（本例ではブロックＡ，Ｂ）のブロック状態ＢＳを判定する。詳しくは、第１判定部３１は、対象ブロックのブロック状態ＢＳが、「使用中」「消去可」「消去済」のうちいずれであるかの判定、及び「使用中」であるか否かの判定を行う。
【００５９】
また、第２判定部３２は、「使用中」のブロックの選択領域ＳＡを判定する。詳しくは、第２判定部３２は、「使用中」のブロック中の７個のデータ領域０〜６のうち、選択領域ＳＡの指すデータ領域を判定する。第２判定部３２は、図６に示すデータ領域とフラグ値との対応関係を基に、フラグ値から、選択されているデータ領域の領域番号を判定する。
【００６０】
第３判定部３３は、「使用中」のブロックの選択領域ＳＡの指すデータ領域が最終の「領域６」であるか否かを判定する。詳しくは、第３判定部３３は、選択領域のフラグ値が最終のデータ領域（領域６）の領域番号「６」を指す「０１」（16進数）であるか否かを判定する。なお、本実施形態では、第３判定部により判定手段の一例が構成される。
【００６１】
読出部３４は、フラッシュメモリー装置２４から各種データを読み出す読出処理を行う。特に情報処理装置１１の電源オン時には、読出部３４は、前回の電源オフ時に、使用中のブロックに書き込まれたデータＤをＲＡＭ２３上に読み出す読出処理を行う。このとき、読出部３４は、第１判定部３１が判定した使用中のブロックにおいて、第２判定部３２が判定した選択領域ＳＡの指すデータ領域ＤＡからデータＤを読み出す。なお、本実施形態では、読出部３４により読出手段の一例が構成される。
【００６２】
書込部３５は、フラッシュメモリー装置２４に各種データを書き込む書込処理を行う。特に情報処理装置１１の電源オフ時に、情報処理装置１１の稼動中に更新されたＲＡＭ２３上のデータＤを、第１〜第３判定部３１〜３３の判定結果から決まる所定のブロックの所定のデータ領域ＤＡに書き込む書込処理を行う。なお、本実施形態では、書込部３５により書込手段の一例が構成される。
【００６３】
消去部３６は、ブロックのデータを消去する消去処理を行う。本例のフラッシュメモリー装置２４ではブロックが消去の最小単位なので、消去部３６はブロック単位でデータの消去を行う。ここで、ブロックＡ，Ｂについてはブロックの全てのデータ領域ＤＡを使い終わった以後、消去部３６は、そのブロックのデータを消去する。なお、本実施形態では、消去部３６により消去手段の一例が構成される。
【００６４】
図７は、工場出荷状態に設定される管理領域のフラグ値を示す。工場出荷時には、ブロックＡ，Ｂのデータを一旦消去して全て「ＦＦ」とした後、管理領域ＣＡに図７に示すフラグ値を書き込む。図７に示すように、工場出荷状態では、ブロックＡでは、ＲＯＭ状態ＲＳが「ＤＢ（使用可）」、ブロック状態ＢＳが「３Ｆ（使用中）」、選択領域ＳＡが「７Ｆ（領域０）」にそれぞれ設定される。また、ブロックＢでは、ＲＯＭ状態ＲＳが「ＦＦ」、ブロック状態ＢＳが「１Ｆ（消去可）」、選択領域ＳＡが「ＦＦ」にそれぞれ設定される。
【００６５】
ここで、ブロックＡ，Ｂのうち最初に使用されるブロックＡのＲＯＭ状態ＲＳを「ＤＢ（使用可）」に設定している。一旦「ＦＦ」にしてから「ＤＢ」を書き込むことができれば、そのブロックは壊れておらず使用可能であることが分かるからである。
【００６６】
ブロックＡのブロック状態ＢＳの「３Ｆ（使用中）」は、そのブロックＡが、データの読出し及び書込みを行う対象として使用中であることを示す。図７の例では、最初はブロックＡから使用するので、工場出荷時にブロックＡのブロック状態ＢＳが「３Ｆ（使用中）」に設定される。
【００６７】
ブロックＡ，Ｂの各データ領域０〜６をデータＤの格納先として使用する場合、データ領域０，１，…，６の順番に使用される。このため、ブロックＡの選択領域ＳＡにはデータの最初の格納先として選択されたデータ領域０を指す「７Ｆ」が設定される。
【００６８】
図７の管理領域中の「ＦＦ」のところは特にフラグ値の変更（設定）を行っていない部分である。これは、ブロックＢのブロック状態ＢＳは「１Ｆ（消去可）」となっており、情報処理装置１１が最初（初回）に電源オンされたときに、ブロックＢのデータは消去されるので、必要なブロック状態ＢＳのみフラグ値を設定し、ＲＯＭ状態ＲＳ及び選択領域ＳＡは消去終了時の値「ＦＦ」のままとしている。
【００６９】
情報処理装置１１の初回電源オン時は、図７に示すフラグ値が設定されている。このため、ブロックＡのＲＯＭ状態ＲＳのフラグ値「ＤＢ」から、ブロックＡが「使用可」であり、かつそのブロック状態ＢＳのフラグ値「３Ｆ」からブロックＡが「使用中」であり、さらに選択領域ＳＡの「７Ｆ」の指すデータ領域０が、最新のデータＤの読込み元として選択されていることが分かる。なお、ＲＯＭ状態ＲＳに前述の設定値（例えば「５１」（16進数））を書き込んでおく例では、出荷後の初回電源オン時に設定値を読み込んだ場合、フラッシュメモリー装置２４の所定記憶領域が、初期状態のデータＤの読込み元となる。
【００７０】
図８は電源オン時にフラッシュメモリー装置２４からデータＤを読み込むためにＣＰＵ２１が実行するプログラムであるデータ読出し処理ルーチンを示すフローチャートである。また、図９は電源オフ時にデータＤをフラッシュメモリー装置に書き込むためにＣＰＵ２１が実行するプログラムであるデータ書込み処理ルーチンを示すフローチャートである。図８及び図９にフローチャートで示されるプログラムは、フラッシュメモリー装置２４中の（Ｎ＋１）個のブロック０〜ＮのうちブロックＡ，Ｂ以外の所定ブロックに記憶されている。
【００７１】
ＣＰＵ２１は電源オン時にはフラッシュメモリー装置２４の所定ブロックから図８に示すデータ読出し処理ルーチンのプログラムを読出し、これを実行することにより、電源オン時のデータ読出し処理を行う。また、ＣＰＵ２１は電源オフ時にはフラッシュメモリー装置２４の所定ブロックから図９に示すデータ書込み処理ルーチンのプログラムを読出し、これを実行することにより、電源オフ時のデータ書込み処理を行う。
【００７２】
図１０〜図１２は、情報処理装置１１の電源をオン／オフさせた回数と、その回数に対応する各ブロックＡ，Ｂの管理領域のフラグ値の遷移の様子を示したものである。まず、図１０〜図１２を用いて、電源オン／オフの回数（何回目）と、その回数毎の電源オン時のフラグ値と電源オフ時のフラグ値を示す遷移状態について説明する。ここで、図１０は、１回目〜６回目の電源オン／オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示すものである。また、図１１は、７回目〜１３回目の電源オン／オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示すものである。さらに図１２は、１４回目の電源オン／オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示す。
【００７３】
図１０に示すように、１回目の電源オンを行う前は、図７に示す工場出荷状態のフラグ値にある。１回目の電源オン時は、ブロックＡのＲＯＭ状態が「ＤＢ（使用可）」なので、ブロックＡが使用可能であることが分かる。さらにブロックＡのブロック状態が「３Ｆ（使用中）」になっているので、ブロックＡの選択領域ＳＡで指し示された領域からデータを読出すことになる。選択領域ＳＡは「７Ｆ（領域０）」になっている。よって、１回目の電源オン時には、ブロックＡの「データ領域０」からデータを読み出す。また、ブロックＢのブロック状態ＢＳが「１Ｆ（消去可）」なので、ブロックＢのデータを消去する。この結果、図１０に示すように、１回目の電源オン時にブロックＢのデータは消去される。
【００７４】
情報処理装置１１を稼働させた後にユーザーが電源オフ操作した電源オフ時には、ブロック状態ＢＳが「使用中」であるブロックＡの選択領域「領域１」に「１」を加えた「領域２」にデータを書き込む。すなわち、電源オン時にデータ読み出し元の領域（図１０の例では「領域０」）の次の領域（本例では「領域１」）をデータの書込み先とする。データを書き込んだ後は、選択領域ＳＡがデータの書込み先の領域番号を指し示すように、選択領域ＳＡのフラグ値を前回の選択領域の領域番号に「１」を加えた領域番号に変更する。
【００７５】
また、管理領域中の３つの領域の全てが「ＦＦ」であるブロックＢについては、ＲＯＭ状態ＲＳを「ＤＢ（使用可）」にし、その回の電源オン時に消去を済ませているのでブロック状態ＢＳを「７Ｆ（消去済）」にし、さらに最初にデータの読み出しが行われる「データ領域０」を指し示すように選択領域ＳＡを「７Ｆ（領域０）」にする。
【００７６】
２回目の電源オン時は、ブロック状態が「３Ｆ（使用中）」であるブロックＡの選択領域「３Ｆ」で指し示された「領域１」からデータを読み出す。そして、２回目の電源オフ時には、ブロック状態が「３Ｆ（使用中）」であるブロックＡの選択領域「３Ｆ」で指し示された「領域１」の領域番号に「１」を加えた領域番号である「領域２」にデータを書き込む。そして、選択領域をデータ書込み先の領域番号である「１Ｆ（領域２）」に変更する。
【００７７】
以下、３回目〜第５回目も同様に、電源オン時に使用中のブロックＡの選択領域で指し示された領域番号のデータ領域からデータを読み出すとともに、電源オフ時に使用中のブロックＡの選択領域で指し示された領域番号に「１」を加えた領域番号で示されるデータ領域にデータを書き込む。そして、データ書込み後に、ブロックＡの選択領域をデータ書込み先の領域番号を指し示すフラグ値に変更する。
【００７８】
そして、６回目の電源オン時には、ブロック状態が「３Ｆ（使用中）」であるブロックＡの選択領域「０１」で指し示された「領域６」からデータを読み出す。そして、６回目の電源オフ時には、ブロック状態が「３Ｆ（使用中）」であるブロックＡの選択領域「０１」で指し示された「領域６」になっている。しかし、領域６が最終番号なので、他方のブロックＢの選択領域の「７Ｆ」で指し示された「領域０」にデータを書き込む。そして、データ書込み先のブロックＢのブロック状態を「３Ｆ（使用中）」に変更し、かつそれまで「使用中」であったブロックＡのブロック状態を「１Ｆ（消去可）」に変更する。こうして６回の電源オン／オフにより、一方のブロックＡのデータ領域０〜６の全てがデータの書込みに使用され、６回目の電源オフ時にデータの書込み先がブロックＡから他方のブロックＢに切り替えられる。
【００７９】
そして、７回目〜１３回目の電源オン／オフのときには、１回目〜６回目の電源オン／オフ時と、使用中のブロックがＡとＢで入れ替わるだけで、電源オン時のデータの読出しと電源オフ時のデータの書込みが同様の手順で行われる。
【００８０】
すなわち、７回目の電源オン時に、ブロック状態が「消去可」になっているブロックＡのデータを消去し、消去後にブロック状態を「７Ｆ（消去済）」に変更する。そして、ブロック状態が「使用中」のブロックＢの選択領域の「７Ｆ」で指し示される「領域０」からデータを読み出す。
【００８１】
そして、７回目の電源オフ時には、ブロックＡのＲＯＭ状態を「ＤＢ（使用可）」に変更するとともに、選択領域を最初の領域番号を指し示す「７Ｆ（領域０）」に変更する。さらにブロック状態が「使用中」であるブロックＢの選択領域に格納された「７Ｆ」で指し示された「領域０」の領域番号に「１」を加えた領域番号である「データ領域１」にデータを書き込む。そして、ブロックＢの選択状態をそれまでの領域番号に「１」を加えた領域番号で示される「３Ｆ（領域１）」に変更する。
【００８２】
８回目の電源オン時は、使用中のブロックＢの選択領域のフラグ値「３Ｆ」で指し示された「領域１」からデータを読み出す。そして、８回目の電源オフ時は、使用中のブロックＢの選択領域のフラグ値「３Ｆ」で指し示された「領域１」の領域番号に「１」を加えた領域番号である「領域２」にデータを書き込む。そして、選択領域のフラグ値を、そのフラグ値「３Ｆ」が指し示す「領域１」の領域番号に「１」を加えた領域番号である「領域２」に変更する。
【００８３】
そして、以下、９回目〜第１２回目も同様に、電源オン時に使用中のブロックＢの選択領域で指し示された領域番号のデータ領域からデータを読み出すとともに、電源オフ時に使用中のブロックＢの選択領域で指し示された領域番号に「１」を加えた領域番号で示されるデータ領域にデータを書き込む。そして、データ書込み後に、ブロックＢの選択領域をデータ書込み先の領域番号を指し示すフラグ値に変更する。
【００８４】
そして、１３回目の電源オン時には、ブロック状態が「３Ｆ（使用中）」であるブロックＢの選択領域「０１」で指し示された「領域６」からデータを読み出す。そして、１３回目の電源オフ時には、ブロック状態が「３Ｆ（使用中）」であるブロックＢの選択領域「０１」で指し示された「領域６」になっている。しかし、領域６が最終番号なので、他方のブロックＡの選択領域の「７Ｆ」で指し示された「領域０」にデータを書き込む。そして、データ書込み先のブロックＡのブロック状態を「３Ｆ（使用中）」に変更し、かつそれまで「使用中」であったブロックＢのブロック状態を「１Ｆ（消去可）」に変更する。こうして１３回目の電源オン／オフを終えると、一方のブロックＢのデータ領域０〜６の全てがデータの書込みに使用され、１３回目の電源オフ時にデータの書込み先がブロックＢから他方のブロックＡに切り替えられる。
【００８５】
そして、１４回目の電源オン時に、ブロック状態が「消去可」になっているブロックＢのデータを消去し、消去後にブロック状態を「７Ｆ（消去済）」に変更する。そして、ブロック状態が「使用中」のブロックＡの選択領域の「７Ｆ」で指し示される「領域０」からデータを読み出す。
【００８６】
そして、１４回目の電源オフ時には、ブロックＢのＲＯＭ状態を「ＤＢ（使用可）」に変更するとともに、選択領域を最初の領域番号を指し示す「７Ｆ（領域０）」に変更する。さらにブロック状態が「使用中」であるブロックＡの選択領域に格納された「７Ｆ」で指し示された「領域０」の領域番号に「１」を加えた領域番号である「データ領域１」にデータを書き込む。そして、ブロックＡの選択状態をそれまでの領域番号に「１」を加えた領域番号で示される「３Ｆ（領域１）」に変更する。
【００８７】
次に、情報処理装置１１の作用を、図８及び図９に示すフローチャートに基づいて、必要に応じて図１０〜図１２のデータ遷移図を参照しつつ説明する。まず図８に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図８及び図９では、ブロックＡの管理領域を「管理領域Ａ」と呼び、ブロックＢの管理領域を「管理領域Ｂ」と呼ぶ。
【００８８】
まずステップＳ１１においてブロックＡの管理領域を読み出し、次のステップＳ１２においてブロックＢの管理領域を読み出す。
ステップＳ１３では、管理領域Ａのブロック状態が「消去済」、「消去可」、「使用中」のいずれであるかを判断する。「使用中」であれば、ステップＳ１４において、ブロックＡの選択状態の指すデータ領域からデータを読み出す。
【００８９】
一方、ステップＳ１３の判断結果が「消去可」であれば、ステップＳ１５において、ブロックＡの消去を行う。そして、次のステップＳ１６において、管理領域Ａのブロック状態を「消去済」にする。また、ステップＳ１３の判断結果が「消去済」であれば、ステップＳ１７に進む。
【００９０】
ステップＳ１７では、管理領域Ｂのブロック状態が「消去済」、「消去可」、「使用中」のいずれであるかを判断する。「使用中」であれば、ステップＳ１８において、ブロックＢの選択状態の指すデータ領域からデータを読み出す。
【００９１】
一方、ステップＳ１７の判断結果が「消去可」であれば、ステップＳ１９において、ブロックＢの消去を行う。そして、次のステップＳ２０において、管理領域Ｂのブロック状態を「消去済」にする。また、ステップＳ１７の判断結果が「消去済」であれば、当該ルーチンを終了する。
【００９２】
なお、ブロックＡ，Ｂの各ブロック状態が共に「消去済」である場合は異常とし、所定の異常処理を行う。この異常の際はブロックＡ，Ｂの選択領域からデータを読み出さずに、工場出荷時に別の領域に書き込まれているデータ（初期データ）を読み出す。その後、管理領域Ａのブロック状態ＢＳを「使用中」にするとともに、その選択領域ＳＡに「領域０」を書き込む。
【００９３】
次に図９に示す電源オフ時のデータ書込み処理ルーチンについて説明する。
まずステップＳ３１においてブロックＡの管理領域を読み出し、次のステップＳ３２においてブロックＢの管理領域を読み出す。
【００９４】
ステップＳ３３では、管理領域Ａのブロック状態が「使用中」であるかを判断する。「使用中」であれば、ステップＳ３４において、管理領域Ａの選択領域が「領域６」であるかを判断する。「領域６」でなければ、ステップＳ３５において、ブロックＡの「選択領域＋１」の指すデータ領域へデータを書き込む。つまり、ブロックＡの選択領域の指す領域番号に「１」を加えた領域番号のデータ領域へデータを書き込む。
【００９５】
次のステップＳ３６では、管理領域Ａの選択領域を「前回の領域＋１」にする。
一方、ステップＳ３４の判断結果が「領域６」であれば、ステップＳ３７において、ブロックＢの選択領域０へデータを書き込む。すなわち、ブロックＢの選択領域の指す領域番号「０」に対応するデータ領域０へデータを書き込む。
【００９６】
次のステップＳ３８では、管理領域Ｂの選択領域を「領域０」にする。
さらに次のステップＳ３９では、管理領域Ｂのブロック状態を「使用中」にする。
そして、次のステップＳ４０では、管理領域Ａのブロック状態を「消去可」にする。
【００９７】
一方、ステップＳ３３の判断結果が管理領域Ａのブロック状態が「使用中」でなかった場合は、ステップＳ４１において、管理領域Ａの選択領域が「領域６」であるかを判断する。「領域６」でなければ、ステップＳ４２において、ブロックＢの「選択領域＋１」の指すデータ領域へデータを書き込む。つまり、ブロックＢの選択領域の指す領域番号に「１」を加えた領域番号のデータ領域へデータを書き込む。
【００９８】
次のステップＳ４３では、管理領域Ｂの選択領域を「前回の領域＋１」にする。
一方、ステップＳ４１の判断結果が「領域６」であれば、ステップＳ４４において、ブロックＡの選択領域０へデータを書き込む。すなわち、ブロックＡの選択領域の指す領域番号「０」に対応するデータ領域０へデータを書き込む。
【００９９】
次のステップＳ４５では、管理領域Ａの選択領域を「領域０」にする。
さらに次のステップＳ４６では、管理領域Ａのブロック状態を「使用中」にする。
そして、次のステップＳ４７では、管理領域Ｂのブロック状態を「消去可」にする。
【０１００】
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
（１）二つのブロックＡ，Ｂを使用し、ブロックをｋ（ｋは３以上の自然数）分割し、１個の管理領域ＣＡと（ｋ−１）個のデータ領域０〜k-1とに分割した。そして、管理領域ＣＡには、ＲＯＭ状態ＲＳ、ブロック状態ＢＳ、選択領域ＳＡの各管理情報を格納した。このため、ＣＰＵ２１は、第１判定部３１が判定したブロック状態ＢＳのフラグ値から使用中のブロックを知ることができ、また選択領域ＳＡのフラグ値からデータの読出し元及び書込み先のデータ領域を知ることができる。例えばＣＰＵが使用中のブロックを検索し、かつ複数のデータ領域の中から使用中（選択中）のデータ領域を検索する構成とすると、検索処理に多大な時間を要することになる。しかし、本実施形態では、管理領域中のフラグ値を調べるだけで済むので、データの読出処理及び書込処理を高速化できる。また、従来技術で述べたデータ管理方法のようにデータ管理領域内にデータ格納領域と同数用意されたデータ管理テーブルをいちいち検索しなくても、本実施形態によれば、管理領域ＣＡ内のブロック状態ＢＳと選択領域ＳＡの各情報を用いて、読出し元のデータ領域と書込み先のデータ領域を速やかに把握して、データＤの読出し及び書込みを速やかに行うことができる。
【０１０１】
（２）電源オン時のデータ読出し時には、選択領域の指すデータ領域からデータＤを読み出せばよいので、データ読出し処理を高速化できる。
（３）電源オフ時のデータ書込み時には、選択領域の指すデータ領域の領域番号に「１」を加えた領域番号のデータ領域へデータＤを書き込めばよいので、データ書込み処理を高速化できる。
【０１０２】
（４）第２判定部３２により、使用中のブロックの選択領域が最終のデータ領域（本例では「領域６」）を指すか否かを判定し、最終のデータ領域を指す場合は、他方のブロックの最初のデータ領域にデータを書き込む。よって、二つのブロックＡ，Ｂのうち使用中のブロックの全てのデータ領域が使用済みになった場合でも、他方のブロックの最初のデータ領域にデータを書き込むことができる。
【０１０３】
（５）第２判定部３２により、使用中のブロックの選択領域が最終のデータ領域を指すと判定された場合に、その使用中のブロックのブロック状態を「消去可」とする。そして、次回の電源オン時に第１判定部３１によりブロック状態が「消去可」になっていると判定されると、消去部３６がそのブロックの消去処理を行う。よって、二つのブロックＡ，Ｂのうち使用中のブロックの全てのデータ領域が使用済みになった場合に、その使用済みのブロックの消去処理を行うことができる。また、ブロックの最初のデータ領域にデータを書き込む順番が回ってくる前に予め消去処理を行っておくので、他方のブロックのデータ領域を全て使い終わったときにも、データを書き込むことができる。
【０１０４】
（６）ブロックＡのデータ領域０〜Ｎ（本例ではＮ＝７）を全て使い終わってから、ブロックＢへ切り替えるので、Ｎ回の電源オン／オフに１回の割でデータ消去処理を行えばよい。この結果、フラッシュメモリー装置２４の消去処理回数を低減することができ、フラッシュメモリー装置２４を長寿命化させることができる。
【０１０５】
（７）「消去可」になったブロックの消去処理を電源オン時に行う。このため、電源オフ時のデータ書込み処理を、消去処理が無くなった分だけ短時間で済ませることができる。
【０１０６】
（８）データを消去した後に、ブロック状態の更新を行うので、ブロック状態が更新されてからデータを書込むまでの間に電源異常遮断が発生した場合でも、更新前のブロック状態の情報から再度データ消去が行われるので、データ消去を確実に行うことができる。例えば、これとは逆に、ブロック状態の更新後に、データを消去する構成であると、その間に電源異常遮断が発生した場合に、データ消去が行われていないにも関わらず、更新後のブロック状態が「消去済」になっていると、データ消去が行われない場合も起こりうる。しかし、前記実施形態では、データ消去を確実に行うことができる。
【０１０７】
（９）データＤの記憶に使用するブロックを二つとし、一方のブロックの全てのデータ領域が使い終わった段階で使用ブロックを他方のブロックへ移行するように、二つのブロックＡ，Ｂを交互に使用するローテーションを採用している。よって、データＤの記憶に使用するブロック数を、本実施形態のデータ管理方法を採用する場合の最少個数に抑えることができる。
【０１０８】
（第２実施形態）
次に第２実施形態を図１３〜図１６に基づいて説明する。前記第１実施形態では電源オン時に消去処理を行ったが、この第２実施形態では電源オフ時に消去処理を行う構成である。本実施形態は、「消去可」のブロックの消去処理を電源オフ時に行うことにより、電源オン処理の所要時間を短くして、電源オン操作から印刷開始可能な状態になるまでの所要時間を短くすることを目的としている。
【０１０９】
図１３は、工場出荷状態に設定される管理領域のフラグ値を示す。工場出荷時には、ブロックＡ，Ｂのデータを一旦消去して全て「ＦＦ」とした後、管理領域ＣＡに図１３に示すフラグ値を書き込む。図１３に示すように、工場出荷状態では、ブロックＡは、最初（初回）の電源オフ時に消去処理の対象となるので、ＲＯＭ状態ＲＳ、ブロック状態ＢＳ、選択領域ＳＡが全て「ＦＦ」のままとされる。また、ブロックＢでは、ＲＯＭ状態ＲＳが「ＤＢ（使用可）」、ブロック状態ＢＳが「３Ｆ（使用中）」、選択領域ＳＡが「０１（領域６）」にそれぞれ設定される。このため、ブロックＢのデータ領域６に初期データが格納される。もちろん、ＲＯＭ状態ＲＳを「ＦＦ」「ＤＢ」以外の設定値（例えば「５１」）とし、出荷後の初回電源オン時にＣＰＵ２１がフラッシュメモリー装置２４の所定記憶領域に保存されている初期状態のデータＤを読み出す構成も採用できる。
【０１１０】
図１４は、情報処理装置１１の電源をオン／オフさせた回数と、その回数に対応する各ブロックＡ，Ｂの管理領域のフラグ値の遷移の様子を示したものである。但し、図１４では、８回目の電源オン／オフ時のフラグ値の遷移状態を示す。
【０１１１】
次に、情報処理装置１１の作用を、図１５及び図１６に示すフローチャートに基づいて、必要に応じて図１４のデータ遷移図を参照しつつ説明する。まず図１５に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図１５及び図１６では、前記第１実施形態と同様、ブロックＡの管理領域を「管理領域Ａ」と呼び、ブロックＢの管理領域を「管理領域Ｂ」と呼ぶ。初回の電源オン時は、管理領域ＣＡは、図１３に示す工場出荷状態に設定されるフラグ値になっている。
【０１１２】
本実施形態では、電源オン時の消去処理は行わないので、図１５に示すフローチャートは、前記第１実施形態の図８に示す電源オン時のデータ読出し処理ルーチンから、消去処理に関係する処理が廃止されている。
【０１１３】
まずステップＳ５１においてブロックＡの管理領域を読み出し、次のステップＳ５２においてブロックＢの管理領域を読み出す。
ステップＳ５３では、管理領域Ａのブロック状態が「使用中」であるか否かを判断する。そして、その判断結果が「使用中」であれば、ステップＳ５４において、ブロックＡの選択状態の指すデータ領域からデータを読み出す。
【０１１４】
一方、ステップＳ５３においてブロックＡのブロック状態が「使用中」でなければ、ステップＳ５５において、管理領域Ｂのブロック状態が「使用中」であるか否かを判断する。そして、その判断結果が「使用中」であれば、ステップＳ５６において、ブロックＢの選択状態の指すデータ領域からデータを読み出す。本例の場合、初回の電源オン時に、管理領域Ｂのブロック状態が「使用中（「３Ｆ」）」（図１３参照）であるので、ブロックＢの選択領域の値「０１（領域６）」で示されたデータ領域６から初期状態のデータＤを読み出す。
【０１１５】
また、ステップＳ５５の判断結果が「使用中」でない場合、つまり、管理領域Ａと管理領域Ｂの各ブロック状態が共に「使用中」でない場合は、ステップＳ５７において、異常とし、所定の異常処理を行う。
【０１１６】
なお、ブロックＡ，Ｂの各ブロック状態が共に「使用中」であるか否かの判定も行って、各ブロック状態が共に「使用中」である場合も異常とし、所定の異常処理を行うようにしてもよい。異常の際はブロックＡ，Ｂの選択領域からデータを読み出さずに、工場出荷時に別の領域に書き込まれている初期状態のデータ（初期データ）を読み出す。
【０１１７】
こうして電源オン時に初期状態のデータＤをＲＡＭ２３の所定記憶領域に書き込む。情報処理装置１１の電源オン後の稼働中は、所定動作を行って更新されたデータをＲＡＭ２３の所定記憶領域に上書きすることにより、ＲＡＭ２３のデータは逐次更新される。そして、電源オフ時には、ＲＡＭ２３に記憶された更新のデータＤを保存すべく、そのデータＤをフラッシュメモリー装置２４へ書き込む図１６に示す処理が行われる。
【０１１８】
次に図１６に示す電源オフ時のデータ書込み処理ルーチンについて説明する。
まずステップＳ６１においてブロックＡの管理領域を読み出し、次のステップＳ６２においてブロックＢの管理領域を読み出す。
【０１１９】
ステップＳ６３では、管理領域Ａのブロック状態が「使用中」であるか否かを判断する。すなわち、管理領域Ａのブロック状態が「使用中」であるか、それとも管理領域Ｂのブロック状態が「使用中」であるかを判断する。管理領域Ａのブロック状態が「使用中」でなければ、つまり管理領域Ｂのブロック状態が「使用中」であればステップＳ６４に進む。一方、管理領域Ａのブロック状態が「使用中」であればステップＳ７３に進む。
【０１２０】
ステップＳ６４では、管理領域Ｂの選択領域が「領域６」であるか否かを判断する。例えば初回電源オフ時は管理領域Ｂの選択領域が「領域６」になっているので（図１３参照）、ステップＳ６７に進んで、ブロックＡを消去する。すなわち、ＣＰＵ２１はブロックＡのアドレスを指定して消去コマンドをフラッシュメモリー装置２４に送る。その結果、フラッシュメモリー装置２４はブロックＡのデータを消去する。
【０１２１】
次のステップＳ６８では、管理領域ＡのＲＯＭ状態を「使用可」、ブロック状態を「消去済」にする。
そして、次のステップＳ６９において、ブロックＡの最初の領域番号「０」に対応するデータ領域０へデータを書き込む。さらに次のステップＳ７０では、管理領域Ａの選択領域を「領域０」にする。そして、ステップＳ７１では、管理領域Ａのブロック状態を「使用中」にする。さらにステップＳ７２において、管理領域Ｂのブロック状態を「消去可」にする。このため、ブロック状態が「使用中」にある管理領域Ａ側の選択領域は、データが書き込まれた「領域０」を指すことになる。
【０１２２】
こうして初回電源オフ時に、ブロックＡが消去されるとともに、ブロックＡのデータ領域０にデータＤが書き込まれる。そして、最新のデータＤが書き込まれたブロックＡの管理領域ＣＡには、ＲＯＭ状態「使用可」、ブロック状態「使用中」、選択領域「領域０」の各情報が格納される。
【０１２３】
次に２回目の電源オン時は、図１５のステップＳ５３において管理領域Ａのブロック状態が「使用中」であると判断されるので（Ｓ５３で肯定判定）、ステップＳ５４においてブロックＡの選択領域「領域１」の指すデータ領域１からデータを読み出す。
【０１２４】
そして、２回目の電源オフ時は、ステップＳ６３において管理領域Ａのブロック状態が「使用中」と判断されるので、ステップＳ７３に進む。そして、ステップＳ７３において管理領域Ａの選択領域が「領域６」であるか否かを判断する。「領域６」であればステップＳ７６に進み、「領域６」でなければステップＳ７４に進む。２回目の電源オフ時は「領域１」であり「領域６」ではないので、ステップＳ７４に進むことになる。
【０１２５】
ステップＳ７４では、ブロックＡの選択領域の指す領域番号に「１」を加えた領域番号に対応するデータ領域へデータを書き込む。すなわち、２回目の電源オフ時は、そのときの「領域番号１」に「１」を加えた領域番号「２」に対応するデータ領域２にデータＤを書き込む。そして、次のステップＳ７５において、管理領域Ａの選択領域を「前回の領域＋１」にする。つまり、２回目の電源オフ時は、管理領域Ａの選択領域を、前回の領域１＋１、すなわち「領域２」にする。この結果、ブロック状態が「使用中」にある管理領域Ａ側の選択領域はデータが書き込まれたデータ領域を指すことになる。
【０１２６】
こうして以下、同様に、３回目の電源オン時に、管理領域Ａのブロック状態が「使用中」である側のブロックＡの選択領域「領域２」の指すデータ領域１からデータＤを読み出す（Ｓ５３，Ｓ５４）。そして、３回目の電源オフ時に、管理領域Ａのブロック状態が「使用中」であり（Ｓ６３で肯定判定）、かつ選択領域が「領域６」ではなく「領域２」なので（Ｓ７３で否定判定）、ブロックＡの選択領域「領域２」に「１」を加えた領域番号の指すデータ領域３へデータＤを書き込む（Ｓ７４）。そして、管理領域Ａの選択領域を前回の領域２に「１」を加えた「領域３」にする（Ｓ７５）。
【０１２７】
そして、４回目の電源オン／オフ、５回目の電源オン／オフを終え、さらに６回目の電源オン／オフを終えると、ブロックＡの選択領域「領域５」に「１」を加えた領域番号の指すデータ領域６へデータＤを書き込む（Ｓ７４）。そして、管理領域Ａの選択領域を前回の領域５に「１」を加えた「領域６」にする（Ｓ７５）。こうしてブロックＡの各データ領域にデータＤが格納されたことになる。
【０１２８】
次の７回目の電源オン時は、図１５のステップＳ５３において管理領域Ａのブロック状態が「使用中」であると判断され（Ｓ５３で肯定判定）、さらにブロックＡの選択領域「領域６」の指すデータ領域６からデータＤを読み出す（Ｓ５４）。
【０１２９】
そして、７回目の電源オフ時は、管理領域Ａのブロック状態が「使用中」と判断され（Ｓ６３で肯定判定）、かつステップＳ７３において管理領域Ａの選択領域が「領域６」であると判断される。「領域６」であるためステップＳ７６に進むことになる。
【０１３０】
ステップＳ７６では、ブロックＢを消去する。すなわち、ＣＰＵ２１はブロックＢのアドレスを指定して消去コマンドをフラッシュメモリー装置２４に送る。その結果、フラッシュメモリー装置２４はブロックＢのデータを消去する。
【０１３１】
次のステップＳ７７では、管理領域ＢのＲＯＭ状態を「使用可」、ブロック状態を「消去済」にする。
そして、次のステップＳ７８において、ブロックＢの最初の領域番号「０」に対応するデータ領域０へデータを書き込む。さらに次のステップＳ７９では、管理領域Ｂの選択領域を「領域０」にする。そして、ステップＳ８０では、管理領域Ｂのブロック状態を「使用中」にする。さらにステップＳ８１において、管理領域Ａのブロック状態を「消去可」にする。このため、ブロック状態が「使用中」にある管理領域Ｂ側の選択領域は、データが書き込まれた「領域０」を指すことになる。
【０１３２】
こうして７回目の電源オフ時に、ブロックＢが消去されるとともに、ブロックＢのデータ領域０にデータＤが書き込まれる。そして、最新のデータＤが書き込まれたブロックＢの管理領域ＣＡには、ＲＯＭ状態「使用可」、ブロック状態「使用中」、選択領域「領域０」の各情報が格納される。
【０１３３】
このように、１回目の電源オフ時にブロックＡの消去処理を行い、８回目の電源オフ時にブロックＢの消去処理が行われ、１５回目の電源オフ時にブロックＡの消去処理が行われ、２２回目の電源オフ時にブロックＢの消去処理が行われる。つまり、１回目の電源オフ時にブロックＡの消去処理が行われた後、その消去後のブロックＡの最初のデータ領域０にデータＤが書き込まれ、以後、２回目〜７回目の電源オフ時には、そのときのブロックＡの選択領域の指す領域番号に「１」を加算した各データ領域１〜６にその電源オフ時のデータＤが順次書き込まれる。そして、８回目の電源オフ時には、「使用中」のブロックＢ側の選択領域が「領域６」なので、ブロックＢの消去処理が行われる。
【０１３４】
８回目の電源オフ時にブロックＢの消去処理が行われた後、その消去後のブロックＢの最初のデータ領域０にデータＤが書き込まれ、以後、９回目〜１４回目の電源オフ時には、そのときのブロックＢの選択領域の指す領域番号に「１」を加算した各データ領域１〜６にその電源オフ時のデータＤが順次書き込まれる。そして、１５回目の電源オフ時には、「使用中」のブロックＢ側の選択領域が「領域６」なので、ブロックＡに消去処理が行われる。このように８回の電源オフ毎にブロックＡとブロックＢに交互に消去処理が行われる。つまり、ブロック当たりにデータ領域が（Ｎ＋１）個（本例では７個）ある場合、｛２（Ｎ＋１）ｍ＋１｝回目（但しｍ＝０，１，２…）の電源オフ時にはブロックＡの消去処理が行われ、｛２（Ｎ＋１）ｍ＋８｝回目の電源オフ時にはブロックＢの消去処理が行われる。
【０１３５】
よって、図１４に示すように、８回目の電源オン時に、ブロック状態が「使用中」であるブロックＡの「領域６」からデータＤを読み出し、情報処理装置１１の稼働中においてＲＡＭ２３のこのデータＤを逐次更新する。そして、８回目の電源オフ時に、ブロック状態が「使用中」であるブロックＡの選択領域が「領域６」であるので、ＣＰＵ２１はブロックＢのアドレスを指定してフラッシュメモリー装置２４に消去コマンドを送る。そして、ＣＰＵ２１は消去コマンド送信の後、状態レジスター４４から信号状態を監視し、フラッシュメモリー装置２４が消去処理中であることを示すビジー信号から、消去処理終了を示すレディー信号に切り換わったことをもって消去完了を確認する。
【０１３６】
そして、図１４に示すように、消去完了を確認すると、ブロックＢのＲＯＭ領域を「使用可」、ブロック状態を「消去済」とし、その後、ブロックＢの最初のデータ領域０にデータを書き込み、この書込み後、ブロックＢの選択領域を「領域０」にする。さらに、図１４に示すように、ブロックＡのブロック状態を「消去可」、ブロックＢのブロック状態を「使用中」にする。
【０１３７】
また、情報処理装置１１の稼動中に、停電やコンセント抜けなどが原因で、不意な電源遮断が発生した場合、ＣＰＵ２１は電源オフ時のデータ書込み処理を行う。但し、このような不意な電源遮断時は、比較的時間を要する消去処理は行わない。情報処理装置１１は、内部にキャパシター式の二次電池（図示せず）を備え、二次電池が放電し切るまでの所定時間の間はＣＰＵ２１への電力供給が行われる。この所定時間は比較的短いため、消去処理を行えるほどの時間はない。このため、不意な電源遮断時は、消去処理以外のデータＤの書込み処理を優先的に行うようになっている。この場合、その電源遮断時に消去処理が必要であった場合は、次回の電源オン時にブロック状態が「消去可」になっているので、「消去可」であった場合に消去処理を行う。
【０１３８】
以上詳述した第２実施形態によれば、以下の効果を得ることができる。
（１０）電源オフ時にブロックの消去処理を行うので、電源オン時に消去処理を行う第１実施形態の構成に比べ、電源オン操作から印刷開始可能状態になるまでの所要時間を短くし、速やかに印刷を開始することができる。
【０１３９】
（第３実施形態）
次に第３実施形態を図１７〜図１９に基づいて説明する。この第３実施形態は、電源オフ時におけるデータＤの書込みの際に電源が異常に遮断されたことに起因して管理領域ＣＡの各情報が異常な状態となっても、次回の電源オン時に正しくデータＤを読み出すことが可能な構成の例である。本実施形態では、管理領域Ａのブロック状態と管理領域Ｂのブロック状態とが共に「使用中」であった場合、データＤを読み出すべきデータ領域の属するブロックを特定できなくなる。なお、異常電源遮断には、情報処理装置１１に電力を供給している公共電源の停電や、情報処理装置１１の電源コンセントのコンセント抜けなどが挙げられる。
【０１４０】
図１７に示すように、本実施形態のブロックＡ，Ｂの管理領域ＣＡには、ＲＯＭ状態ＲＳ、ブロック状態ＢＳ及び選択領域ＳＡに、別ブロック状態ＡＢを加えた４種類の管理情報を格納するための４つのフラグ領域ＦＡ１〜ＦＡ４を備えている。本実施形態では、各フラグ領域ＦＡ１〜ＦＡ４は、それぞれ１バイトの記憶容量を有している。
【０１４１】
ここで、ＲＯＭ状態ＲＳ、ブロック状態ＢＳ及び選択領域ＳＡは、第１及び第２実施形態のものと同様である。別ブロック状態ＡＢとは、他方のブロックのブロック状態ＢＳの内容を示す情報であり、他方のブロックのブロック状態ＢＳと同じタイミングで同期してその内容が書き替えられる。例えば図１８に示すように、６回目の電源オン時の例では、ブロックＡのブロック状態と、ブロックＢの別ブロック状態とは同じ値「３Ｆ（使用中）」になっており、ブロックＢの別ブロック状態は他方のブロックＡのブロック状態の内容を示している。また、図１８に示す６回目の電源オン時の例では、ブロックＢのブロック状態と、ブロックＡの別ブロック状態とは同じ値「７Ｆ（消去済）」になっており、ブロックＡの別ブロック状態は他方のブロックＢのブロック状態の内容を示している。
【０１４２】
次に、情報処理装置１１の作用を、図１９に示すフローチャートに基づいて、必要に応じて図１８に示す６回目の電源オン／オフ時のデータ遷移図を参照しつつ説明する。なお、電源オフ時のデータ書込み処理ルーチンは、第１実施形態の図９に示すフローチャートと同様である。
【０１４３】
以下、図１９に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図１９では、ブロックＡの管理領域を「管理領域Ａ」と呼び、ブロックＢの管理領域を「管理領域Ｂ」と呼ぶ。
【０１４４】
まずステップＳ９１においてブロックＡの管理領域を読み出し、次のステップＳ９２においてブロックＢの管理領域を読み出す。
ステップＳ９３では、管理領域Ａのブロック状態と管理領域Ｂのブロック状態が共に「使用中」であるか否かを判断する。管理領域Ａ，Ｂの各ブロック状態が共に「使用中」ではない場合、つまり管理領域Ａ，Ｂの各ブロック状態の一方のみが「使用中」である場合は、ステップＳ９４に進む。
【０１４５】
ステップＳ９４は、正常時のデータ読出し処理を行う。すなわち、第１実施形態における図８のステップＳ１３〜Ｓ２０の処理を行う。
一方、ステップＳ９３の判断結果が、管理領域Ａ，Ｂの各ブロック状態が共に「使用中」である場合は、ステップＳ９５に進んで、管理領域Ｂの別ブロック状態が「使用中」であるか否かを判断する。管理領域Ｂの別ブロック状態が「使用中」であれば、ステップＳ９６に進み、一方、「使用中」でなければステップＳ９９に進む。
【０１４６】
ステップＳ９６では、ブロックＢの消去処理を行う。
次のステップＳ９７では、管理領域Ｂのブロック状態を「消去済」にする。
さらに次のステップＳ９８では、ブロックＡの選択領域の指すデータ領域からデータを読み出す。
【０１４７】
一方、ステップＳ９５の判断結果が、管理領域Ｂの別ブロック状態が「使用中」でない場合は、ステップＳ９９において、管理領域Ａの別ブロック状態が「使用中」であるか否かを判断する。管理領域Ａの別ブロック状態が「使用中」であれば、ステップＳ１００に進み、一方、「使用中」でなければステップＳ１０３に進む。
【０１４８】
ステップＳ１００では、ブロックＡの消去処理を行う。
次のステップＳ１０１では、管理領域Ａのブロック状態を「消去済」にする。
さらに次のステップＳ１０２では、ブロックＢの選択領域の指すデータ領域からデータを読み出す。
【０１４９】
そして、ステップＳ９９の判断結果が、管理領域Ａの別ブロック状態が「使用中」でない場合は、ステップＳ１０３において異常とし異常処理を行う。
例えば図１８に示すように、６回目の電源オン時には、管理領域の４種類の情報は同図に示すようになっている。すなわち、各ブロックＡ，ＢのＲＭ状態、ブロック状態、選択状態は、第１実施形態の図１０に示す６回目の電源オン時と同様であり、さらに各ブロックＡ，Ｂの別ブロック状態は、それぞれ他方のブロック状態の内容を示している。つまり、ブロックＡの別ブロック状態はブロックＢのブロック状態の内容「７Ｆ（消去済）」を示し、ブロックＢの別ブロック状態はブロックＡのブロック状態の内容「３Ｆ（使用中）」を示している。
【０１５０】
６回目の電源オフが正常に遮断された場合、第１実施形態で説明したように、ブロックＡのブロック状態が「１Ｆ（消去可）」、ブロックＢのブロック状態が「３Ｆ（使用中）」に書き替えられる。このとき、別ブロック状態については、ブロックＡの別ブロック状態が、ブロックＢのブロック状態である「３Ｆ（使用中）」に切り換えられ、ブロックＢの別ブロック状態が、ブロックＡのブロック状態である「１Ｆ（消去可）」に書き替えられる。
【０１５１】
これに対し、６回目の電源オフの処理途中で停電やコンセント抜けなどが発生してこれが原因で異常に電源遮断された場合、管理領域の情報は例えば図１８に示すような内容になる。すなわち、図１８に示す異常遮断の例のように、ブロックＢのブロック状態は「３Ｆ（使用中）」に書き替えられたものの、ブロックＡのブロック状態の書き替えを終える前に電源が異常遮断されたため、ブロックＡのブロック状態の書き替えを失敗している。この結果、図１８に示すように、ブロックＡ，Ｂのブロック状態が共に「使用中」になっている。
【０１５２】
このとき、本実施形態では、ブロックＡ，Ｂの別ブロック状態には、それぞれ他方のブロックのブロック状態の内容が書き替えられるときに、同期して同じ内容に書き替えられる。このため、この電源異常遮断時には、図１８に示すように、ブロックＢのブロック状態が「３Ｆ（使用中）」に書き替えられるとともに、ブロックＡの別ブロック状態はブロックＢのブロック状態の内容「３Ｆ（使用中）」に書き替えられたものの、ブロックＡのブロック状態と、ブロックＢの別ブロック状態との書き替えは失敗し、少なくとも一方が異常な値になったものとする。図１８の例では、ブロックＡのブロック状態は書き替えられることなく「３Ｆ（使用中）」のままで、ブロックＢの別ブロック状態が異常に桁落ちして異常な値「１Ｆ（消去可）」になったものとする。なお、図１８の例ではたまたま正常遮断時の内容に一致しているが、このような異常遮断時にはブロックＡのブロック状態とブロックＢの別ブロック状態が一致しない。
【０１５３】
このような図１８の例のような電源の異常遮断時には、ブロックＡの別ブロック状態が「使用中」と判断される（図１９のＳ９９で肯定判定）。このため、ＣＰＵ２１はブロックＡのアドレスを指定してブロックＡの消去コマンドをフラッシュメモリー装置２４へ送ることにより、ブロックＡの消去処理を行う（Ｓ１００）。そして、ＣＰＵ２１は管理領域Ａのブロック状態を「消去済」にした（Ｓ１０１）後、ブロックＢの選択領域の指すデータ領域からデータを読み出す（Ｓ１０２）。
【０１５４】
以上詳述したように、第３実施形態によれば、以下の効果を得ることができる。
（１１）電源オフ時の処理途中で電源が異常遮断されたり、情報処理装置１１の稼動途中で電源が異常遮断されたりして、ブロックＡ，Ｂのブロック状態が共に「使用中」になっても、次回の電源オン時に別ブロック状態の値を参照することにより、正しいデータＤを読み出すことができる。
【０１５５】
なお、上記実施形態は以下のような形態に変更することもできる。
・前記各実施形態では、ブロックのデータ消去を、使用中のブロックが切り替わった後における最初の電源オフ時又は最初の電源オン時に行ったが、これに限定されない。ブロックのデータ消去は、使用中のブロックが切り替わった後、さらに次回、使用中のブロックが切り替わるまでの間に行えば足りる。例えば、使用中のブロックが切り替わった後における２回目、３回目、４回目、５回目、６回目、７回目のうちいずれかの回における電源オフ時又は電源オン時に行ってもよい。要するに、「不使用」のブロックは次回「使用中」に切り替わるまでは使用されることはないので、次回、使用中のブロックに切り替わるまでデータ消去が行われれば足りる。
【０１５６】
・省電モードに移行する際にデータ消去を行ってもよい。すなわち、省電モードへの移行時期になると、その移行前にブロック状態が「消去可」のブロックのデータ消去を行うとともに、データ消去後にそのデータ消去のブロックのブロック状態を「消去可」から「消去済」に更新する。この構成によれば、電源オン時の起動処理を早期に終了して早期に印刷を開始できるうえ、電源オフ時にのみ消去を行う構成に比べ、消去の機会が増え、さらに電源異常オフ時にはデータの書込みしかできず、データ消去を行う前もしくは消去の途中に電源が異常遮断されても、データ消去をより確実に行うことができる。
【０１５７】
・前記実施形態では、選択領域の示す領域番号ｎから「領域番号＋１」で規定される領域番号（ｎ＋１）のデータ格納領域にデータを書き込んだが、選択領域の更新をデータ書込み前に行い、更新後の選択領域の示す位置にあるデータ格納領域にデータを書き込む構成としてもよい。
【０１５８】
・前記各実施形態では、ブロック状態として「使用中」と「消去可」と「消去済」の３つの状態を採用したが、「消去可」と「消去済」とを「不使用」１つにまとめ、「使用中」と「不使用」の２種類の状態で管理してもよい。この構成でも、使用中のブロックがどちらかを特定できるうえ、使用中のブロックの選択領域の示す位置が最終の場合に、当該ブロックの消去処理と、消去処理後の当該ブロックのブロック状態の「不使用」から「使用中」への変更、及び他方のブロックのブロック状態の「使用中」から「不使用」への変更を行うことができる。
【０１５９】
・前記各実施形態においてデータＤの記憶に使用するブロック数は２つに限定されず、例えば特許文献１のように３つ以上の複数のブロックを使用し、３つ以上のブロックをローテーションで使用してもよい。
【０１６０】
・第３実施形態において、３つ以上のブロックをローテーションで使用する場合は、各ブロックの管理領域ＣＡには、３つ以上のブロックのうち当該３つのブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納される構成とすればよい。この場合、一のブロックの管理領域ＣＡ内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される別ブロック状態の値を、タイミングを同期させて更新する。この構成であれば、３つ以上のブロックのうち２つのブロックの各管理領域ＣＡ内のブロック状態が共に「使用中」になっても、どちらの「使用中」が間違いであるかを別ブロック状態の値から特定できる。よって、間違いである側のブロックの消去処理を改めて行うことができる。
【０１６１】
・選択領域ＳＡの値が、データＤの読出元となるデータ領域（又はその領域番号）を指し示す構成であることに限定されない。例えば選択領域ＳＡの値がデータＤの書込先のデータ領域（又はその領域番号）を示す構成でもよい。この場合、電源オン時のデータ読出しの際は、選択領域ＳＡの指す領域番号から「１」を減算した領域番号に対応するデータ領域からデータＤを読み出し、電源オン時には選択領域ＳＡの指す領域番号に対応するデータ領域へデータＤを書き込む構成とすればよい。また、選択領域ＳＡの値がデータ読出元のデータ領域の領域番号を指し示す構成とし、電源オン時にデータを読み出したら選択領域の値に「１」を加算することで、その選択領域の値が次の書込み先のデータ領域を指し示すように構成してもよい。このように選択情報とは、読出元のデータ領域を指し示す情報（読出位置情報）でも、書込先のデータ領域を指し示す情報（書込位置情報）でもよい。
【０１６２】
・選択情報を書込位置とした場合、判断手段は、書込位置から読出位置（例えば読出し位置の領域番号）を求め、その読出位置が最終位置（例えば「領域６」）であるか否かを判断する構成とすればよい。また、書込位置が、読出位置が最終位置であるときの値（例えば読出位置に「１」を加えた値）に達したか否かを判断する構成としてもよい。
【０１６３】
・図２におけるＣＰＵ２１内の各機能部を、プログラムを実行するＣＰＵ２１によりソフトウェアで実現したが、ハードウェアで実現したり、ソフトウェアとハードウェアとの協働により実現したりしてもよい。
【０１６４】
前記実施形態及び変形例から把握される技術的思想を以下に記載する。
（１）所定の記憶容量を有する一つずつが消去の単位となるブロックを複数有する不揮発性メモリーと、前記不揮発性メモリーに対してデータの読出し及び書替えを行う制御手段とを備えた情報処理装置であって、前記ブロックのうち、ブロックの使用・不使用を示すブロック状態と、アクセスすべき領域を規定する選択領域を少なくとも含む情報が格納される１つの管理領域と、複数のデータ格納領域とに分割された二つのブロックと、前記情報処理装置の電源オン時に、前記二つのブロックのうちブロック状態が「使用中」である一つのブロックの選択領域で示されるデータ格納領域のデータを読み出すデータ読出手段と、前記情報処理装置の電源オフ時に、前記選択領域に格納されているデータ格納領域の示す位置が最終であるか否かを判断する判断手段と、前記選択領域に格納されているデータ格納領域の示す位置が最終ではない場合、選択領域に格納されるデータ格納領域を示す位置を次の位置に更新し、更新したデータ格納領域の示す位置にデータを格納し、一方、選択領域に格納されているデータ格納領域の位置が最終の場合、一方のブロックのブロック状態を「使用中」から「消去可」に変更し、他方のブロックのブロック状態を「消去済」から「使用中」に変更し、他方のブロックのデータ格納領域の示す位置にデータを格納するデータ書込手段と、いずれかのブロックが消去状態の場合に消去状態のブロックのブロック状態を「消去済」に変更し、選択領域に格納されるデータ格納領域の位置を最初の位置に戻す初期化手段と、を備えたことを特徴とする情報処理装置。
【符号の説明】
【０１６５】
１１…情報処理装置、１２…コントローラー、１３…電源回路、１４…操作部、１４Ａ…電源スイッチ、１５…表示部、１６…駆動回路、１７…アクチュエーター、１８…消費材、２０…コンピューター、２１…ＣＰＵ、２２…ＡＳＩＣ、２３…ＲＡＭ、２４…不揮発性メモリーの一例であるフラッシュメモリー装置、３１…第１判定部、３２…第２判定部、３３…判定手段の一例を構成する第３判定部、３４…読出手段の一例である読出部、３５…書込部、３６…消去部、４１…メモリー制御回路、４２…フラッシュメモリー部、４４…状態レジスター、４５…フラッシュメモリーセル、Ｄ…データ、Ａ，Ｂ…複数のブロック及び二つのブロックの一例を構成するブロック、ＣＡ…管理領域、ＤＡ…データ格納領域（データ領域）、ＲＳ…ＲＯＭ状態、ＢＳ…ブロック状態、ＳＡ…選択情報の一例である選択領域、ＡＢ…別ブロック状態。
【図１】
2012123733.tif 000003
【図２】
2012123733.tif 000004
【図３】
2012123733.tif 000005
【図４】
2012123733.tif 000006
【図５】
2012123733.tif 000007
【図６】
2012123733.tif 000008
【図７】
2012123733.tif 000009
【図８】
2012123733.tif 000010
【図９】
2012123733.tif 000011
【図１０】
2012123733.tif 000012
【図１１】
2012123733.tif 000013
【図１２】
2012123733.tif 000014
【図１３】
2012123733.tif 000015
【図１４】
2012123733.tif 000016
【図１５】
2012123733.tif 000017
【図１６】
2012123733.tif 000018
【図１７】
2012123733.tif 000019
【図１８】
2012123733.tif 000020
【図１９】
2012123733.tif 000021