JP2012123733A - 情報処理装置及び情報処理装置におけるデータ管理方法 - Google Patents

情報処理装置及び情報処理装置におけるデータ管理方法 Download PDF

Info

Publication number
JP2012123733A
JP2012123733A JP2010275942A JP2010275942A JP2012123733A JP 2012123733 A JP2012123733 A JP 2012123733A JP 2010275942 A JP2010275942 A JP 2010275942A JP 2010275942 A JP2010275942 A JP 2010275942A JP 2012123733 A JP2012123733 A JP 2012123733A
Authority
JP
Japan
Prior art keywords
block
data
area
state
processing apparatus
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
JP2010275942A
Other languages
English (en)
Inventor
Atsushi Shimura
敦 志村
Mitsuo Sakurai
光夫 櫻井
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Seiko Epson Corp
Original Assignee
Seiko Epson Corp
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Seiko Epson Corp filed Critical Seiko Epson Corp
Priority to JP2010275942A priority Critical patent/JP2012123733A/ja
Publication of JP2012123733A publication Critical patent/JP2012123733A/ja
Pending legal-status Critical Current

Links

Images

Landscapes

  • Power Sources (AREA)
  • Techniques For Improving Reliability Of Storages (AREA)
  • Memory System (AREA)

Abstract

【課題】電源オン/オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる情報処理装置及情報処理装置におけるデータ管理方法を提供する。
【解決手段】フラッシュメモリー装置の2つのブロックA,Bは、それぞれ1つの管理領域と複数のデータ領域とに分割され、管理領域にはROM状態とブロック状態と選択領域の各情報が格納される。電源オン時のデータ読出し時には、まず各ブロックA,Bの管理領域を読み出す(S11,S12)。管理領域Aのブロック状態が「使用中」であれば選択領域の指すデータ領域からデータを読み出す。一方、「消去可」であればブロックAのデータ消去を行う(S15)。ブロックBも同様に処理される(S17〜S20)。なお、電源オフ時のデータ書込みの際は、ブロックの全てのデータ領域が使い終わると、ブロック状態が「使用中」から「消去可」に変更される。
【選択図】図8

Description

本発明は、電源オン時に不揮発性メモリーからデータを読み出すとともに、電源オン中に更新などされたデータを電源オフ時に不揮発性メモリーに書き込む処理を行う情報処理装置及び情報処理装置におけるデータ管理方法に関する。
例えばフラッシュメモリーのような不揮発性メモリーを備えた情報処理装置では、前回の電源オフ時に不揮発性メモリーに書き込んだデータを、電源オン時に不揮発性メモリーから読み出すとともに、電源オン後の稼動中に更新などされたデータを電源オン時に不揮発性メモリーに書き込む構成となっている。保存すべきデータとしては、例えばプリンターなどの情報処理装置では、インクカートリッジのインク残量などを挙げることができる。
フラッシュメモリーなどの不揮発性メモリーは、所定記憶容量を有する複数のブロックに分割されており、1つのブロックがデータを消去する際の最小単位となっている。記憶素子の構成上、ブロック単位で消去し初期状態にした後でないと、任意データを書き込むことができない。
例えば特許文献1には、フラッシュメモリーを利用したデータ管理方法が開示されている。このデータ管理方法では、フラッシュメモリーのブロックにデータ格納ブロックを確保し、電源断時も保持するデータを格納し、消去処理は別にして、データの書き換え時は複数のデータ格納ブロックをローテーションで使用しデータの書込処理のみを行う。
データ格納ブロックを、ブロック管理領域とデータ管理領域とデータ格納エリアで構成し、ブロック管理領域には、現ブロックの状態情報及び他のブロックの消去状況を格納し、データ管理領域はデータ格納エリアのデータエリアと同数のデータ管理テーブルで構成し、データ格納エリアは複数の均等サイズのデータエリアで構成されていた。
使用ブロックはブロック管理領域内の現ブロック使用有無テーブルを検索することで特定できる。また、使用ブロック内の書込み先のデータエリアの特定は、使用ブロック内のデータ管理領域を最若番データ管理テーブルから使用順序方向に確認していき未使用のデータエリアを検出することで行われる。
特開2000−222292号公報
しかしながら、特許文献1のデータ管理方法では、データ管理領域にデータエリアと同数用意されたデータ管理テーブルを検索対象とし、最若番データ管理テーブルから使用順序方向に確認していき未使用のデータエリアを検出する検索が必要なので、データエリアを検索する構成に比べれば効率的であるものの、やはり時間を要していた。
また、読出し先のデータエリアも、データ管理領域にデータエリアと同数用意されたデータ管理テーブルを検索対象とし、最若番データ管理テーブルから使用順序方向に確認していきデータ番号がその番号から特定されるデータ内容が欲しいものであるか否かを確認して、読み出し位置を検出する必要があった。
このため、読み出し時にも書き込み時にも、データ管理テーブルを検索をいちいち検索しなければならず、その検索処理に時間がかかり、データを読出し・書込みを行うためのデータ処理時間が比較的長くなるという問題があった。
本発明は、上記課題に鑑みてなされたものであり、その目的の一つは、電源オン/オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる情報処理装置及情報処理装置におけるデータ管理方法を提供することにある。
上記目的の一つを達成するために、本発明の態様の一つは、所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置であって、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される1つの管理領域と、複数のデータ格納領域とに分割された複数のブロックと、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出手段と、前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定手段と、前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込手段と、前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去手段と、を備えたことを要旨とする。
本発明の一実施態様によれば、情報処理装置の電源オン時に、読出手段は、ブロック状態が使用中である一つのブロックの管理領域内の選択情報から規定される読出位置のデータ格納領域からデータを読み出す。また、情報処理装置の電源オフ時には、書込手段は、判定手段の判定結果に基づき、ブロック状態が使用中のブロックの管理領域内の選択情報が前記読出位置が最終位置でないとする値である場合、その読出位置の次の位置のデータ格納領域にデータを書き込む。一方、判定手段の判定結果に基づき、選択位置が読出位置が最終位置であるとする値である場合、書込手段は、次のブロック中の先頭位置のデータ格納領域にデータを書き込むとともに、当該次のブロックの管理領域内のブロック状態を不使用から使用中に変更する。そして、消去手段は、次のブロックの先頭位置のデータ格納領域へのデータの書込みを終えた後、読出位置が最終位置となった(つまり全てのデータ格納領域が使用済みとなった)ブロックのデータを、少なくともこのブロックの先頭位置に書込みを行うまでに消去するとともに消去後のこのブロックの管理領域内のブロック状態を使用中から不使用に変更する。このため、複数のブロックがそれぞれ備える管理領域内のブロック状態と選択情報とから、各ブロックの各データ格納領域のうち、読出元の位置や、書込先の位置を簡単に取得することができる。例えば、従来のようにデータ管理領域内にデータ格納領域と同数用意されたデータ管理テーブルをいちいち検索しなくても、管理領域内のブロック状態と選択位置の二情報を用いて、読出元と書込先を速やかに把握できる。このように電源オン/オフの際に、ブロックを分割した複数のデータ領域のうち読出し元及び書込み先のデータ領域を比較的簡単に特定できる。従って、電源オン時のデータの読出し及び電源オフ時のデータの書込みを速やかに行うことができる。また、データ格納領域が全て使用済みとなってからブロックに消去処理を施すので、不揮発性メモリー内の複数のブロックに施される消去の回数を少なく済ませることができる。
本発明の態様の一つである情報処理装置では、前記ブロックは二つであり、前記ローテーションでは前記二つのブロックを交互に使用することが好ましい。
本発明の一実施態様によれば、二つのブロックを交互に使用するので、データの記憶に使用するブロック数を少なく抑えることができる。
本発明の態様の一つである情報処理装置では、前記選択情報は、読出元のデータ格納領域を指す読出位置の情報であり、前記読出手段は、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報の指すデータ格納領域からデータを読み出し、前記判定手段は、前記使用中のブロックにおける前記選択情報の指す読出位置が最終位置であるか否かを判定することが好ましい。
本発明の一実施態様によれば、選択情報が読出元のデータ格納領域を指す読出位置の情報であるので、読出手段は、情報処理装置の電源オン時に、ブロック状態が使用中のブロックの選択情報の指すデータ格納領域からデータを読み出せばよい。また、判定手段は、使用中のブロックにおける選択情報の指す読出位置が最終位置であるか否かを判定すればよい。このように選択情報の指す値をそのまま使用して、読出位置の特定や、読出位置が最終位置であるか否かの判定を行うことができる。例えば選択情報を書込位置の情報とした場合、書込位置から1つ前の読出位置を求める演算が必要になるが、読出位置であれば、そのような演算の必要がない。
本発明の態様の一つである情報処理装置では、前記ブロック状態を示す前記不使用には、消去可と消去済とがあり、前記書込手段は、前記選択情報の指す読出位置が最終位置となったブロックの前記ブロック状態を消去可の値に変更し、前記消去手段は、前記ブロック状態が消去可の値になったブロックのデータを消去するとともに、消去状態になったブロックの前記管理領域内のブロック状態を消去済の値に変更することが好ましい。
本発明の一実施態様によれば、書込手段は、選択情報の指す読出位置が最終位置となったブロックのブロック状態を消去可の値に変更する。消去手段は、ブロック状態が消去可の値であると、その消去可の値のブロック状態が格納されたブロックのデータを消去するとともに、消去状態になったブロックの管理領域内のブロック状態を消去済の値に変更する。従って、書込手段がブロックの最終位置のデータ格納領域まで書込に使い終わったことを、ブロック状態の値により消去手段に伝え、消去手段がその使い終わったブロックの消去を行うことができる。
本発明の態様の一つである情報処理装置では、前記書込手段は、前記次のブロックの先頭位置の前記データ格納領域にデータを書き込んだ後、当該次のブロックの前記選択情報を前記先頭位置のデータ格納領域を指す値に更新することが好ましい。
本発明の一実施態様によれば、書込手段は、次のブロックの先頭位置のデータ格納領域にデータを書き込んだ後、当該次のブロックの選択情報を先頭位置のデータ格納領域を指す値に更新する。このため、読出手段は選択情報の指す先頭位置のデータ格納領域からデータを読み出すことができる。
本発明の態様の一つである情報処理装置では、前記管理領域には、ブロックが使用可能状態か使用不能状態かを示すROM状態が更に格納され、前記ROM状態が使用可能状態であるブロックは使用するが、使用不能状態であるブロックは使用しないことが好ましい。
本発明の一実施態様によれば、管理領域に格納されたROM状態が使用可能状態であるブロックは使用されるが、使用不能状態であるブロックは使用されない。従って、故障などが原因で使用不能なブロックへのデータの書込みを回避できる。
本発明の態様の一つである情報処理装置では、前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オン時に行うことが好ましい。
本発明の一実施態様によれば、消去手段によるブロックのデータの消去は電源オン時に行われる。例えば電源オフ時に行う構成とした場合は、情報処理装置が停電やコンセント抜けなどの何らかの原因による不意な電源遮断が発生したときに、比較的時間を要する消去処理を行っているとデータの書込みミスが起こる可能性が高くなる。これに対して、電源オン時に消去処理が行われれば、この種のデータの書込みミスの発生を少なく抑えることができる。
本発明の態様の一つである情報処理装置では、前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オフ時又は省電力モード移行時に行うことが好ましい。
本発明の一実施態様によれば、消去手段によるブロックのデータの消去は、情報処理装置の電源オフ時又は省電力モード移行時に行われる。従って、情報処理装置の電源オン時に消去処理が行われる構成に比べ、情報処理装置を電源オン操作から早期に動作可能状態にすることができる。
本発明の態様の一つである情報処理装置では、電源の異常遮断時には、前記ブロックの消去処理を行うべき条件が成立していても、前記消去手段による前記ブロックの消去処理は行わず、前記書込手段による前記データの書込処理を行うことが好ましい。
本発明の一実施態様によれば、電源の異常遮断時には、ブロックの消去処理を行うべき条件が成立していても、消去処理が行われることなく、データの書込処理が行われる。従って、消去処理を行ったために書込み時間が不足し、データを最後まで書込みできなくなる書込みミスを少なく抑えることができる。
本発明の態様の一つである情報処理装置では、前記管理領域には前記複数のブロックのうち当該ブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納され、一のブロックの前記管理領域内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される前記別ブロック状態の値を、タイミングを同期させて更新することが好ましい。
本発明の一実施態様によれば、一のブロックの管理領域内のブロック状態の値が更新されるときには、他のブロックにおける対応する別ブロック状態の値が、タイミングを同期させて更新される。例えば消去処理の途中で発生した電源の異常遮断が原因で、二つのブロックの各管理領域内のブロック状態が共に使用中になっても、どちらの使用中が間違いであるかを別ブロック状態の値から推定(特定)できるので、間違いである側のブロックの消去処理を改めて行うことが可能になる。
本発明の態様の一つは、所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置におけるデータ管理方法であって、前記不揮発性メモリーは、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される1つの管理領域と、複数のデータ格納領域とに分割された複数のブロックを備え、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出ステップと、前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定ステップと、前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込ステップと、前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去ステップと、を備えたことを要旨とする。本発明の一実施態様によれば、上記情報処理装置に係る発明と同様の作用効果を得ることができる。
本発明を具体化した第1実施形態における情報処理装置の概略構成を示すブロック図。 CPUの機能構成とフラッシュメモリー装置の概略構成を示すブロック図。 メモリーセルの構造を示す模式図。 電源オフ時に保存されるべきデータが記憶される2つのブロックの構成を示す模式図。 1つのブロックにおける管理領域の詳細を示す模式図。 ブロック中の各データ領域とフラグの値との対応関係を示す図。 工場出荷状態の管理領域のデータ内容を示す図。 電源オン時におけるデータ読出し処理ルーチンを示すフローチャート。 電源オフ時におけるデータ書込み処理ルーチンを示すフローチャート。 電源オン/オフ1回目〜6回目の管理領域のデータ遷移を示す図。 電源オン/オフ7回目〜13回目の管理領域のデータ遷移を示す図。 電源オン/オフ14回目の管理領域のデータ遷移を示す図。 第2実施形態における工場出荷状態の管理領域のデータ内容を示す図。 電源オン/オフ8回目の管理領域のデータ遷移を示す図。 電源オン時におけるデータ読出し処理ルーチンを示すフローチャート。 電源オフ時におけるデータ書込み処理ルーチンを示すフローチャート。 第3実施形態における管理領域の詳細を示す模式図。 電源オン/オフ6回目の管理領域のデータ遷移を示す図。 管理領域異常時の対策を含むデータ読出し処理ルーチンを示すフローチャート。
(第1実施形態)
以下、本発明を具体化した第1実施形態を図1〜図12に基づいて説明する。図1に示すように、情報処理装置11は、全体的な制御を司るコントローラー12、装置内の各部に電力を供給する電源回路13、操作部14、表示部15、駆動回路16及びアクチュエーター17などを備える。
情報処理装置11は、コントローラー12が駆動回路16を介してアクチュエーター17を駆動制御することにより所定動作を行う。特に本例の情報処理装置11は、例えば消費材18が取り付けられ、消費材18の消費を伴う所定動作を行う。情報処理装置11の一例としてはプリンターなどを挙げることができる。プリンターの場合、インクやトナー等の印刷に使用される印刷用材料と、印刷が施される用紙やフィルムなどの印刷媒体とが、消費材18に該当する。消費材18のうち印刷用材料の取り付けは、具体的には、インクを収容するインクカートリッジ又はトナーを収容するトナー収容体を、プリンター本体の所定箇所に装着することにより行われる。また、消費材18のうち印刷媒体の取り付けは、印刷媒体の給送トレイへのセット又は印刷媒体が収容された給送カセットのプリンター本体へのセットにより行われる。もちろん、情報処理装置11は、プリンターに限定されるものではなく、消費材が消費される装置に広く適用できる。また、情報処理装置は、消費材の消費を伴う所定動作を行うものに限定されず、例えばスキャナー、デジタルフォトフレーム、デジタルカメラなどであってもよい。
また、情報処理装置11には、操作部14の1つとして電源スイッチ14A(但し、図1では操作部14の1つである電源スイッチ14Aのみ図示)が設けられている。ユーザーは電源スイッチ14Aを操作することにより、情報処理装置11の電源をオン/オフする。電源スイッチ14Aは電源回路13に接続されており、電源スイッチ14Aがオン操作された際の電源オン信号と、オフ操作された際の電源オフ信号とが電源回路13に入力される。電源回路13は、電源オフ状態で電源スイッチ14Aが操作された際に電源オン信号を入力すると、情報処理装置11の電源をオンして装置内の各部に所定電圧の電力を供給し、この電源オン状態で電源スイッチ14Aが操作された際に電源オフ信号を入力すると、情報処理装置11の電源をオフして装置内の各部への電力の供給を停止する。また、電源回路13は省電力機能を有している。電源回路13は、情報処理装置11が動作を停止してから何も操作されないまま所定時間が経過すると、表示部15の表示を暗くしたり消したりするなどの省電力モードに移行する。省電力モードに移行したときには、電源回路13はコントローラー12、表示部15及び駆動回路16などへの供給電力を通常モード時より小さな省電力モード時の低電力に制限する。
また、図1に示すように、コントローラー12は、コンピューター20を備えている。コンピューター20は、CPU21(中央処理装置)、ASIC22(Application Specific IC(特定用途向けIC))、RAM23、不揮発性メモリーの一例であるフラッシュメモリー装置24及び入出力インターフェイス25を備えている。CPU21は、フラッシュメモリー装置24に記憶されたプログラムを実行することにより情報処理装置11に所定動作を行わせるためのアクチュエーター17の駆動制御、ユーザーが操作部14を操作した際の操作信号の受付け、操作信号などに応じて表示部15の表示内容を切り替える表示制御などを行う。本例のアクチュエーター17は、所定動作を行うための複数個のアクチュエーター群からなる。例えば情報処理装置11がプリンターの場合、アクチュエーター群として、用紙などの印刷媒体を搬送するための搬送モーターと、用紙に印刷を施す記録ヘッドとが少なくとも備えられている。
ASIC22は、所定動作を行うために必要な処理を行うとともにアクチュエーター17の少なくとも一部を制御する。情報処理装置11が例えばプリンターの場合、ASIC22は、情報処理装置11が入力した画像データを基に記録ヘッドが使用可能なヘッド制御データを生成する画像処理を行い、生成したヘッド制御データを記録ヘッドへ転送することにより、記録ヘッドの制御を司る。CPU21がソフトウェアで処理を行う構成は比較的処理時間がかかるので、ASIC22がハードウェアで処理を行うことにより処理時間の短縮を図っている。もちろん、ASIC22を廃止し、全ての処理及び制御をCPU21が行う構成としてもよい。
フラッシュメモリー装置24には、情報処理装置11が所定動作を行うためのプログラム(例えばファームウェア)や各種の設定データなどが記憶されている。また、フラッシュメモリー装置24には、情報処理装置11が所定動作を行うことにより更新されるデータを少なくとも含むデータDが記憶される。CPU21はフラッシュメモリー装置24にアクセスしてプログラム及び各種設定データを読み出す。さらにCPU21は、情報処理装置11の電源オン時にフラッシュメモリー装置24からデータDを読み出してRAM23に展開する。CPU21は情報処理装置11が所定動作を行うのに伴い更新される最新のデータDをRAM23に書き込んで更新する。また、CPU21は、情報処理装置11の電源オフ時にRAM23の最新のデータDを読み出してそのデータDをフラッシュメモリー装置24に書き込むことにより、更新されたデータDを電源オフ中においても保存する。
次に、CPU21の機能構成及びフラッシュメモリー装置24の構成を、図2を用いて説明する。なお、本実施形態のフラッシュメモリー装置24には、所定のプログラムの一部である、図8に示すデータ読出処理ルーチンのプログラム、及び図9に示すデータ書込処理ルーチンのプログラムが記憶されている。
図2では、CPU21が例えばフラッシュメモリー装置24から読み出した所定のプログラムを実行することによりその内部に構築される機能部分を示している。すなわち、図2に示すように、上記プログラムを実行するCPU21の内部には、所定の判定処理を行う第1判定部31、第2判定部32、第3判定部33の他、データDの読出処理を行う読出部34、データDの書込処理を行う書込部35及びデータの消去処理を行う消去部36などが構築される。もちろん、各部31〜36は、集積回路等のハードウェアにより構築したり、ソフトウェアとハードウェアの協働により構築したりしてもよい。なお、これら各部31〜36の機能の詳細については後述する。
図2に示すように、フラッシュメモリー装置24は、メモリー制御回路41及びフラッシュメモリー部42を備えている。メモリー制御回路41は、CPU21と通信可能に接続されており、CPU21から、読出し、書込み、消去などを指示する各種のコマンド、読出し先、書込み先、消去先のアドレスを入力する。また、メモリー制御回路41は、書込みコマンド入力時にCPU21から書込み対象となるデータを入力し、読出しコマンド入力時にフラッシュメモリー部42の指定のアドレスから読み出された読出し対象のデータをCPU21へ出力する。
メモリー制御回路41は、CPU21からの読出し、書込み、消去などのコマンドに応じた制御信号、読出し先、書込み先、消去先のアドレスを指定するアドレス信号をフラッシュメモリー部42へ出力することにより、データの読出し、書込み、消去などをフラッシュメモリー部42に指示する。これにより、読出し先のアドレスからのデータの読出し、書込み先のアドレスへのデータの書込み、消去先のアドレスにあるデータの消去が行われる。
ここで、情報処理装置11がプリンターの場合、データDは、インクやトナー等の印刷用材料の残量など、所定動作の実施と共に変化する可変情報と、アクチュエーター17の駆動開始位置(原点)などの工場出荷時に設定された不変情報(固定情報)とから構成される。もちろん、印刷媒体の残量を検出するセンサーを備えたプリンターでは、可変情報の一情報として印刷媒体の残量を含めてもよい。また、情報処理装置11の使用料金ユーザーから徴収する構成の場合、所定動作の回数(プリンターの場合であれば例えば印刷枚数)などと共に変化する課金情報を、データの一情報として含めてもよい。なお、可変情報には時間情報(経過時間計測情報や時刻情報)も含めてもよい。
図2に示すように、メモリー制御回路41はレジスター群43を内蔵する。レジスター群43のうちの状態レジスター44(ステイタスレジスター)は、フラッシュメモリー装置24がCPU21から受け付けたコマンドに基づいて、メモリー制御回路41が行うデータの読出し、データの書込み、さらにはデータの消去などの制御を行う際の状態を管理する。状態レジスター44は、指示されたコマンドに基づく制御中はビジー信号を出力し、コマンドに基づく制御を終えるとその出力がビジー信号からレディー信号へ切り換わる。このため、CPU21は状態レジスター44からの信号に基づいて、指示したコマンドに基づく制御を終えたことを判断できるようになっている。
CPU21は、メモリー制御回路41へ消去コマンドを送った後、状態レジスター44から、レディー信号から切り換わったビジー信号を入力するうちはデータの消去処理中であると判断し、そのビジー信号がレディー信号に切り換わったことをもって、消去処理が終了したと判断する。もちろん、状態レジスター44に替えてもしくは追加して、消去処理専用の消去レジスターを設け、CPU21が消去レジスターからの信号に基づき消去処理の終了を把握する構成を採用してもよい。
フラッシュメモリー部42には、フラッシュメモリーセル45、ロウデコーダー46、カラムデコーダー47などを備えている。なお、フラッシュメモリー部42は、その他に、公知のコマンドデコーダー、制御論理回路、ロウアドレスバッファー、カラムアドレスバッファー、データ制御回路、及び入出力バッファー(いずれも図示せず)を備えている。
フラッシュメモリーセル45は、複数のメモリーセル(メモリー素子)(図示省略)をマトリクス配列して構成されている。各メモリーセルは互いに交差する複数本のワード線と複数本のビット線の交差部に配置されている。ロウデコーダー46はワード線の選択駆動等を行い、一方のカラムデコーダー47はビット線の選択駆動等を行う。
メモリー制御回路41から転送されるアドレス信号のうちロウアドレスがロウデコーダー46に転送され、カラムアドレスがカラムデコーダー47に転送される。これにより、指定のロウアドレスとカラムアドレスとで特定されるメモリーセルが選択される。
CPU21は電源オン時にフラッシュメモリー装置24に読出しコマンドを送ることにより、データDを読み出す処理を行い、メモリー制御回路41から送られてきたデータDをRAM23に書き込む。そして、情報処理装置11の稼働中(電源オン状態)は、RAM23にアクセスすることによりデータDの読出し及び書込みを行い、書込みを行うことによりデータDは更新される。また、CPU21は電源オフ時にフラッシュメモリー装置24に書込みコマンドを送ることにより、RAM23のデータDをフラッシュメモリー装置24へ書き込む処理を行う。
図3に示すように、フラッシュメモリーセル45は、ブロック0,1,…,Nの合計(N+1)個のブロックBLに分割されている。ここで、ブロックBLは全て同じ記憶容量を有し、データを消去する際の最小単位(消去単位)となる。本例では、1つのブロックBLの記憶容量が一例として4キロバイトである。
本実施形態では、図3に示す(N+1)個のブロック0〜Nのうち、データDを保存するための領域として図4に示す二つのブロックA,Bを使用する。
図4に示すように、二つのブロックA,Bは、ブロックを8分割することにより8つの領域に分割されている。これら8つの領域は、1つの管理領域CAと、7個のデータ格納領域(以下、単に「データ領域DA」という)(図4ではデータ領域0〜6)とからなる。7個のデータ領域DAは、データDが書き込まれる領域である。
ここで、従来の情報処理装置はEEPROMにデータDを保存していた関係から、データDは従来使用のEEPROMの記憶容量にほぼ等しいデータ容量を有している。そのため、本実施形態では、一例として、データ領域DAの記憶容量がEEPROMの記憶容量に等しくなるようにブロックの分割数を決めている。1つのブロックの記憶容量が4キロバイトである本例では、従来のEEPROMの記憶容量が512バイトであるので、ブロックを8分割することにより、1つのデータ領域DAの記憶容量を、従来と同内容のデータDを記憶できるように512バイトにしている。もちろん、ブロックA,Bの分割数は、データ領域DAがデータDを格納しうる記憶容量になる限りにおいて適宜の数を採用することができる。例えばブロックをK(但しKは3以上の自然数)分割して、1個の管理領域CAと(k−1)個のデータ領域DAとからなる構成であればよい。3分割してデータ領域DAを2個とした構成や、4分割してデータ領域DAを3個とした構成、さらには16分割してデータ領域DAを15個とした構成などでもよい。また、ブロックの分割もK等分に限定されず、管理領域CAとデータ領域DAが異なる記憶容量となる分割方法も採用できる。
図5は、二つのブロックA,Bの構成を詳細に示したものである。但し、図5では、二つのブロックA,Bは同じ構成なので、ブロックAのみを示す。図5に示すように、管理領域CAは、ROM状態RS、ブロック状態BS及び選択領域SA(選択情報)の3種類の管理情報を格納するための3つのフラグ領域FA1〜FA3を備えている。本実施形態では、各フラグ領域FA1〜FA3は、それぞれ1バイトの記憶容量を有している。
フラッシュメモリー装置24では、ブロックのデータが消去されると、ブロック中の各1バイトは「FF」(16進数)の値をとる。このため、各フラグ領域FA1〜FA3は、データ(フラグ値)が消去されたときには「FF」の値をとる。なお、以下の説明において、各フラグ領域FA1〜FA3に格納される管理情報の値は、特に断りがない限り、16進数で表すものとする。
次に管理領域CAに格納される3つの情報RS,BS,SAについて説明する。まずROM状態RSとは、フラッシュメモリー部42のブロックが壊れていないか否かをチェックするための情報である。CPU21は通常動作時においては、ブロックの消去処理終了後に、消去処理終了時点の値「FF」(16進数)をとるROM状態RSに「DB」(16進数)を書き込む。電源オン時にROM状態RSの情報を読み込み、その値が「DB」の場合はそのブロックは使用可であり、その値が「DB」以外の場合はブロックが壊れていると判断する。ROM状態RSが「DB」以外の値で壊れているブロックは使用不能になる。
本実施形態では、例えばフラッシュメモリー搭載の情報処理装置11の工場出荷時に、ROM状態RSの格納領域に「FF」「DB」以外の設定値(例えば「51」(16進数))を書き込んでいる。出荷後の初回電源オン時にROM状態RSから設定値を読み込んだ場合は、CPU21がフラッシュメモリー装置24の所定記憶領域に保存されている初期状態のデータDを読み出し、その初期状態のデータDを、ブロックAの最初のデータ領域(本例ではデータ領域0)に書き込む。但し、初期状態のデータDのうち、消費材18の種類や残量(又は消費量)などを含む初期値については、消費材18の収容部(本体ケース等)に実装されたメモリー素子から読み込んだそのときセットされている消費材18に応じた初期値が採用される。例えば情報処理装置11がプリンターである場合、消費材18の一例であるインクカートリッジに実装されたメモリー素子とCPU21が通信してインク情報(品番、インク色、インク残量など)を読み込んで、そのインク情報を初期状態のデータDの一部として採用する。また、給送カセットに収容された印刷媒体の枚数を検出可能なセンサーを有するプリンターの場合、センサーにより検出された印刷媒体の枚数を初期状態のデータDの一部として採用する。
ブロック状態BSとは、対象のブロックが使用可能か否かを示す情報である。つまり、対象のブロックが使用中か不使用かを示す情報である。本実施形態では、対象のブロックのブロック状態BSとして、「使用中」「消去可」「消去済」の3つの状態のいずれか1つを示す。詳しくは、CPU21は、ブロックの消去処理終了後に、「7F消去済」を書き込む。そして、CPU21は、使用するブロックの状態を「3F(使用中)」に上書きする。また、対象のブロックの全データ領域(つまり領域0〜領域7)を全て使用した場合に「1F(消去可)」に上書きする。CPU21は、ブロック状態が「1F(消去可)」のときに対象のブロックの消去処理を実行する。なお、ブロック状態BSには、大きくは使用中と不使用の状態があり、その不使用が「消去可」と「消去済」の2つの状態に分かれる。
選択領域SAとは、ブロック中のどのデータ領域DAを使用中かを識別するための情報である。選択領域SAには、7個のデータ領域0〜6のうち選択されているデータ領域DAの領域番号に対応する1バイトのフラグ値が格納される。図6に選択領域SAのフラグ値の一例を示す。図6に示すように、データ領域0にはフラグ「7F」(16進数)、データ領域1にはフラグ「3F」、データ領域2にはフラグ「1F」、データ領域3にはフラグ「0F」、データ領域4にはフラグ「07」、データ領域5にはフラグ「03」、データ領域6にはフラグ「01」が対応付けられている。ここで、データが消去されたときには1バイトのフラグ値は「FF」になる。フラッシュメモリー装置24の場合、1バイトデータの変更は、ビットの「1」を「0」に落とす桁落とししかできないので、データ領域0〜6の順番に、徐々にフラグ値が小さくなるように設定されている。
ここで、CPU21により構築される各判定部31〜33、読出部34、書込部35及び消去部36の機能を説明する。図2に示す第1判定部31は、対象ブロック(本例ではブロックA,B)のブロック状態BSを判定する。詳しくは、第1判定部31は、対象ブロックのブロック状態BSが、「使用中」「消去可」「消去済」のうちいずれであるかの判定、及び「使用中」であるか否かの判定を行う。
また、第2判定部32は、「使用中」のブロックの選択領域SAを判定する。詳しくは、第2判定部32は、「使用中」のブロック中の7個のデータ領域0〜6のうち、選択領域SAの指すデータ領域を判定する。第2判定部32は、図6に示すデータ領域とフラグ値との対応関係を基に、フラグ値から、選択されているデータ領域の領域番号を判定する。
第3判定部33は、「使用中」のブロックの選択領域SAの指すデータ領域が最終の「領域6」であるか否かを判定する。詳しくは、第3判定部33は、選択領域のフラグ値が最終のデータ領域(領域6)の領域番号「6」を指す「01」(16進数)であるか否かを判定する。なお、本実施形態では、第3判定部により判定手段の一例が構成される。
読出部34は、フラッシュメモリー装置24から各種データを読み出す読出処理を行う。特に情報処理装置11の電源オン時には、読出部34は、前回の電源オフ時に、使用中のブロックに書き込まれたデータDをRAM23上に読み出す読出処理を行う。このとき、読出部34は、第1判定部31が判定した使用中のブロックにおいて、第2判定部32が判定した選択領域SAの指すデータ領域DAからデータDを読み出す。なお、本実施形態では、読出部34により読出手段の一例が構成される。
書込部35は、フラッシュメモリー装置24に各種データを書き込む書込処理を行う。特に情報処理装置11の電源オフ時に、情報処理装置11の稼動中に更新されたRAM23上のデータDを、第1〜第3判定部31〜33の判定結果から決まる所定のブロックの所定のデータ領域DAに書き込む書込処理を行う。なお、本実施形態では、書込部35により書込手段の一例が構成される。
消去部36は、ブロックのデータを消去する消去処理を行う。本例のフラッシュメモリー装置24ではブロックが消去の最小単位なので、消去部36はブロック単位でデータの消去を行う。ここで、ブロックA,Bについてはブロックの全てのデータ領域DAを使い終わった以後、消去部36は、そのブロックのデータを消去する。なお、本実施形態では、消去部36により消去手段の一例が構成される。
図7は、工場出荷状態に設定される管理領域のフラグ値を示す。工場出荷時には、ブロックA,Bのデータを一旦消去して全て「FF」とした後、管理領域CAに図7に示すフラグ値を書き込む。図7に示すように、工場出荷状態では、ブロックAでは、ROM状態RSが「DB(使用可)」、ブロック状態BSが「3F(使用中)」、選択領域SAが「7F(領域0)」にそれぞれ設定される。また、ブロックBでは、ROM状態RSが「FF」、ブロック状態BSが「1F(消去可)」、選択領域SAが「FF」にそれぞれ設定される。
ここで、ブロックA,Bのうち最初に使用されるブロックAのROM状態RSを「DB(使用可)」に設定している。一旦「FF」にしてから「DB」を書き込むことができれば、そのブロックは壊れておらず使用可能であることが分かるからである。
ブロックAのブロック状態BSの「3F(使用中)」は、そのブロックAが、データの読出し及び書込みを行う対象として使用中であることを示す。図7の例では、最初はブロックAから使用するので、工場出荷時にブロックAのブロック状態BSが「3F(使用中)」に設定される。
ブロックA,Bの各データ領域0〜6をデータDの格納先として使用する場合、データ領域0,1,…,6の順番に使用される。このため、ブロックAの選択領域SAにはデータの最初の格納先として選択されたデータ領域0を指す「7F」が設定される。
図7の管理領域中の「FF」のところは特にフラグ値の変更(設定)を行っていない部分である。これは、ブロックBのブロック状態BSは「1F(消去可)」となっており、情報処理装置11が最初(初回)に電源オンされたときに、ブロックBのデータは消去されるので、必要なブロック状態BSのみフラグ値を設定し、ROM状態RS及び選択領域SAは消去終了時の値「FF」のままとしている。
情報処理装置11の初回電源オン時は、図7に示すフラグ値が設定されている。このため、ブロックAのROM状態RSのフラグ値「DB」から、ブロックAが「使用可」であり、かつそのブロック状態BSのフラグ値「3F」からブロックAが「使用中」であり、さらに選択領域SAの「7F」の指すデータ領域0が、最新のデータDの読込み元として選択されていることが分かる。なお、ROM状態RSに前述の設定値(例えば「51」(16進数))を書き込んでおく例では、出荷後の初回電源オン時に設定値を読み込んだ場合、フラッシュメモリー装置24の所定記憶領域が、初期状態のデータDの読込み元となる。
図8は電源オン時にフラッシュメモリー装置24からデータDを読み込むためにCPU21が実行するプログラムであるデータ読出し処理ルーチンを示すフローチャートである。また、図9は電源オフ時にデータDをフラッシュメモリー装置に書き込むためにCPU21が実行するプログラムであるデータ書込み処理ルーチンを示すフローチャートである。図8及び図9にフローチャートで示されるプログラムは、フラッシュメモリー装置24中の(N+1)個のブロック0〜NのうちブロックA,B以外の所定ブロックに記憶されている。
CPU21は電源オン時にはフラッシュメモリー装置24の所定ブロックから図8に示すデータ読出し処理ルーチンのプログラムを読出し、これを実行することにより、電源オン時のデータ読出し処理を行う。また、CPU21は電源オフ時にはフラッシュメモリー装置24の所定ブロックから図9に示すデータ書込み処理ルーチンのプログラムを読出し、これを実行することにより、電源オフ時のデータ書込み処理を行う。
図10〜図12は、情報処理装置11の電源をオン/オフさせた回数と、その回数に対応する各ブロックA,Bの管理領域のフラグ値の遷移の様子を示したものである。まず、図10〜図12を用いて、電源オン/オフの回数(何回目)と、その回数毎の電源オン時のフラグ値と電源オフ時のフラグ値を示す遷移状態について説明する。ここで、図10は、1回目〜6回目の電源オン/オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示すものである。また、図11は、7回目〜13回目の電源オン/オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示すものである。さらに図12は、14回目の電源オン/オフを行った際の電源オン時のフラグ値と電源オフ時のフラグ値を示す。
図10に示すように、1回目の電源オンを行う前は、図7に示す工場出荷状態のフラグ値にある。1回目の電源オン時は、ブロックAのROM状態が「DB(使用可)」なので、ブロックAが使用可能であることが分かる。さらにブロックAのブロック状態が「3F(使用中)」になっているので、ブロックAの選択領域SAで指し示された領域からデータを読出すことになる。選択領域SAは「7F(領域0)」になっている。よって、1回目の電源オン時には、ブロックAの「データ領域0」からデータを読み出す。また、ブロックBのブロック状態BSが「1F(消去可)」なので、ブロックBのデータを消去する。この結果、図10に示すように、1回目の電源オン時にブロックBのデータは消去される。
情報処理装置11を稼働させた後にユーザーが電源オフ操作した電源オフ時には、ブロック状態BSが「使用中」であるブロックAの選択領域「領域1」に「1」を加えた「領域2」にデータを書き込む。すなわち、電源オン時にデータ読み出し元の領域(図10の例では「領域0」)の次の領域(本例では「領域1」)をデータの書込み先とする。データを書き込んだ後は、選択領域SAがデータの書込み先の領域番号を指し示すように、選択領域SAのフラグ値を前回の選択領域の領域番号に「1」を加えた領域番号に変更する。
また、管理領域中の3つの領域の全てが「FF」であるブロックBについては、ROM状態RSを「DB(使用可)」にし、その回の電源オン時に消去を済ませているのでブロック状態BSを「7F(消去済)」にし、さらに最初にデータの読み出しが行われる「データ領域0」を指し示すように選択領域SAを「7F(領域0)」にする。
2回目の電源オン時は、ブロック状態が「3F(使用中)」であるブロックAの選択領域「3F」で指し示された「領域1」からデータを読み出す。そして、2回目の電源オフ時には、ブロック状態が「3F(使用中)」であるブロックAの選択領域「3F」で指し示された「領域1」の領域番号に「1」を加えた領域番号である「領域2」にデータを書き込む。そして、選択領域をデータ書込み先の領域番号である「1F(領域2)」に変更する。
以下、3回目〜第5回目も同様に、電源オン時に使用中のブロックAの選択領域で指し示された領域番号のデータ領域からデータを読み出すとともに、電源オフ時に使用中のブロックAの選択領域で指し示された領域番号に「1」を加えた領域番号で示されるデータ領域にデータを書き込む。そして、データ書込み後に、ブロックAの選択領域をデータ書込み先の領域番号を指し示すフラグ値に変更する。
そして、6回目の電源オン時には、ブロック状態が「3F(使用中)」であるブロックAの選択領域「01」で指し示された「領域6」からデータを読み出す。そして、6回目の電源オフ時には、ブロック状態が「3F(使用中)」であるブロックAの選択領域「01」で指し示された「領域6」になっている。しかし、領域6が最終番号なので、他方のブロックBの選択領域の「7F」で指し示された「領域0」にデータを書き込む。そして、データ書込み先のブロックBのブロック状態を「3F(使用中)」に変更し、かつそれまで「使用中」であったブロックAのブロック状態を「1F(消去可)」に変更する。こうして6回の電源オン/オフにより、一方のブロックAのデータ領域0〜6の全てがデータの書込みに使用され、6回目の電源オフ時にデータの書込み先がブロックAから他方のブロックBに切り替えられる。
そして、7回目〜13回目の電源オン/オフのときには、1回目〜6回目の電源オン/オフ時と、使用中のブロックがAとBで入れ替わるだけで、電源オン時のデータの読出しと電源オフ時のデータの書込みが同様の手順で行われる。
すなわち、7回目の電源オン時に、ブロック状態が「消去可」になっているブロックAのデータを消去し、消去後にブロック状態を「7F(消去済)」に変更する。そして、ブロック状態が「使用中」のブロックBの選択領域の「7F」で指し示される「領域0」からデータを読み出す。
そして、7回目の電源オフ時には、ブロックAのROM状態を「DB(使用可)」に変更するとともに、選択領域を最初の領域番号を指し示す「7F(領域0)」に変更する。さらにブロック状態が「使用中」であるブロックBの選択領域に格納された「7F」で指し示された「領域0」の領域番号に「1」を加えた領域番号である「データ領域1」にデータを書き込む。そして、ブロックBの選択状態をそれまでの領域番号に「1」を加えた領域番号で示される「3F(領域1)」に変更する。
8回目の電源オン時は、使用中のブロックBの選択領域のフラグ値「3F」で指し示された「領域1」からデータを読み出す。そして、8回目の電源オフ時は、使用中のブロックBの選択領域のフラグ値「3F」で指し示された「領域1」の領域番号に「1」を加えた領域番号である「領域2」にデータを書き込む。そして、選択領域のフラグ値を、そのフラグ値「3F」が指し示す「領域1」の領域番号に「1」を加えた領域番号である「領域2」に変更する。
そして、以下、9回目〜第12回目も同様に、電源オン時に使用中のブロックBの選択領域で指し示された領域番号のデータ領域からデータを読み出すとともに、電源オフ時に使用中のブロックBの選択領域で指し示された領域番号に「1」を加えた領域番号で示されるデータ領域にデータを書き込む。そして、データ書込み後に、ブロックBの選択領域をデータ書込み先の領域番号を指し示すフラグ値に変更する。
そして、13回目の電源オン時には、ブロック状態が「3F(使用中)」であるブロックBの選択領域「01」で指し示された「領域6」からデータを読み出す。そして、13回目の電源オフ時には、ブロック状態が「3F(使用中)」であるブロックBの選択領域「01」で指し示された「領域6」になっている。しかし、領域6が最終番号なので、他方のブロックAの選択領域の「7F」で指し示された「領域0」にデータを書き込む。そして、データ書込み先のブロックAのブロック状態を「3F(使用中)」に変更し、かつそれまで「使用中」であったブロックBのブロック状態を「1F(消去可)」に変更する。こうして13回目の電源オン/オフを終えると、一方のブロックBのデータ領域0〜6の全てがデータの書込みに使用され、13回目の電源オフ時にデータの書込み先がブロックBから他方のブロックAに切り替えられる。
そして、14回目の電源オン時に、ブロック状態が「消去可」になっているブロックBのデータを消去し、消去後にブロック状態を「7F(消去済)」に変更する。そして、ブロック状態が「使用中」のブロックAの選択領域の「7F」で指し示される「領域0」からデータを読み出す。
そして、14回目の電源オフ時には、ブロックBのROM状態を「DB(使用可)」に変更するとともに、選択領域を最初の領域番号を指し示す「7F(領域0)」に変更する。さらにブロック状態が「使用中」であるブロックAの選択領域に格納された「7F」で指し示された「領域0」の領域番号に「1」を加えた領域番号である「データ領域1」にデータを書き込む。そして、ブロックAの選択状態をそれまでの領域番号に「1」を加えた領域番号で示される「3F(領域1)」に変更する。
次に、情報処理装置11の作用を、図8及び図9に示すフローチャートに基づいて、必要に応じて図10〜図12のデータ遷移図を参照しつつ説明する。まず図8に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図8及び図9では、ブロックAの管理領域を「管理領域A」と呼び、ブロックBの管理領域を「管理領域B」と呼ぶ。
まずステップS11においてブロックAの管理領域を読み出し、次のステップS12においてブロックBの管理領域を読み出す。
ステップS13では、管理領域Aのブロック状態が「消去済」、「消去可」、「使用中」のいずれであるかを判断する。「使用中」であれば、ステップS14において、ブロックAの選択状態の指すデータ領域からデータを読み出す。
一方、ステップS13の判断結果が「消去可」であれば、ステップS15において、ブロックAの消去を行う。そして、次のステップS16において、管理領域Aのブロック状態を「消去済」にする。また、ステップS13の判断結果が「消去済」であれば、ステップS17に進む。
ステップS17では、管理領域Bのブロック状態が「消去済」、「消去可」、「使用中」のいずれであるかを判断する。「使用中」であれば、ステップS18において、ブロックBの選択状態の指すデータ領域からデータを読み出す。
一方、ステップS17の判断結果が「消去可」であれば、ステップS19において、ブロックBの消去を行う。そして、次のステップS20において、管理領域Bのブロック状態を「消去済」にする。また、ステップS17の判断結果が「消去済」であれば、当該ルーチンを終了する。
なお、ブロックA,Bの各ブロック状態が共に「消去済」である場合は異常とし、所定の異常処理を行う。この異常の際はブロックA,Bの選択領域からデータを読み出さずに、工場出荷時に別の領域に書き込まれているデータ(初期データ)を読み出す。その後、管理領域Aのブロック状態BSを「使用中」にするとともに、その選択領域SAに「領域0」を書き込む。
次に図9に示す電源オフ時のデータ書込み処理ルーチンについて説明する。
まずステップS31においてブロックAの管理領域を読み出し、次のステップS32においてブロックBの管理領域を読み出す。
ステップS33では、管理領域Aのブロック状態が「使用中」であるかを判断する。「使用中」であれば、ステップS34において、管理領域Aの選択領域が「領域6」であるかを判断する。「領域6」でなければ、ステップS35において、ブロックAの「選択領域+1」の指すデータ領域へデータを書き込む。つまり、ブロックAの選択領域の指す領域番号に「1」を加えた領域番号のデータ領域へデータを書き込む。
次のステップS36では、管理領域Aの選択領域を「前回の領域+1」にする。
一方、ステップS34の判断結果が「領域6」であれば、ステップS37において、ブロックBの選択領域0へデータを書き込む。すなわち、ブロックBの選択領域の指す領域番号「0」に対応するデータ領域0へデータを書き込む。
次のステップS38では、管理領域Bの選択領域を「領域0」にする。
さらに次のステップS39では、管理領域Bのブロック状態を「使用中」にする。
そして、次のステップS40では、管理領域Aのブロック状態を「消去可」にする。
一方、ステップS33の判断結果が管理領域Aのブロック状態が「使用中」でなかった場合は、ステップS41において、管理領域Aの選択領域が「領域6」であるかを判断する。「領域6」でなければ、ステップS42において、ブロックBの「選択領域+1」の指すデータ領域へデータを書き込む。つまり、ブロックBの選択領域の指す領域番号に「1」を加えた領域番号のデータ領域へデータを書き込む。
次のステップS43では、管理領域Bの選択領域を「前回の領域+1」にする。
一方、ステップS41の判断結果が「領域6」であれば、ステップS44において、ブロックAの選択領域0へデータを書き込む。すなわち、ブロックAの選択領域の指す領域番号「0」に対応するデータ領域0へデータを書き込む。
次のステップS45では、管理領域Aの選択領域を「領域0」にする。
さらに次のステップS46では、管理領域Aのブロック状態を「使用中」にする。
そして、次のステップS47では、管理領域Bのブロック状態を「消去可」にする。
以上詳述したように、本実施形態では、以下に示す効果を得ることができる。
(1)二つのブロックA,Bを使用し、ブロックをk(kは3以上の自然数)分割し、1個の管理領域CAと(k−1)個のデータ領域0〜k-1とに分割した。そして、管理領域CAには、ROM状態RS、ブロック状態BS、選択領域SAの各管理情報を格納した。このため、CPU21は、第1判定部31が判定したブロック状態BSのフラグ値から使用中のブロックを知ることができ、また選択領域SAのフラグ値からデータの読出し元及び書込み先のデータ領域を知ることができる。例えばCPUが使用中のブロックを検索し、かつ複数のデータ領域の中から使用中(選択中)のデータ領域を検索する構成とすると、検索処理に多大な時間を要することになる。しかし、本実施形態では、管理領域中のフラグ値を調べるだけで済むので、データの読出処理及び書込処理を高速化できる。また、従来技術で述べたデータ管理方法のようにデータ管理領域内にデータ格納領域と同数用意されたデータ管理テーブルをいちいち検索しなくても、本実施形態によれば、管理領域CA内のブロック状態BSと選択領域SAの各情報を用いて、読出し元のデータ領域と書込み先のデータ領域を速やかに把握して、データDの読出し及び書込みを速やかに行うことができる。
(2)電源オン時のデータ読出し時には、選択領域の指すデータ領域からデータDを読み出せばよいので、データ読出し処理を高速化できる。
(3)電源オフ時のデータ書込み時には、選択領域の指すデータ領域の領域番号に「1」を加えた領域番号のデータ領域へデータDを書き込めばよいので、データ書込み処理を高速化できる。
(4)第2判定部32により、使用中のブロックの選択領域が最終のデータ領域(本例では「領域6」)を指すか否かを判定し、最終のデータ領域を指す場合は、他方のブロックの最初のデータ領域にデータを書き込む。よって、二つのブロックA,Bのうち使用中のブロックの全てのデータ領域が使用済みになった場合でも、他方のブロックの最初のデータ領域にデータを書き込むことができる。
(5)第2判定部32により、使用中のブロックの選択領域が最終のデータ領域を指すと判定された場合に、その使用中のブロックのブロック状態を「消去可」とする。そして、次回の電源オン時に第1判定部31によりブロック状態が「消去可」になっていると判定されると、消去部36がそのブロックの消去処理を行う。よって、二つのブロックA,Bのうち使用中のブロックの全てのデータ領域が使用済みになった場合に、その使用済みのブロックの消去処理を行うことができる。また、ブロックの最初のデータ領域にデータを書き込む順番が回ってくる前に予め消去処理を行っておくので、他方のブロックのデータ領域を全て使い終わったときにも、データを書き込むことができる。
(6)ブロックAのデータ領域0〜N(本例ではN=7)を全て使い終わってから、ブロックBへ切り替えるので、N回の電源オン/オフに1回の割でデータ消去処理を行えばよい。この結果、フラッシュメモリー装置24の消去処理回数を低減することができ、フラッシュメモリー装置24を長寿命化させることができる。
(7)「消去可」になったブロックの消去処理を電源オン時に行う。このため、電源オフ時のデータ書込み処理を、消去処理が無くなった分だけ短時間で済ませることができる。
(8)データを消去した後に、ブロック状態の更新を行うので、ブロック状態が更新されてからデータを書込むまでの間に電源異常遮断が発生した場合でも、更新前のブロック状態の情報から再度データ消去が行われるので、データ消去を確実に行うことができる。例えば、これとは逆に、ブロック状態の更新後に、データを消去する構成であると、その間に電源異常遮断が発生した場合に、データ消去が行われていないにも関わらず、更新後のブロック状態が「消去済」になっていると、データ消去が行われない場合も起こりうる。しかし、前記実施形態では、データ消去を確実に行うことができる。
(9)データDの記憶に使用するブロックを二つとし、一方のブロックの全てのデータ領域が使い終わった段階で使用ブロックを他方のブロックへ移行するように、二つのブロックA,Bを交互に使用するローテーションを採用している。よって、データDの記憶に使用するブロック数を、本実施形態のデータ管理方法を採用する場合の最少個数に抑えることができる。
(第2実施形態)
次に第2実施形態を図13〜図16に基づいて説明する。前記第1実施形態では電源オン時に消去処理を行ったが、この第2実施形態では電源オフ時に消去処理を行う構成である。本実施形態は、「消去可」のブロックの消去処理を電源オフ時に行うことにより、電源オン処理の所要時間を短くして、電源オン操作から印刷開始可能な状態になるまでの所要時間を短くすることを目的としている。
図13は、工場出荷状態に設定される管理領域のフラグ値を示す。工場出荷時には、ブロックA,Bのデータを一旦消去して全て「FF」とした後、管理領域CAに図13に示すフラグ値を書き込む。図13に示すように、工場出荷状態では、ブロックAは、最初(初回)の電源オフ時に消去処理の対象となるので、ROM状態RS、ブロック状態BS、選択領域SAが全て「FF」のままとされる。また、ブロックBでは、ROM状態RSが「DB(使用可)」、ブロック状態BSが「3F(使用中)」、選択領域SAが「01(領域6)」にそれぞれ設定される。このため、ブロックBのデータ領域6に初期データが格納される。もちろん、ROM状態RSを「FF」「DB」以外の設定値(例えば「51」)とし、出荷後の初回電源オン時にCPU21がフラッシュメモリー装置24の所定記憶領域に保存されている初期状態のデータDを読み出す構成も採用できる。
図14は、情報処理装置11の電源をオン/オフさせた回数と、その回数に対応する各ブロックA,Bの管理領域のフラグ値の遷移の様子を示したものである。但し、図14では、8回目の電源オン/オフ時のフラグ値の遷移状態を示す。
次に、情報処理装置11の作用を、図15及び図16に示すフローチャートに基づいて、必要に応じて図14のデータ遷移図を参照しつつ説明する。まず図15に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図15及び図16では、前記第1実施形態と同様、ブロックAの管理領域を「管理領域A」と呼び、ブロックBの管理領域を「管理領域B」と呼ぶ。初回の電源オン時は、管理領域CAは、図13に示す工場出荷状態に設定されるフラグ値になっている。
本実施形態では、電源オン時の消去処理は行わないので、図15に示すフローチャートは、前記第1実施形態の図8に示す電源オン時のデータ読出し処理ルーチンから、消去処理に関係する処理が廃止されている。
まずステップS51においてブロックAの管理領域を読み出し、次のステップS52においてブロックBの管理領域を読み出す。
ステップS53では、管理領域Aのブロック状態が「使用中」であるか否かを判断する。そして、その判断結果が「使用中」であれば、ステップS54において、ブロックAの選択状態の指すデータ領域からデータを読み出す。
一方、ステップS53においてブロックAのブロック状態が「使用中」でなければ、ステップS55において、管理領域Bのブロック状態が「使用中」であるか否かを判断する。そして、その判断結果が「使用中」であれば、ステップS56において、ブロックBの選択状態の指すデータ領域からデータを読み出す。本例の場合、初回の電源オン時に、管理領域Bのブロック状態が「使用中(「3F」)」(図13参照)であるので、ブロックBの選択領域の値「01(領域6)」で示されたデータ領域6から初期状態のデータDを読み出す。
また、ステップS55の判断結果が「使用中」でない場合、つまり、管理領域Aと管理領域Bの各ブロック状態が共に「使用中」でない場合は、ステップS57において、異常とし、所定の異常処理を行う。
なお、ブロックA,Bの各ブロック状態が共に「使用中」であるか否かの判定も行って、各ブロック状態が共に「使用中」である場合も異常とし、所定の異常処理を行うようにしてもよい。異常の際はブロックA,Bの選択領域からデータを読み出さずに、工場出荷時に別の領域に書き込まれている初期状態のデータ(初期データ)を読み出す。
こうして電源オン時に初期状態のデータDをRAM23の所定記憶領域に書き込む。情報処理装置11の電源オン後の稼働中は、所定動作を行って更新されたデータをRAM23の所定記憶領域に上書きすることにより、RAM23のデータは逐次更新される。そして、電源オフ時には、RAM23に記憶された更新のデータDを保存すべく、そのデータDをフラッシュメモリー装置24へ書き込む図16に示す処理が行われる。
次に図16に示す電源オフ時のデータ書込み処理ルーチンについて説明する。
まずステップS61においてブロックAの管理領域を読み出し、次のステップS62においてブロックBの管理領域を読み出す。
ステップS63では、管理領域Aのブロック状態が「使用中」であるか否かを判断する。すなわち、管理領域Aのブロック状態が「使用中」であるか、それとも管理領域Bのブロック状態が「使用中」であるかを判断する。管理領域Aのブロック状態が「使用中」でなければ、つまり管理領域Bのブロック状態が「使用中」であればステップS64に進む。一方、管理領域Aのブロック状態が「使用中」であればステップS73に進む。
ステップS64では、管理領域Bの選択領域が「領域6」であるか否かを判断する。例えば初回電源オフ時は管理領域Bの選択領域が「領域6」になっているので(図13参照)、ステップS67に進んで、ブロックAを消去する。すなわち、CPU21はブロックAのアドレスを指定して消去コマンドをフラッシュメモリー装置24に送る。その結果、フラッシュメモリー装置24はブロックAのデータを消去する。
次のステップS68では、管理領域AのROM状態を「使用可」、ブロック状態を「消去済」にする。
そして、次のステップS69において、ブロックAの最初の領域番号「0」に対応するデータ領域0へデータを書き込む。さらに次のステップS70では、管理領域Aの選択領域を「領域0」にする。そして、ステップS71では、管理領域Aのブロック状態を「使用中」にする。さらにステップS72において、管理領域Bのブロック状態を「消去可」にする。このため、ブロック状態が「使用中」にある管理領域A側の選択領域は、データが書き込まれた「領域0」を指すことになる。
こうして初回電源オフ時に、ブロックAが消去されるとともに、ブロックAのデータ領域0にデータDが書き込まれる。そして、最新のデータDが書き込まれたブロックAの管理領域CAには、ROM状態「使用可」、ブロック状態「使用中」、選択領域「領域0」の各情報が格納される。
次に2回目の電源オン時は、図15のステップS53において管理領域Aのブロック状態が「使用中」であると判断されるので(S53で肯定判定)、ステップS54においてブロックAの選択領域「領域1」の指すデータ領域1からデータを読み出す。
そして、2回目の電源オフ時は、ステップS63において管理領域Aのブロック状態が「使用中」と判断されるので、ステップS73に進む。そして、ステップS73において管理領域Aの選択領域が「領域6」であるか否かを判断する。「領域6」であればステップS76に進み、「領域6」でなければステップS74に進む。2回目の電源オフ時は「領域1」であり「領域6」ではないので、ステップS74に進むことになる。
ステップS74では、ブロックAの選択領域の指す領域番号に「1」を加えた領域番号に対応するデータ領域へデータを書き込む。すなわち、2回目の電源オフ時は、そのときの「領域番号1」に「1」を加えた領域番号「2」に対応するデータ領域2にデータDを書き込む。そして、次のステップS75において、管理領域Aの選択領域を「前回の領域+1」にする。つまり、2回目の電源オフ時は、管理領域Aの選択領域を、前回の領域1+1、すなわち「領域2」にする。この結果、ブロック状態が「使用中」にある管理領域A側の選択領域はデータが書き込まれたデータ領域を指すことになる。
こうして以下、同様に、3回目の電源オン時に、管理領域Aのブロック状態が「使用中」である側のブロックAの選択領域「領域2」の指すデータ領域1からデータDを読み出す(S53,S54)。そして、3回目の電源オフ時に、管理領域Aのブロック状態が「使用中」であり(S63で肯定判定)、かつ選択領域が「領域6」ではなく「領域2」なので(S73で否定判定)、ブロックAの選択領域「領域2」に「1」を加えた領域番号の指すデータ領域3へデータDを書き込む(S74)。そして、管理領域Aの選択領域を前回の領域2に「1」を加えた「領域3」にする(S75)。
そして、4回目の電源オン/オフ、5回目の電源オン/オフを終え、さらに6回目の電源オン/オフを終えると、ブロックAの選択領域「領域5」に「1」を加えた領域番号の指すデータ領域6へデータDを書き込む(S74)。そして、管理領域Aの選択領域を前回の領域5に「1」を加えた「領域6」にする(S75)。こうしてブロックAの各データ領域にデータDが格納されたことになる。
次の7回目の電源オン時は、図15のステップS53において管理領域Aのブロック状態が「使用中」であると判断され(S53で肯定判定)、さらにブロックAの選択領域「領域6」の指すデータ領域6からデータDを読み出す(S54)。
そして、7回目の電源オフ時は、管理領域Aのブロック状態が「使用中」と判断され(S63で肯定判定)、かつステップS73において管理領域Aの選択領域が「領域6」であると判断される。「領域6」であるためステップS76に進むことになる。
ステップS76では、ブロックBを消去する。すなわち、CPU21はブロックBのアドレスを指定して消去コマンドをフラッシュメモリー装置24に送る。その結果、フラッシュメモリー装置24はブロックBのデータを消去する。
次のステップS77では、管理領域BのROM状態を「使用可」、ブロック状態を「消去済」にする。
そして、次のステップS78において、ブロックBの最初の領域番号「0」に対応するデータ領域0へデータを書き込む。さらに次のステップS79では、管理領域Bの選択領域を「領域0」にする。そして、ステップS80では、管理領域Bのブロック状態を「使用中」にする。さらにステップS81において、管理領域Aのブロック状態を「消去可」にする。このため、ブロック状態が「使用中」にある管理領域B側の選択領域は、データが書き込まれた「領域0」を指すことになる。
こうして7回目の電源オフ時に、ブロックBが消去されるとともに、ブロックBのデータ領域0にデータDが書き込まれる。そして、最新のデータDが書き込まれたブロックBの管理領域CAには、ROM状態「使用可」、ブロック状態「使用中」、選択領域「領域0」の各情報が格納される。
このように、1回目の電源オフ時にブロックAの消去処理を行い、8回目の電源オフ時にブロックBの消去処理が行われ、15回目の電源オフ時にブロックAの消去処理が行われ、22回目の電源オフ時にブロックBの消去処理が行われる。つまり、1回目の電源オフ時にブロックAの消去処理が行われた後、その消去後のブロックAの最初のデータ領域0にデータDが書き込まれ、以後、2回目〜7回目の電源オフ時には、そのときのブロックAの選択領域の指す領域番号に「1」を加算した各データ領域1〜6にその電源オフ時のデータDが順次書き込まれる。そして、8回目の電源オフ時には、「使用中」のブロックB側の選択領域が「領域6」なので、ブロックBの消去処理が行われる。
8回目の電源オフ時にブロックBの消去処理が行われた後、その消去後のブロックBの最初のデータ領域0にデータDが書き込まれ、以後、9回目〜14回目の電源オフ時には、そのときのブロックBの選択領域の指す領域番号に「1」を加算した各データ領域1〜6にその電源オフ時のデータDが順次書き込まれる。そして、15回目の電源オフ時には、「使用中」のブロックB側の選択領域が「領域6」なので、ブロックAに消去処理が行われる。このように8回の電源オフ毎にブロックAとブロックBに交互に消去処理が行われる。つまり、ブロック当たりにデータ領域が(N+1)個(本例では7個)ある場合、{2(N+1)m+1}回目(但しm=0,1,2…)の電源オフ時にはブロックAの消去処理が行われ、{2(N+1)m+8}回目の電源オフ時にはブロックBの消去処理が行われる。
よって、図14に示すように、8回目の電源オン時に、ブロック状態が「使用中」であるブロックAの「領域6」からデータDを読み出し、情報処理装置11の稼働中においてRAM23のこのデータDを逐次更新する。そして、8回目の電源オフ時に、ブロック状態が「使用中」であるブロックAの選択領域が「領域6」であるので、CPU21はブロックBのアドレスを指定してフラッシュメモリー装置24に消去コマンドを送る。そして、CPU21は消去コマンド送信の後、状態レジスター44から信号状態を監視し、フラッシュメモリー装置24が消去処理中であることを示すビジー信号から、消去処理終了を示すレディー信号に切り換わったことをもって消去完了を確認する。
そして、図14に示すように、消去完了を確認すると、ブロックBのROM領域を「使用可」、ブロック状態を「消去済」とし、その後、ブロックBの最初のデータ領域0にデータを書き込み、この書込み後、ブロックBの選択領域を「領域0」にする。さらに、図14に示すように、ブロックAのブロック状態を「消去可」、ブロックBのブロック状態を「使用中」にする。
また、情報処理装置11の稼動中に、停電やコンセント抜けなどが原因で、不意な電源遮断が発生した場合、CPU21は電源オフ時のデータ書込み処理を行う。但し、このような不意な電源遮断時は、比較的時間を要する消去処理は行わない。情報処理装置11は、内部にキャパシター式の二次電池(図示せず)を備え、二次電池が放電し切るまでの所定時間の間はCPU21への電力供給が行われる。この所定時間は比較的短いため、消去処理を行えるほどの時間はない。このため、不意な電源遮断時は、消去処理以外のデータDの書込み処理を優先的に行うようになっている。この場合、その電源遮断時に消去処理が必要であった場合は、次回の電源オン時にブロック状態が「消去可」になっているので、「消去可」であった場合に消去処理を行う。
以上詳述した第2実施形態によれば、以下の効果を得ることができる。
(10)電源オフ時にブロックの消去処理を行うので、電源オン時に消去処理を行う第1実施形態の構成に比べ、電源オン操作から印刷開始可能状態になるまでの所要時間を短くし、速やかに印刷を開始することができる。
(第3実施形態)
次に第3実施形態を図17〜図19に基づいて説明する。この第3実施形態は、電源オフ時におけるデータDの書込みの際に電源が異常に遮断されたことに起因して管理領域CAの各情報が異常な状態となっても、次回の電源オン時に正しくデータDを読み出すことが可能な構成の例である。本実施形態では、管理領域Aのブロック状態と管理領域Bのブロック状態とが共に「使用中」であった場合、データDを読み出すべきデータ領域の属するブロックを特定できなくなる。なお、異常電源遮断には、情報処理装置11に電力を供給している公共電源の停電や、情報処理装置11の電源コンセントのコンセント抜けなどが挙げられる。
図17に示すように、本実施形態のブロックA,Bの管理領域CAには、ROM状態RS、ブロック状態BS及び選択領域SAに、別ブロック状態ABを加えた4種類の管理情報を格納するための4つのフラグ領域FA1〜FA4を備えている。本実施形態では、各フラグ領域FA1〜FA4は、それぞれ1バイトの記憶容量を有している。
ここで、ROM状態RS、ブロック状態BS及び選択領域SAは、第1及び第2実施形態のものと同様である。別ブロック状態ABとは、他方のブロックのブロック状態BSの内容を示す情報であり、他方のブロックのブロック状態BSと同じタイミングで同期してその内容が書き替えられる。例えば図18に示すように、6回目の電源オン時の例では、ブロックAのブロック状態と、ブロックBの別ブロック状態とは同じ値「3F(使用中)」になっており、ブロックBの別ブロック状態は他方のブロックAのブロック状態の内容を示している。また、図18に示す6回目の電源オン時の例では、ブロックBのブロック状態と、ブロックAの別ブロック状態とは同じ値「7F(消去済)」になっており、ブロックAの別ブロック状態は他方のブロックBのブロック状態の内容を示している。
次に、情報処理装置11の作用を、図19に示すフローチャートに基づいて、必要に応じて図18に示す6回目の電源オン/オフ時のデータ遷移図を参照しつつ説明する。なお、電源オフ時のデータ書込み処理ルーチンは、第1実施形態の図9に示すフローチャートと同様である。
以下、図19に示す電源オン時のデータ読出し処理ルーチンについて説明する。なお、図19では、ブロックAの管理領域を「管理領域A」と呼び、ブロックBの管理領域を「管理領域B」と呼ぶ。
まずステップS91においてブロックAの管理領域を読み出し、次のステップS92においてブロックBの管理領域を読み出す。
ステップS93では、管理領域Aのブロック状態と管理領域Bのブロック状態が共に「使用中」であるか否かを判断する。管理領域A,Bの各ブロック状態が共に「使用中」ではない場合、つまり管理領域A,Bの各ブロック状態の一方のみが「使用中」である場合は、ステップS94に進む。
ステップS94は、正常時のデータ読出し処理を行う。すなわち、第1実施形態における図8のステップS13〜S20の処理を行う。
一方、ステップS93の判断結果が、管理領域A,Bの各ブロック状態が共に「使用中」である場合は、ステップS95に進んで、管理領域Bの別ブロック状態が「使用中」であるか否かを判断する。管理領域Bの別ブロック状態が「使用中」であれば、ステップS96に進み、一方、「使用中」でなければステップS99に進む。
ステップS96では、ブロックBの消去処理を行う。
次のステップS97では、管理領域Bのブロック状態を「消去済」にする。
さらに次のステップS98では、ブロックAの選択領域の指すデータ領域からデータを読み出す。
一方、ステップS95の判断結果が、管理領域Bの別ブロック状態が「使用中」でない場合は、ステップS99において、管理領域Aの別ブロック状態が「使用中」であるか否かを判断する。管理領域Aの別ブロック状態が「使用中」であれば、ステップS100に進み、一方、「使用中」でなければステップS103に進む。
ステップS100では、ブロックAの消去処理を行う。
次のステップS101では、管理領域Aのブロック状態を「消去済」にする。
さらに次のステップS102では、ブロックBの選択領域の指すデータ領域からデータを読み出す。
そして、ステップS99の判断結果が、管理領域Aの別ブロック状態が「使用中」でない場合は、ステップS103において異常とし異常処理を行う。
例えば図18に示すように、6回目の電源オン時には、管理領域の4種類の情報は同図に示すようになっている。すなわち、各ブロックA,BのRM状態、ブロック状態、選択状態は、第1実施形態の図10に示す6回目の電源オン時と同様であり、さらに各ブロックA,Bの別ブロック状態は、それぞれ他方のブロック状態の内容を示している。つまり、ブロックAの別ブロック状態はブロックBのブロック状態の内容「7F(消去済)」を示し、ブロックBの別ブロック状態はブロックAのブロック状態の内容「3F(使用中)」を示している。
6回目の電源オフが正常に遮断された場合、第1実施形態で説明したように、ブロックAのブロック状態が「1F(消去可)」、ブロックBのブロック状態が「3F(使用中)」に書き替えられる。このとき、別ブロック状態については、ブロックAの別ブロック状態が、ブロックBのブロック状態である「3F(使用中)」に切り換えられ、ブロックBの別ブロック状態が、ブロックAのブロック状態である「1F(消去可)」に書き替えられる。
これに対し、6回目の電源オフの処理途中で停電やコンセント抜けなどが発生してこれが原因で異常に電源遮断された場合、管理領域の情報は例えば図18に示すような内容になる。すなわち、図18に示す異常遮断の例のように、ブロックBのブロック状態は「3F(使用中)」に書き替えられたものの、ブロックAのブロック状態の書き替えを終える前に電源が異常遮断されたため、ブロックAのブロック状態の書き替えを失敗している。この結果、図18に示すように、ブロックA,Bのブロック状態が共に「使用中」になっている。
このとき、本実施形態では、ブロックA,Bの別ブロック状態には、それぞれ他方のブロックのブロック状態の内容が書き替えられるときに、同期して同じ内容に書き替えられる。このため、この電源異常遮断時には、図18に示すように、ブロックBのブロック状態が「3F(使用中)」に書き替えられるとともに、ブロックAの別ブロック状態はブロックBのブロック状態の内容「3F(使用中)」に書き替えられたものの、ブロックAのブロック状態と、ブロックBの別ブロック状態との書き替えは失敗し、少なくとも一方が異常な値になったものとする。図18の例では、ブロックAのブロック状態は書き替えられることなく「3F(使用中)」のままで、ブロックBの別ブロック状態が異常に桁落ちして異常な値「1F(消去可)」になったものとする。なお、図18の例ではたまたま正常遮断時の内容に一致しているが、このような異常遮断時にはブロックAのブロック状態とブロックBの別ブロック状態が一致しない。
このような図18の例のような電源の異常遮断時には、ブロックAの別ブロック状態が「使用中」と判断される(図19のS99で肯定判定)。このため、CPU21はブロックAのアドレスを指定してブロックAの消去コマンドをフラッシュメモリー装置24へ送ることにより、ブロックAの消去処理を行う(S100)。そして、CPU21は管理領域Aのブロック状態を「消去済」にした(S101)後、ブロックBの選択領域の指すデータ領域からデータを読み出す(S102)。
以上詳述したように、第3実施形態によれば、以下の効果を得ることができる。
(11)電源オフ時の処理途中で電源が異常遮断されたり、情報処理装置11の稼動途中で電源が異常遮断されたりして、ブロックA,Bのブロック状態が共に「使用中」になっても、次回の電源オン時に別ブロック状態の値を参照することにより、正しいデータDを読み出すことができる。
なお、上記実施形態は以下のような形態に変更することもできる。
・前記各実施形態では、ブロックのデータ消去を、使用中のブロックが切り替わった後における最初の電源オフ時又は最初の電源オン時に行ったが、これに限定されない。ブロックのデータ消去は、使用中のブロックが切り替わった後、さらに次回、使用中のブロックが切り替わるまでの間に行えば足りる。例えば、使用中のブロックが切り替わった後における2回目、3回目、4回目、5回目、6回目、7回目のうちいずれかの回における電源オフ時又は電源オン時に行ってもよい。要するに、「不使用」のブロックは次回「使用中」に切り替わるまでは使用されることはないので、次回、使用中のブロックに切り替わるまでデータ消去が行われれば足りる。
・省電モードに移行する際にデータ消去を行ってもよい。すなわち、省電モードへの移行時期になると、その移行前にブロック状態が「消去可」のブロックのデータ消去を行うとともに、データ消去後にそのデータ消去のブロックのブロック状態を「消去可」から「消去済」に更新する。この構成によれば、電源オン時の起動処理を早期に終了して早期に印刷を開始できるうえ、電源オフ時にのみ消去を行う構成に比べ、消去の機会が増え、さらに電源異常オフ時にはデータの書込みしかできず、データ消去を行う前もしくは消去の途中に電源が異常遮断されても、データ消去をより確実に行うことができる。
・前記実施形態では、選択領域の示す領域番号nから「領域番号+1」で規定される領域番号(n+1)のデータ格納領域にデータを書き込んだが、選択領域の更新をデータ書込み前に行い、更新後の選択領域の示す位置にあるデータ格納領域にデータを書き込む構成としてもよい。
・前記各実施形態では、ブロック状態として「使用中」と「消去可」と「消去済」の3つの状態を採用したが、「消去可」と「消去済」とを「不使用」1つにまとめ、「使用中」と「不使用」の2種類の状態で管理してもよい。この構成でも、使用中のブロックがどちらかを特定できるうえ、使用中のブロックの選択領域の示す位置が最終の場合に、当該ブロックの消去処理と、消去処理後の当該ブロックのブロック状態の「不使用」から「使用中」への変更、及び他方のブロックのブロック状態の「使用中」から「不使用」への変更を行うことができる。
・前記各実施形態においてデータDの記憶に使用するブロック数は2つに限定されず、例えば特許文献1のように3つ以上の複数のブロックを使用し、3つ以上のブロックをローテーションで使用してもよい。
・第3実施形態において、3つ以上のブロックをローテーションで使用する場合は、各ブロックの管理領域CAには、3つ以上のブロックのうち当該3つのブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納される構成とすればよい。この場合、一のブロックの管理領域CA内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される別ブロック状態の値を、タイミングを同期させて更新する。この構成であれば、3つ以上のブロックのうち2つのブロックの各管理領域CA内のブロック状態が共に「使用中」になっても、どちらの「使用中」が間違いであるかを別ブロック状態の値から特定できる。よって、間違いである側のブロックの消去処理を改めて行うことができる。
・選択領域SAの値が、データDの読出元となるデータ領域(又はその領域番号)を指し示す構成であることに限定されない。例えば選択領域SAの値がデータDの書込先のデータ領域(又はその領域番号)を示す構成でもよい。この場合、電源オン時のデータ読出しの際は、選択領域SAの指す領域番号から「1」を減算した領域番号に対応するデータ領域からデータDを読み出し、電源オン時には選択領域SAの指す領域番号に対応するデータ領域へデータDを書き込む構成とすればよい。また、選択領域SAの値がデータ読出元のデータ領域の領域番号を指し示す構成とし、電源オン時にデータを読み出したら選択領域の値に「1」を加算することで、その選択領域の値が次の書込み先のデータ領域を指し示すように構成してもよい。このように選択情報とは、読出元のデータ領域を指し示す情報(読出位置情報)でも、書込先のデータ領域を指し示す情報(書込位置情報)でもよい。
・選択情報を書込位置とした場合、判断手段は、書込位置から読出位置(例えば読出し位置の領域番号)を求め、その読出位置が最終位置(例えば「領域6」)であるか否かを判断する構成とすればよい。また、書込位置が、読出位置が最終位置であるときの値(例えば読出位置に「1」を加えた値)に達したか否かを判断する構成としてもよい。
・図2におけるCPU21内の各機能部を、プログラムを実行するCPU21によりソフトウェアで実現したが、ハードウェアで実現したり、ソフトウェアとハードウェアとの協働により実現したりしてもよい。
前記実施形態及び変形例から把握される技術的思想を以下に記載する。
(1)所定の記憶容量を有する一つずつが消去の単位となるブロックを複数有する不揮発性メモリーと、前記不揮発性メモリーに対してデータの読出し及び書替えを行う制御手段とを備えた情報処理装置であって、前記ブロックのうち、ブロックの使用・不使用を示すブロック状態と、アクセスすべき領域を規定する選択領域を少なくとも含む情報が格納される1つの管理領域と、複数のデータ格納領域とに分割された二つのブロックと、前記情報処理装置の電源オン時に、前記二つのブロックのうちブロック状態が「使用中」である一つのブロックの選択領域で示されるデータ格納領域のデータを読み出すデータ読出手段と、前記情報処理装置の電源オフ時に、前記選択領域に格納されているデータ格納領域の示す位置が最終であるか否かを判断する判断手段と、前記選択領域に格納されているデータ格納領域の示す位置が最終ではない場合、選択領域に格納されるデータ格納領域を示す位置を次の位置に更新し、更新したデータ格納領域の示す位置にデータを格納し、一方、選択領域に格納されているデータ格納領域の位置が最終の場合、一方のブロックのブロック状態を「使用中」から「消去可」に変更し、他方のブロックのブロック状態を「消去済」から「使用中」に変更し、他方のブロックのデータ格納領域の示す位置にデータを格納するデータ書込手段と、いずれかのブロックが消去状態の場合に消去状態のブロックのブロック状態を「消去済」に変更し、選択領域に格納されるデータ格納領域の位置を最初の位置に戻す初期化手段と、を備えたことを特徴とする情報処理装置。
11…情報処理装置、12…コントローラー、13…電源回路、14…操作部、14A…電源スイッチ、15…表示部、16…駆動回路、17…アクチュエーター、18…消費材、20…コンピューター、21…CPU、22…ASIC、23…RAM、24…不揮発性メモリーの一例であるフラッシュメモリー装置、31…第1判定部、32…第2判定部、33…判定手段の一例を構成する第3判定部、34…読出手段の一例である読出部、35…書込部、36…消去部、41…メモリー制御回路、42…フラッシュメモリー部、44…状態レジスター、45…フラッシュメモリーセル、D…データ、A,B…複数のブロック及び二つのブロックの一例を構成するブロック、CA…管理領域、DA…データ格納領域(データ領域)、RS…ROM状態、BS…ブロック状態、SA…選択情報の一例である選択領域、AB…別ブロック状態。

Claims (11)

  1. 所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置であって、
    ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される1つの管理領域と、複数のデータ格納領域とに分割された複数のブロックと、
    前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出手段と、
    前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定手段と、
    前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込手段と、
    前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去手段と、
    を備えたことを特徴とする情報処理装置。
  2. 前記ブロックは二つであり、前記ローテーションでは前記二つのブロックを交互に使用することを特徴とする請求項1に記載の情報処理装置。
  3. 前記選択情報は、読出元のデータ格納領域を指す読出位置の情報であり、
    前記読出手段は、前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報の指すデータ格納領域からデータを読み出し、
    前記判定手段は、前記使用中のブロックにおける前記選択情報の指す読出位置が最終位置であるか否かを判定することを特徴とする請求項1又は2に記載の情報処理装置。
  4. 前記ブロック状態を示す前記不使用には、消去可と消去済とがあり、
    前記書込手段は、前記選択情報の指す読出位置が最終位置となったブロックの前記ブロック状態を消去可の値に変更し、
    前記消去手段は、前記ブロック状態が消去可の値になったブロックのデータを消去するとともに、消去状態になったブロックの前記管理領域内のブロック状態を消去済の値に変更することを特徴とする請求項1乃至3のいずれか一項に記載の情報処理装置。
  5. 前記書込手段は、前記次のブロックの先頭位置の前記データ格納領域にデータを書き込んだ後、当該次のブロックの前記選択情報を前記先頭位置のデータ格納領域を指す値に更新することを特徴とする請求項1乃至4のいずれか一項に記載の情報処理装置。
  6. 前記管理領域には、ブロックが使用可能状態か使用不能状態かを示すROM状態が更に格納され、前記ROM状態が使用可能状態であるブロックは使用するが、使用不能状態であるブロックは使用しないことを特徴とする請求項1乃至5のいずれか一項に記載の情報処理装置。
  7. 前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オン時に行うことを特徴とする請求項1乃至6のいずれか一項に記載の情報処理装置。
  8. 前記消去手段は、前記ブロックのデータの消去を、前記情報処理装置の電源オフ時又は省電力モード移行時に行うことを特徴とする請求項1乃至7のいずれか一項に記載の情報処理装置。
  9. 電源の異常遮断時には、前記ブロックの消去処理を行うべき条件が成立していても、前記消去手段による前記ブロックの消去処理は行わず、前記書込手段による前記データの書込処理を行うことを特徴とする請求項1乃至8のいずれか一項に記載の情報処理装置。
  10. 前記管理領域には前記複数のブロックのうち当該ブロック間で重複しないように定められた他のブロックにおけるブロック状態の値が別ブロック状態として格納され、
    一のブロックの前記管理領域内のブロック状態の値を更新するときには、当該ブロック状態の値が格納される前記別ブロック状態の値を、タイミングを同期させて更新することを特徴とする請求項1乃至9のいずれか一項に記載の情報処理装置。
  11. 所定記憶容量を有し消去の単位となるブロックを複数有する不揮発性メモリーを備え、前記不揮発性メモリーに対してデータの読出し及び書込みが行われる情報処理装置におけるデータ管理方法であって、
    前記不揮発性メモリーは、ブロックが使用中か不使用かを示すブロック状態と、読出元又は書込先のデータ格納領域を選択して指し示す選択情報とを少なくとも含む情報が格納される1つの管理領域と、複数のデータ格納領域とに分割された複数のブロックを備え、
    前記情報処理装置の電源オン時に、前記ブロック状態が使用中のブロックの前記選択情報から規定される読出位置のデータ格納領域からデータを読み出す読出ステップと、
    前記使用中のブロックの前記選択情報が前記読出位置が当該ブロック内の最終位置となる値であるか否かを判定する判定ステップと、
    前記情報処理装置の電源オフ時に、前記読出位置が最終位置でない場合、前記読出位置の次の位置のデータ格納領域にデータを書き込み、一方、前記読出位置が最終位置の場合、前記複数のブロックがローテーションで使用される使用順序方向において次のブロック中の前記データ格納領域の使用順序における先頭位置のデータ格納領域にデータを書き込むとともに当該次のブロックのブロック状態を不使用から使用中に変更する書込ステップと、
    前記次のブロックの先頭位置のデータ格納領域への書込みを終えた後、前記読出位置が最終位置となったブロックのデータを、少なくとも当該ブロックの先頭位置に書込みを行うまでに消去するとともに消去後の当該ブロックの前記管理領域内のブロック状態を使用中から不使用に変更する消去ステップと、
    を備えたことを特徴とする情報処理装置におけるデータ管理方法。
JP2010275942A 2010-12-10 2010-12-10 情報処理装置及び情報処理装置におけるデータ管理方法 Pending JP2012123733A (ja)

Priority Applications (1)

Application Number Priority Date Filing Date Title
JP2010275942A JP2012123733A (ja) 2010-12-10 2010-12-10 情報処理装置及び情報処理装置におけるデータ管理方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
JP2010275942A JP2012123733A (ja) 2010-12-10 2010-12-10 情報処理装置及び情報処理装置におけるデータ管理方法

Publications (1)

Publication Number Publication Date
JP2012123733A true JP2012123733A (ja) 2012-06-28

Family

ID=46505081

Family Applications (1)

Application Number Title Priority Date Filing Date
JP2010275942A Pending JP2012123733A (ja) 2010-12-10 2010-12-10 情報処理装置及び情報処理装置におけるデータ管理方法

Country Status (1)

Country Link
JP (1) JP2012123733A (ja)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016157186A (ja) * 2015-02-23 2016-09-01 株式会社デンソー データ管理装置およびプログラム

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP2016157186A (ja) * 2015-02-23 2016-09-01 株式会社デンソー データ管理装置およびプログラム

Similar Documents

Publication Publication Date Title
US9645546B2 (en) Storage chip, imaging cartridge, method of changing serial number and method of using storage chip
US7979636B2 (en) Method of controlling semiconductor memory card system
US6601132B2 (en) Nonvolatile memory and method of writing data thereto
KR101986872B1 (ko) 메모리 칩 전력 관리
JP4472010B2 (ja) 記憶装置
JP3906825B2 (ja) 計算機システム、計算機システム起動方法およびプログラム
TWI511032B (zh) 包括細微更新記憶體之可更換印表機構件
US8392797B2 (en) Error correcting controller, flash memory chip system, and error correcting method thereof
JP4987962B2 (ja) 情報処理装置及び不揮発性半導体メモリドライブ
US20160342355A1 (en) Memory erasing method, memory controller, and memory storage apparatus
US20150212957A1 (en) Supply Assembly Of Imaging Device, Chip Thereon, And Method For Updating Slave Address
JP6543122B2 (ja) 情報処理装置と、前記情報処理装置による不揮発記憶装置の初期化方法、及びプログラム
JP2010020586A (ja) データ処理装置
JP2010198252A (ja) 不揮発メモリ装置、不揮発メモリの書込み方法、及び不揮発メモリ書込みプログラム
US20160034211A1 (en) Memory system and information processing device
KR20110029140A (ko) 교체가능한 프린터 구성요소
JP2012123733A (ja) 情報処理装置及び情報処理装置におけるデータ管理方法
JP2020177415A (ja) 情報処理装置及びその制御方法並びにプログラム
JP2004341783A (ja) データ記憶方法、及びデータ記憶装置
JP4710918B2 (ja) メモリコントローラ、メモリコントローラを備えるフラッシュメモリシステム、並びにフラッシュメモリの制御方法
CN114420183A (zh) 数据存储控制方法、电子设备及存储介质
JP2008059007A (ja) 半導体記憶装置
US7133624B2 (en) Image forming apparatus and program update method in the apparatus
JP2010061257A (ja) 半導体メモリ装置
CN104657289A (zh) 保存主存储设备中的数据的信息处理装置及其控制方法