以下、本発明に関する好ましい実施形態について図面を参照しつつ詳細に説明する。尚、以下に説明する実施形態において互いに共通する部材には同一符号を付しており、それらについての重複する説明は省略する。
図1は、本発明におけるデータ記憶制御装置2が実装される情報処理装置1の一構成例を示すブロック図である。情報処理装置1は、例えばスキャナ機能、プリンタ機能、コピー機能、FAX機能などの複数の機能を備えた複合機として構成される。この情報処理装置1は、データ記憶制御装置2と、入出力部3と、スキャナ部4と、プリンタ部5と、DRAM(Dynamic Random Access Memory)などで構成されるメインメモリ6と、ネットワークコントローラ7と、FAX通信部8と、操作パネル9とを備えている。
データ記憶制御装置2は、CPU10と、SRAM(Static Random Access Memory)などで構成される1次メモリ11と、NAND型フラッシュメモリで構成される2次メモリ12と、1次メモリ11にバックアップ用電源を供給する電池13とを備えて構成される。
1次メモリ11は、画像データや画像データ以外のバックアップデータを2次メモリ12へ記録する際に使用される一時的なメモリであり、情報処理装置1の電源がオフにされた状態でも電池13からの給電によってデータを保持する不揮発性メモリとして構成される。この1次メモリは、例えば128KBといった所定容量の記憶領域を有している。
2次メモリ12は、上述したようにNAND型フラッシュメモリで構成される不揮発性メモリであり、1次メモリ11よりも大容量の記憶領域を有している。この2次メモリ12には、CPU10によって実行されるプログラム14が予め記憶されると共に、画像データや画像データ以外のバックアップデータを記憶するためのデータ記憶領域15を備えている。
CPU10は、情報処理装置1に電源が投入されると、2次メモリ12に記憶されているプログラム14を読み出し実行し、情報処理装置1に設けられた各部の動作を制御する。
入出力部3は、CPU10と、スキャナ部4と、プリンタ部5とを相互に接続して画像データの入出力を行うインタフェースである。スキャナ部4は、原稿を読み取って画像データを生成し、その画像データを入出力部3に出力する。またプリンタ部5は、入出力部3を介して入力する画像データに基づいて印刷出力を行うように構成される。CPU10は、入出力部3を介して、スキャナ部4およびプリンタ部5の動作を制御すると共に、スキャナ部4およびプリンタ部5のそれぞれと画像データの入出力を行う。
メインメモリ6は、揮発性メモリであり、CPU10が情報処理装置1の各部の動作を制御する際に画像データやその他のデータを一時的に記憶するためのメモリである。
ネットワークコントローラ7は、LAN(Local Area Network)などのネットワークを介して外部機器とデータ通信を行うためのものである。CPU10は、このネットワークコントローラ7を介して外部機器と画像データの送受信を行う。またFAX通信部8は、公衆電話網などを介してFAXデータの送受信を行うものである。CPU10は、このFAX通信部8を介して画像データをFAXデータとして外部に送信したり、或いは、外部からFAXデータとして送信された画像データを受信したりする。操作パネル9は、ユーザが情報処理装置1を使用する際のユーザインタフェースとなるものである。CPU10は、この操作パネル9に対して各種のメニュー画面などを表示し、ユーザからの操作を受け付ける。
上記のような構成においてCPU10は、スキャナ機能、プリンタ機能、コピー機能およびFAX機能に関するジョブの実行を制御すると共に、バックアップとして保存しておくことが必要な画像データや画像データ以外のデータを、1次メモリ11を使用しながら2次メモリ12へ保存するように構成される。CPU10は、画像データや画像データ以外のデータをバックアップとして保存するための機能として、画像データ取得部21、バックアップデータ取得部22および制御部23を備えている。
画像データ取得部21は、2次メモリ12への保存対象となる画像データを取得する処理部である。例えば、情報処理装置1においてFAX通信部8がFAXデータを受信した場合、そのFAXデータに含まれる画像データは一旦2次メモリ12へ保存される。この場合、2次メモリ12への画像データの保存が完了することにより、FAXデータの受信処理が正常に完了することとなる。そのため、FAX通信部8は、FAXデータに含まれる画像データの全体が2次メモリ12へ完了された後に、FAXデータの送信元に対して受信完了通知を送信する。また、2次メモリ12へ保存された画像データは、プリンタ部5によって印刷出力が行われるか、或いは操作パネル9に表示されてユーザによる確認作業が行われた後、2次メモリ12から削除される。画像データ取得部21は、このような2次メモリ12への保存対象となる画像データを取得する。尚、画像データ取得部21が2次メモリ12への保存対象として取得する画像データは、必ずしもFAXデータに限られない。
バックアップデータ取得部22は、画像データ以外のデータであって、2次メモリ12へ保存しておくべきバックアップデータを取得する処理部である。このようなバックアップデータには、種々のデータがあり、情報処理装置1において定期的に発生するデータもあれば、不定期に発生するデータもある。バックアップデータ取得部22は、そのような定期的又は不定期に発生するバックアップデータを取得する。
制御部23は、1次メモリ11および2次メモリ12に対するデータの書き込み動作や読み出し動作を行うことにより、バックアップとして保存すべきデータの記憶制御を行う処理部である。この制御部23は、画像データ取得部21によって取得される画像データ、および、バックアップデータ取得部22によって取得されるバックアップデータを、1次メモリ11を使用しながら、2次メモリ12へ保存する処理を行う。
図2は、2次メモリ12における記憶領域の概念を示す図である。図2に示すように、2次メモリ12は、全体の記憶領域が均等に分割された複数のブロックを有している。それら複数のブロックのうち、例えば図2に示す斜線領域が上述したプログラム14が記憶されたブロックとなっている。また、2次メモリ12に設けられた複数のブロックのうち、プログラム14が記憶されているブロック以外のブロックがデータ記憶領域15となっている。このデータ記憶領域15に、画像データや画像データ以外のバックアップデータが記憶される。また、各ブロックには複数のページが含まれており、それら各ページにデータが書き込まれる。
また2次メモリ12は、ブロック単位でデータを消去することが可能な構成となっている。言い換えると、ブロック内のデータを部分的には消去することができない構成である。このような2次メモリ12に対してデータを書き込む際には、既にデータが書き込まれているブロックに対しては新たなデータを書き込むことはできない。つまり、そのようなブロックに空きページ(空き領域)がある場合であっても、一旦ブロック内のデータを全て削除した後でなければ、そのブロックに新たなデータを書き込むことができないようになっている。ただし、各ブロックに書き込まれたデータを読み出す際には、ページ単位でのデータ読み出しが可能である。
また2次メモリ12は、ブロックに対するデータの消去処理が行われる都度、そのブロックのデータ保持機能が低下していく特性を有している。そのため、制御部23は、画像データやバックアップデータを2次メモリ12の各ブロックへ記憶する際には、1次メモリ11を使用することにより、各ブロックへのデータの書き込み回数を低減させるようにデータの記憶制御を行う。すなわち、制御部23は、各ブロックの記憶容量とほぼ等しいデータ量となるようにデータを組み合わせて2次メモリ12に記憶することにより、各ブロックを有効活用して書き込み回数の低減を図る。
図3および図4は、制御部23によるデータの記憶制御の一例を示す図である。まず図3に示すように、画像データ取得部21によって画像データDAが取得された場合、制御部23は、その画像データDAを、2次メモリ12における1ブロックの記憶容量の整数倍となるデータ部分DA1と、1ブロックの記憶容量に満たない残余のデータ部分DA2とに分割する。このような分割処理は、例えばメインメモリ6に画像データDAを展開することにより行われる。そして制御部23は、1ブロックの整数倍となるデータ部分DA1を2次メモリ12における一又は複数のブロックに格納すると共に、残余のデータ部分DA2を1次メモリ11に格納する。
その後、バックアップデータ取得部22によってバックアップデータDBが取得されると、図4に示すように、制御部23は、そのバックアップデータDBを1次メモリ11へ一旦格納し、1次メモリ11に記憶されている画像データDAの残余のデータ部分DA2とバックアップデータDBとを組み合わせて2次メモリ12の1ブロック分に相当するデータ量とし、その組み合わせたデータを2次メモリ12の1つのブロックへ格納する。
また画像データ取得部21によって画像データDAが取得されたとき、既に1次メモリ11にバックアップデータDBが格納されていることもある。その場合、制御部23は、残余のデータ部分DA2を1次メモリ11に格納すると共に、1次メモリ11に既に記憶されているバックアップデータDBと、残余のデータ部分DA2とを組み合わせて2次メモリ12の1ブロック分に相当するデータ量とし、その組み合わせたデータを2次メモリ12の1つのブロックへ格納する。
上記のように制御部23は、比較的データ量の多い画像データを2次メモリ12へ記憶する際、2次メモリ12の1ブロック分のデータ量に満たない残余のデータ部分DA2を一旦1次メモリ11へ格納し、バックアップデータDBと組み合わせて残余のデータ部分DA2を2次メモリ12の1つのブロックへ格納する。したがって、画像データDAの残余のデータ部分DA2やバックアップデータDBを単独で2次メモリ12の1つのブロックに格納する場合と比較すると、各ブロックの記憶領域を有効に活用することができると共に、2次メモリ12に対するデータの書き込み回数を低減することができるようになる。
図5は、バックアップデータ取得部22によって取得されるバックアップデータDBの種類を示す図である。上述したようにバックアップデータDBには、種々のデータがあり、図5にはその一例を示している。例えば図5に示すように、バックアップデータDBには、画像安定化データ31と、ジョブ履歴データ32と、カウンターデータ33と、サービスデータ34と、時刻補正データ35とが含まれる。
画像安定化データ31は、プリンタ部5において印刷出力される画像を安定化させるために行われる画像安定化処理によって生成されるデータである。すなわち、CPU10はプリンタ部5において印刷ジョブが実行されていないとき、所定時間間隔で定期的にプリンタ部5を実際に駆動することにより画像安定化処理を実行する。この画像安定化処理では、プリンタ部5において形成される画像の階調、色調、傾きなどが検知され、それらを基準値に補正するための補正データが生成される。したがって、画像安定化データ31には、このような補正データとして、階調補正データ31a、色ずれ補正データ31bおよびスキュー補正データ31cが含まれる。
このような画像安定化データ31は、2次メモリ12にバックアップデータDBとして保存され、プリンタ部5において印刷ジョブが実行されるときに画像を補正するためのデータとして参照される。そして画像安定化データ31は、CPU10によって画像安定化処理が行われる都度、2次メモリ12から読み出され、新たなデータに更新される。画像安定化データ31が更新されるタイミングは、予め設定される画像安定化処理の実行間隔に基づいて予測することが可能である。
ジョブ履歴データ32は、スキャナ機能、プリンタ機能、コピー機能、FAX機能などに対応するジョブが実行された場合に、そのジョブの実行履歴が記録されるデータである。このようなジョブ履歴データ32は、2次メモリ12にバックアップデータDBとして保存され、ジョブの実行される度に更新される。すなわち、CPU10は、スキャナ部4、プリンタ部5およびFAX通信部8のいずれかにおいてジョブの実行が行われると、そのジョブの実行データを生成し、ジョブ履歴データ32に記録する。このとき、CPU10は、2次メモリ12にバックアップデータDBとして保存されているジョブ履歴データ32を読み出し、新たなデータをジョブ履歴データ32に追加記録して更新する。
ジョブ履歴データ32が更新されるタイミングは、ジョブが実行されるタイミングに依存する。そのため、通常のジョブが実行される場合にはジョブ履歴データ32が更新されるタイミングを予測することは困難であるが、例えばジョブの実行予定時刻が予め設定された予約ジョブが登録されている場合には、その予約ジョブの実行予定時刻を参照することによりジョブ履歴データ32が更新されるタイミングを予測することが可能である。
カウンターデータ33は、プリンタ部5によって印刷出力が行われた累積印刷枚数のカウント値を示すデータである。このようなジョブ履歴データ32は、2次メモリ12にバックアップデータDBとして保存され、プリンタ部5によって印刷ジョブが実行される度に更新される。すなわち、CPU10は、プリンタ部5において印刷ジョブが実行されると、その印刷枚数をカウントし、カウンターデータ33に記録されているカウント値を更新する。このとき、CPU10は、2次メモリ12にバックアップデータDBとして保存されているカウンターデータ33を読み出して更新する。
カウンターデータ33が更新されるタイミングは、印刷ジョブが実行されるタイミングに依存する。そのため、通常の印刷ジョブが実行される場合にはカウンターデータ33が更新されるタイミングを予測することは困難であるが、例えば上述した予約ジョブとして予約プリントが登録されている場合には、その予約プリントの実行予定時刻を参照することによりカウンターデータ33が更新されるタイミングを予測することが可能である。
サービスデータ34は、情報処理装置1が定期的にサービス拠点に対して送信するためのデータが蓄積されたデータである。このサービスデータ34は、例えばサービス拠点において情報処理装置1の使用状況に応じた課金処理などを行うために送信される。このようなサービスデータ34は、例えばサービス拠点に送信されるタイミングで作成され、2次メモリ12にバックアップデータDBとして保存される。すなわち、CPU10は、サービス拠点への送信のために予め設定された実行予定時刻になると、カウンターデータ33などを読み出してサービスデータ34を生成し、そのサービスデータ34をサービス拠点に送信すると共に、そのサービスデータ34をバックアップデータDBとして保存する。このようなカウンターデータ33が更新されるタイミングは、予め設定された実行予定時刻に基づいて予測することが可能である。
時刻補正データ35は、情報処理装置1の内部時計を補正したことを示すデータである。例えばCPU10は、ネットワークコントローラ7を介して外部のサーバからその時計データを取得し、内部時計の時刻を補正するように構成されている。時刻補正データ35は、その履歴を蓄積したデータであり、2次メモリ12にバックアップデータDBとして保存される。すなわち、CPU10は、時刻補正のために予め設定された実行予定時刻になると、外部のサーバにアクセスして内部時計を補正すると共に、その履歴を時刻補正データ35に記録して更新する。このような時刻補正データ35が更新されるタイミングは、予め設定された実行予定時刻に基づいて予測することが可能である。
バックアップデータ取得部22は、上述したような画像安定化データ31、ジョブ履歴データ32、カウンターデータ33、サービスデータ34および時刻補正データ35のそれぞれをバックアップデータDBとして取得する。制御部23は、それらのデータがバックアップデータ取得部22によって取得される度に、それらのデータを1次メモリ11に一旦保存する。
そして制御部23は、画像データ取得部21によって画像データDAが取得されたタイミングで、既に1次メモリ11にバックアップデータDBが保存されている状態であれば、上述したように画像データDAのうちの残余のデータ部分DA2をバックアップデータDBと組み合わせて2次メモリ12の1つのブロックに保存する。このとき、1次メモリ11に記憶されているバックアップデータDBとして上述した複数のデータが記憶されていれば、制御部23は、それら複数のデータの中から、画像データDAの残余のデータ部分DA2と組み合わせたときに2次メモリ12の1つのブロック以下のサイズであって、1つのブロックとほぼ同じサイズとなるデータを選択して組み合わる。
また、制御部23は、画像データ取得部21によって画像データDAが取得されたタイミングで、1次メモリ11にバックアップデータDBが保存されていない状態であれば、上述したデータのいずれかがバックアップデータDBとして所定時間内に取得される予定があるか否かを判断する。この判断は、上述したように実行予定時刻が既知であるデータについて行われる。
図6は、バックアップデータDBの取得予定があるか否かを判断するために制御部23によって管理される実行予定管理テーブルの一例を示す図である。図6に示すように、この実行予定管理テーブルには、実行予定のある処理と、その実行予定時刻と、それに伴って生成されるバックアップデータDBの種類とが登録されている。
例えば、画像安定化処理は、上述したようにCPU10によって所定時間間隔で定期的に行われる処理である。それ故、制御部23は、画像安定化処理が次回実行される実行予定時刻を把握することが可能であり、図6に示すように、実行予定管理テーブルに対して次回の画像安定化処理が実行される実行予定時刻を登録して管理する。
また印刷ジョブの実行予定時刻が予め設定された予約プリントが登録されている場合、制御部23は、その予約プリントが実行される実行予定時刻を把握することが可能である。そのため、制御部23は、図6に示すように、予約プリントが実行される実行予定時刻を実行予定管理テーブルに登録して管理する。尚、予約プリント以外の予約ジョブについてもこれと同様である。
またサービスデータの送信は、CPU10によって定期的に行われる。それ故、制御部23は、サービスデータの送信が次回実行される実行予定時刻を把握することが可能であり、図6に示すように、実行予定管理テーブルに対して次回のサービスデータ送信が実行される実行予定時刻を登録して管理する。
また時刻補正は、例えば1日1回予め設定された時刻になるとCPU10によって実行される。そのため、制御部23は、時刻補正が行われる実行予定時刻を把握することが可能であり、図6に示すように、実行予定管理テーブルに対して次回の時刻補正が行われる実行予定時刻を登録して管理する。
制御部23は、図6のような実行予定管理テーブルを逐次更新しながら管理しており、画像データ取得部21によって画像データDAが取得されたタイミングで、1次メモリ11にバックアップデータDBが保存されていなければ、この実行予定管理テーブルを参照することにより、現在時刻から所定時間内にバックアップデータDBが取得される予定があるか否かを判断するように構成される。尚、所定時間としては、数分程度(例えば5分程度)の時間として設定されることが好ましい。
その結果、所定時間内にバックアップデータDBの取得予定がある場合、制御部23は、画像データDAの残余のデータ部分DA2を1次メモリ11に保存し、バックアップデータDBが取得されるまでその状態を継続する。そしてバックアップデータDBが取得されると、そのバックアップデータDBと画像データDAの残余のデータ部分DA2とを組み合わせて2次メモリ12の1つのブロックに保存する。
これに対し、所定時間内にバックアップデータDBの取得予定がない場合、制御部23は、画像データDAの残余のデータ部分DA2をバックアップデータDBと組み合わせることなく、そのまま2次メモリ12の1つのブロックに保存する。
したがって、FAXデータの受信に伴ってそのFAXデータに含まれる画像データが2次メモリ12に保存される場合、FAX通信部8は、FAXデータを受信してから所定時間内に、FAXデータの送信元に対して受信完了通知を送信することができるようになる。
ただし、所定時間内にバックアップデータDBの取得予定がない場合において、画像データDAの残余のデータ部分DA2をバックアップデータDBと組み合わせることなく、そのまま2次メモリ12の1つのブロックに保存してしまうと、そのブロックの記憶領域を有効活用することはできず、空き領域が生じることになる。これを防止するため、制御部23は、例えばCPU10に画像安定化処理を前倒しで実行させるようにしても良い。すなわち、制御部23は、所定時間内(例えば5分以内)にバックアップデータDBの取得予定がないと判断した場合、画像安定化処理の次回の実行予定時刻を確認し、次回の画像安定化処理が所定時間以内(例えば10分以内)に行われる予定であれば、その画像安定化処理を前倒しで先に実行させる。そしてその結果取得される画像安定化データ31を残余のデータ部分DA2と組み合わせて2次メモリ12の1つのブロックに保存するようにしても良い。このような処理を行うことにより、受信完了通知を送信するタイミングを遅らせることなく、2次メモリ12のブロックに空き領域が生じることを防止することができるようになる。
また、画像データ取得部21によって取得される画像データDAがFAXデータの受信によるものでない場合、画像データDAの2次メモリ12への保存を所定時間内に完了させる必要はない。そのため、この場合は、残余のデータ部分DA2とバックアップデータDBとを組み合わせて1ブロック分のデータ量となるまで、残余のデータ部分DA2を1次メモリ11に保存させた状態を継続させても良い。
また制御部23は、2次メモリ12に保存した画像データDAを削除する場合、残余のデータ部分DA2と組み合わせたバックアップデータDBを読み出し、そのバックアップデータDBを1次メモリ11へ保存し、その後、画像データDAが保存されている全てのブロックのデータを一括消去する。1次メモリ11へ退避させたバックアップデータDBは、その後に、バックアップとして保存する必要のある画像データDAが取得された場合、その画像データDAの残余のデータ部分DA2と組み合わされて再び2次メモリ12へ保存されるようになる。
図7乃至図10は、上述したデータ記憶制御を行うための処理手順の一例を示すフローチャートである。この処理は、CPU10がプログラム14を実行することにより行われる処理であり、CPU10において画像データ取得部21、バックアップデータ取得部22および制御部23が機能することにより行われる。尚、図に示す処理手順では、2次メモリ12にバックアップとして保存された画像データDAは、情報処理装置1において印刷出力が行われることに伴い、2次メモリ12から削除される場合を例示するが、必ずしもこれに限られるものではない。
図7に示すように、CPU10は、この処理を開始すると、まず2次メモリ12へ保存するためのバックアップデータDBが取得されたか否かを判断し(ステップS1)、バックアップデータDBが取得されていれば、バックアップデータ記憶処理を実行する(ステップS2)。尚、バックアップデータDBが取得されていなければ、ステップS2の処理はスキップする。
次にCPU10は、2次メモリ12へ保存するための画像データDAが取得されたか否かを判断し(ステップS3)、画像データDAが取得されていれば、画像データ記憶処理を実行する(ステップS4)。尚、画像データDAが取得されていなければ、ステップS4の処理はスキップする。
次にCPU10は、2次メモリ12に画像データDAが記憶されているか否かを判断し(ステップS5)、画像データDAが記憶されていれば、印刷出力を行うか否かを判断する(ステップS6)。例えば、ユーザが操作パネル9に対して印刷指示を行った場合、CPU10は印刷出力を行うと判断する。CPU10は、印刷出力を行う場合(ステップS6でYES)、2次メモリ12から画像データDAを読み出して印刷出力処理を実行する(ステップS7)。印刷出力処理が完了すると、CPU10は、2次メモリ12の画像データDAを削除するか否かを判断する(ステップS8)。例えば、ユーザが印刷指示を行う際に画像データDAの削除を指定している場合、CPU10は画像データDAを削除すると判断する。そしてCPU10は、画像データ削除処理を実行する(ステップS8)。尚、2次メモリ12に画像データDAが記憶されていない場合(ステップS5でNO)には、ステップS6〜S9の処理はスキップする。
図8は、バックアップデータ記憶処理(ステップS2)の詳細な処理手順の一例を示す図である。CPU10は、この処理を開始すると、バックアップデータDBをまず1次メモリ11へ保存する(ステップS10)。そしてCPU10は、1次メモリ11に画像データDAの残余のデータ部分DA2が格納されているか否かを判断する(ステップS11)。その結果、1次メモリ11に残余のデータ部分DA2が保存されていなければ(ステップS11でNO)、バックアップデータ記憶処理が終了する。
これに対し、1次メモリ11に残余のデータ部分DA2が保存されている場合(ステップS11でYES)、CPU10は、1次メモリ11に保存したバックアップデータDBの中から、画像データDAの残余のデータ部分DA2と組み合わせたとき、2次メモリ12の1ブロック分以下となるデータを抽出する(ステップS12)。このとき、CPU10は、残余のデータ部分DA2と組み合わせることにより、2次メモリ12の1ブロック分以下であって、最大のデータ量となるデータを抽出する。それ故、CPU10は、1次メモリ11に保存されているバックアップデータDBの中から複数のデータを抽出することもある。
そしてCPU10は、バックアップデータDBから抽出したデータと、画像データDAの残余のデータ部分DA2とを組み合わせ(ステップS13)、その組み合わせたデータを2次メモリ12の1つのブロックに保存する(ステップS14)。これにより、画像データDAの全部が2次メモリ12にバックアップとして保存されるようになる。その後、CPU10は、2次メモリ12へ保存したデータを1次メモリ11から削除する(ステップS15)。
次にCPU10は、2次メモリ12への保存が完了した画像データDAがFAXデータ受信に伴って取得された画像データであるか否かを判断する(ステップS16)。そしてFAXデータに含まれていた画像データである場合(ステップS16でYES)、CPU10は、FAX通信部8に画像データDAの保存完了を通知し、FAX通信部8に受信完了通知の送信を行わせる(ステップS17)。尚、画像データがFAXデータに含まれていたものでない場合(ステップS16でNO)、ステップS17の処理は行われることなく、バックアップデータ記憶処理が終了する。
このようなバックアップデータ記憶処理(ステップS2)がCPU10によって実行されることにより、バックアップデータDBが取得されたタイミングで、1次メモリ11に既に画像データDAの残余のデータ部分DA2が記憶されていれば、その取得されたバックアップデータDBと、残余のデータ部分DA2とを組み合わせた状態で、2次メモリ12へ保存することができるようになる。
次に図9は、画像データ記憶処理(ステップS4)の詳細な処理手順の一例を示すフローチャートである。CPU10は、この処理を開始すると、取得された画像データDAを2次メモリ12の1ブロック分のサイズ毎に分割する(ステップS20)。そしてCPU10は、1ブロック分と同じサイズに分割されたデータ部分DA1を2次メモリ12の各ブロックへ保存する(ステップS21)。またCPU10は、1ブロック分に満たない残余のデータ部分DA2を1次メモリ11へ保存する(ステップS22)。
そしてCPU10は、1次メモリ11にバックアップデータDBが格納されているか否かを判断する(ステップS23)。その結果、1次メモリ11にバックアップデータDBが保存されている場合(ステップS23でYES)、CPU10は、1次メモリ11に保存されているバックアップデータDBの中から、画像データDAの残余のデータ部分DA2と組み合わせたとき、2次メモリ12の1ブロック分以下となるデータを抽出する(ステップS24)。このとき、CPU10は、残余のデータ部分DA2と組み合わせることにより、2次メモリ12の1ブロック分以下であって、最大のデータ量となるデータを抽出する。
そしてCPU10は、バックアップデータDBから抽出したデータと、画像データDAの残余のデータ部分DA2とを組み合わせ(ステップS25)、その組み合わせたデータを2次メモリ12の1つのブロックに保存する(ステップS26)。これにより、取得された画像データDAの全部が2次メモリ12にバックアップとして保存される。その後、CPU10は、2次メモリ12へ保存したデータを1次メモリ11から削除する(ステップS27)。
次にCPU10は、2次メモリ12への保存が完了した画像データDAがFAXデータ受信に伴って取得された画像データであるか否かを判断する(ステップS28)。FAXデータに含まれていた画像データである場合(ステップS28でYES)、CPU10は、FAX通信部8に画像データDAの保存完了を通知し、FAX通信部8に受信完了通知の送信を行わせる(ステップS29)。尚、画像データがFAXデータに含まれていたものでない場合(ステップS28でNO)、ステップS29の処理は行われることなく、画像データ記憶処理が終了する。
一方、画像データDAが取得されたタイミングで、1次メモリ11にバックアップデータDBが格納されていない場合(ステップS23でNO)、CPU10は、図6に例示した実行予定管理テーブルを参照し、所定時間以内(例えば5分以内)にバックアップデータDBの取得予定があるか否かを判断する(ステップS30)。その結果、所定時間以内にバックアップデータDBの取得予定がある場合(ステップS30でYES)、CPU10は、画像データDAの残余のデータ部分DA2を1次メモリ11に保存した状態のまま画像データ記憶処理を終了する。この残余のデータ部分DA2は、その後にバックアップデータDBが取得されたとき、上述したバックアップデータ記憶処理(ステップS2)によってバックアップデータDBと共に、2次メモリ12へ保存されるようになる。
また所定時間以内にバックアップデータDBの取得予定がない場合(ステップS30でNO)、CPU10は、1次メモリ11へ保存した画像データDAの残余のデータ部分DA2を2次メモリ12に保存する(ステップS31)。このとき、画像データDAの残余のデータ部分DA2だけをそのまま2次メモリ12の1つのブロックに保存するようにしても良い。ただし、その場合は、残余のデータ部分だけが保存されるブロックに比較的大きな空き領域が生じてしまう可能性がある。そのため、ステップS31の処理において、CPU10は、画像安定化処理を前倒しで実行することによってバックアップデータDBを予定よりも早期に取得し、その早期に取得したバックアップデータDBと残余のデータ部分DA2とを組み合わせて2次メモリ12の1つのブロックに保存することがより好ましい。
そしてステップS31の処理によって画像データDAの残余のデータ部分DA2が2次メモリ12に保存されると、ステップS28に進む。そしてCPU10は、上述したように、2次メモリ12への保存が完了した画像データDAがFAXデータ受信に伴って取得された画像データであるか否かを判断し(ステップS28)、FAXデータに含まれていた画像データである場合にはFAX通信部8に受信完了通知の送信を行わせる(ステップS29)。
このような画像データ記憶処理(ステップS4)がCPU10によって実行されることにより、画像データDAが取得されたタイミングで、1次メモリ11に既にバックアップデータDBが記憶されていれば、その取得されたバックアップデータDBと、画像データDAの残余のデータ部分DA2とを組み合わせた状態で、2次メモリ12へ保存することができるようになる。また、バックアップデータDBが1次メモリ11に記憶されていない場合には、所定時間以内にバックアップデータDBの取得予定があるか否かが判断され、バックアップデータDBの取得予定があれば、残余のデータ部分DA2を1次メモリ11に保存した状態でバックアップデータDBが取得されるまで待機する状態となる。これに対し、所定時間以内にバックアップデータDBの取得予定がない場合には、残余のデータ部分DA2が速やかに2次メモリ12へ保存されるようになり、画像データDAの全部を比較的早期に2次メモリ12へ保存することができる。
次に図10は、画像データ削除処理(ステップS9)の詳細な処理手順の一例を示すフローチャートである。CPU10は、この処理を開始すると、2次メモリ12において削除対象となる画像データDAが記憶されているブロックを全て特定する(ステップS40)。そしてCPU10は、特定したブロックのうちの1つのブロックを選択し(ステップS41)、その選択したブロックにバックアップデータDBとの組み合わせたデータが記憶されているか否かを判断する(ステップS42)。その結果、バックアップデータDBと組み合わせたデータが記憶されていれば(ステップS42でYES)、そのバックアップデータDBを読み出して1次メモリ11へ保存する(ステップS43)。そしてCPU10は、選択したブロックに記憶されているデータを一括削除する(ステップS44)。尚、選択したブロックにバックアップデータDBが保存されていない場合には、ステップS43の処理は行われず、そのブロックに記憶されているデータが一括削除されるようになる(ステップS44)。
そしてCPU10は、ステップS40で特定した全てのブロックに対する削除処理が完了したか否かを判断し(ステップS45)、未だ削除処理が行われていないブロックが存在すれば、ステップS41に戻り、上述した処理を繰り返す。そして全てのブロックに対する削除処理が完了することにより、画像データ削除処理(ステップS9)が終了する。
このような画像データ削除処理(ステップS9)がCPU10によって実行されることにより、バックアップとして保存しておく必要のなくなった画像データDAは速やかに2次メモリ12から削除される。このとき、画像データDAの残余のデータ部分DA2と組み合わせられているバックアップデータDBを1次メモリ11へ退避させるようにしているので、バックアップデータDBが画像データDAの削除と共に失われてしまうことを防止している。1次メモリ11へ退避させたバックアップデータDBは、その後に別の画像データDAが取得されると、その画像データDAの残余のデータ部分DA2と共に、再び2次メモリ12へ保存されるようになる。
以上のように本実施形態の情報処理装置1は、所定容量の記憶領域を有する1次メモリ11と、その1次メモリ11よりも大容量の記憶領域を有する2次メモリ12とを備えるデータ記憶制御装置2を有している。2次メモリ12は、その記憶領域が複数のブロックに分割されており、ブロック単位でのデータ消去が行われ、データの消去されたブロックに対してデータの書き込みが可能となる不揮発性の記憶手段である。
そしてデータ記憶制御装置2は、上述したように、2次メモリ12に格納する画像データDAを取得する画像データ取得部21と、画像データDAとは異なるバックアップデータDBを取得するバックアップデータ取得部22と、画像データ取得部21によって取得される画像データDAのうち、2次メモリ12における1ブロックの整数倍となるデータ部分DA1を2次メモリ12に記憶すると共に、残余のデータ部分DA2を1次メモリ11に記憶し、バックアップデータ取得部22によって取得されるバックアップデータDBを1次メモリ11における残余のデータ部分DA2と組み合わせて2次メモリ12の1つのブロックに記憶する制御部23とを備える構成である。
このような構成によれば、画像データDAを2次メモリ12へ記憶する際に発生する空き領域を低減することができるようになる。その結果、2次メモリ12の各ブロックに対するデータの書き込み回数を低減することができるようになり、書き換え回数に上限値のある2次メモリ12を従来よりも長期間に亘って使用することができるようになる。
また本実施形態における制御部23は、バックアップデータ取得部22が次のバックアップデータDBを取得するタイミングを検知するように構成される。そして制御部23は、画像データ取得部21が画像データDAを取得したときにバックアップデータ取得部22が次のバックアップデータDBを所定時間以内に取得する予定がある場合、画像データ取得部21が取得した画像データDAの残余のデータ部分DA2を1次メモリ11に記憶する。したがって、画像データDAが取得された時点で次のバックアップデータDBが所定時間以内に取得される予定がある場合、その画像データDAの残余のデータ部分DA2は、所定時間以内にバックアップデータDBと共に2次メモリ12の1つのブロックに保存することができる。
また、画像データ取得部21が画像データDAを取得したときにバックアップデータ取得部22が次のバックアップデータDBを所定時間以内に取得する予定がない場合には、制御部23は、画像データ取得部21が取得した画像データDAの残余のデータ部分DA2をバックアップデータDBと組み合わせることなく、2次メモリ12へ記憶するようにしても良い。この場合、画像データ取得部21によって取得された画像データDAの全部を、速やかに2次メモリ12へ記憶することができるようになる。
また、画像データ取得部21が画像データDAを取得したときにバックアップデータ取得部22が次のバックアップデータDBを所定時間以内に取得する予定がない場合、制御部23は、予め設定される時間間隔で定期的に行われる画像安定化処理を強制的に前倒しで実行させてバックアップデータ取得部22にバックアップデータDBを取得させるようにしても良い。この場合、画像データ取得部21によって取得された画像データDAの全部を、速やかに2次メモリ12へ記憶することができると共に、2次メモリ12に空き領域が生じることを低減することができるようになる。
また本実施形態の制御部23は、画像データDAの残余のデータ部分DA2と、バックアップデータDBとを組み合わせる際、2次メモリ12の1つのブロックの容量を超えないように制御する。すなわち、画像データDAの残余のデータ部分DA2とバックアップデータDBとを組み合わせる際、バックアップデータDBに含まれる複数種類のデータ中から2次メモリ12の1つのブロックの容量を超えず、且つ最大のデータ量となるデータを選択して組み合わせる処理が行われる。このような構成によれば、2次メモリ12における各ブロックの記憶領域を最も有効活用することができるようになり、2次メモリ12の各ブロックに対するデータの書き込み回数をより一層効果的に低減することができるようになる。
また本実施形態の制御部23は、2次メモリ12に記憶した画像データDAを消去する際、その画像データDAの残余のデータ部分DA2と組み合わせたバックアップデータDBを読み出して1次メモリ11へ記憶させた後に、その画像データDAが記憶されている全てのブロックを消去する。そのため、データ記憶制御装置2において継続的に保持しておく必要のあるバックアップデータDBが画像データDAの削除と共に失われてしまうことを防止することができるようになっている。
(変形例)
以上、本発明に関する一実施形態について説明したが、本発明は上述した内容のものに限られるものではなく、種々の変形例が適用可能であることは言うまでもない。
例えば、上記実施形態においては、データ記憶制御装置2が、複合機などの情報処理装置1に実装される場合を例示したが、これに限られるものではない。すなわち、上述したデータ記憶制御装置2は、例えばハードディスク装置などの大規模な記憶装置を備えていない任意の装置に対し、比較的安価にバックアップ機能を提供することができるものである。そのため、上述したデータ記憶制御装置2の構成は、複合機以外の他の装置に対しても適用可能であり、例えばコンピュータなどに搭載されるものであっても構わない。
また、上記実施形態においては、1次メモリ11は不揮発性の記憶手段によって構成される場合を例示した。しかし、これに限定されるものではなく、1次メモリ11は、揮発性の記憶手段によって構成されても構わない。例えば、図1に示したメインメモリ6を1次メモリ11として使用するようにしても良い。ただし、その場合には、データ記憶制御装置2に供給される電源が停電してしまうと、メインメモリ6に記憶されているバックアップデータDBや画像データDAの残余のデータ部分DA2が消失してしまうという問題がある。そのため、上記実施形態において説明したように、1次メモリ11は、不揮発性の記憶手段によって構成されることが好ましい。