(57)【要約】【課題】本発明は、ジョブを連続して長時間実行している場合においても、ジョブの生産性を極力落とさずに情報処理装置内の半導体記憶装置の最適化処理を実施することができる情報処理装置を提供する。【解決手段】画像形成装置１００では、取得したジョブ状況から、ジョブ存在中に半導体記憶装置の最適化処理を実行するか否かを判断し、最適化を実行すると判断した場合に半導体記憶装置の最適化処理を実行する。【選択図】図３
2015141681.tif 000002
【特許請求の範囲】
【請求項１】
記憶装置を備える情報処理装置において、
前記情報処理装置のジョブ状況を取得する取得手段と、
前記取得手段により取得した前記情報処理装置のジョブ状況が所定のジョブ状況にあるか否かを判断する判断手段と、
前記判断手段により前記情報処理装置が所定のジョブ状況にあると判断した場合に前記記憶装置の最適化処理を実行する実行手段とを備えることを特徴とする情報処理装置。
【請求項２】
前記判断手段は、前記情報処理装置のジョブ状況が、減速プリント中、キャリブレーション中、印刷用紙補給待ち、トナー補給待ち、ジャム解除待ち、給紙カセット段切り替え中、及びデータ送信中のいずれかであると判断し、且つ前記実行手段による最適化処理が実行中でないと判断したときは、前記実行手段に前記記憶装置の最適化処理の実行指示を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項３】
前記判断手段は、前記情報処理装置のジョブ状況がジョブ終了中であり、かつ次のジョブが存在しないと判断し、且つ前記実行手段による最適化処理が実行中でないと判断したときは、前記実行手段に前記記憶装置の最適化処理の実行指示を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項４】
前記判断手段は、前記情報処理装置のジョブ状況が、減速プリント中、キャリブレーション中、印刷用紙補給待ち、トナー補給待ち、ジャム解除待ち、給紙カセット段切り替え中、データ送信中、ジョブ終了中かつ次のジョブが存在しないといういずれのジョブ状況にないと判断し、且つ前記実行手段による最適化処理が実行中であると判断したときは、前記実行手段に前記記憶装置の最適化処理の中断指示を行うことを特徴とする請求項１に記載の情報処理装置。
【請求項５】
前記実行手段は、前記記憶装置の最適化処理の実行中に、前記判断手段から前記最適化処理の中断指示を受けた場合には、当該実行中の最適化処理を中断することを特徴とする請求項４に記載の情報処理装置。
【請求項６】
前記記憶装置は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）を含む不揮発性半導体記憶装置であることを特徴とする請求項１乃至５のいずれか１項に記載の情報処理装置。
【請求項７】
記憶装置を備える情報処理装置の制御方法において、
前記情報処理装置のジョブ状況を取得する取得工程と、
前記取得工程にて取得した前記情報処理装置のジョブ状況が所定のジョブ状況にあるか否かを判断する判断工程と、
前記判断工程にて前記情報処理装置が所定のジョブ状況にあると判断した場合に前記記憶装置の最適化処理を実行する実行工程とを備えることを特徴とする制御方法。
【請求項８】
請求項７に記載の制御方法を情報処理装置に実行させるためのコンピュータに読み取り可能なプログラム。
【発明の詳細な説明】
【技術分野】
【０００１】
本発明は、情報処理装置及びその制御方法、並びにプログラムに関し、特に、情報処理装置が備える不揮発性の半導体記憶装置のディスク最適化の制御技術に関する。
【背景技術】
【０００２】
近年、ＨＤＤ（ハードディスクドライブ）に代えて、ＳＳＤ（ソリッドステートドライブ）と呼ばれる、フラッシュメモリを用いた不揮発性の半導体記憶装置を備える情報処理装置が増えている。ＳＳＤでは、内蔵するフラッシュメモリの寿命を延ばすために、ウェアレベリングと呼ばれる分散書き込みが行われている。ウェアレベリングでは、書き込み回数の少ないブロックをなるべく使用するように、ブロックを置き換えて書き込みが行われていく。そのため、情報処理装置にてウェアレベリング処理を実行中には、ブロック置き換え時にブロック消去やデータコピーなどが発生し、ＳＳＤのパフォーマンス（読み書き性能）が低下する場合がある。
【０００３】
ＳＳＤ等の不揮発性半導体記憶装置では、パフォーマンスの低下を改善する方法としてトリムと呼ばれる処理を行うのが一般的である。トリムとは、記憶装置に対して、ＯＳ（オペレーティングシステム）のファイルシステムにとって不要になった記憶領域を通知するコマンドである。記憶装置にトリムコマンドで通知することにより、不必要な領域までウェアレベリング処理をする必要がなくなり、パフォーマンス低下を抑制することができる。
【０００４】
一方、ＨＤＤ等の磁気ディスク記憶装置では、パフォーマンスの低下を抑制する方法として、断片化したファイルを再構成するデフラグと呼ばれる最適化処理を行うのが一般的である。例えば、特許文献１では、スタンバイ時に最適化処理を実行する装置が記載されている。
【０００５】
ＳＳＤ等の不揮発性半導体記憶装置でトリムを実行する場合も上記デフラグと同様に、アイドル時やスタンバイ時に実行したり、ユーザの指示に応じて実行したり、指定された時刻に実行したりするのが一般的である。いずれにしても、不揮発性半導体記憶装置を備えた情報処理装置では、該記憶装置の最適化処理を実行しないで連続して使用し続けた場合、該記憶装置のパフォーマンスが低下する。そのため、その情報処理装置で実行されるジョブが、不揮発性半導体記憶装置の読み書き性能低下に起因して遅くなることがある。
【先行技術文献】
【特許文献】
【０００６】
【特許文献１】特開２００５−９２４８４号公報
【発明の概要】
【発明が解決しようとする課題】
【０００７】
しかしながら、特許文献１では、スタンバイ状態（記録処理というジョブを実行していないとき）か否かを判断し、スタンバイ時のみデフラグと呼ばれる最適化処理を実行する。そのため、ジョブを連続して実行中で長時間スタンバイ状態にならない場合には、その間に記憶装置の最適化処理を行えずに記憶装置への読み書きが遅くなり、情報処理装置の処理能力が低下するおそれがある。ＳＳＤ等の不揮発性半導体記憶装置でトリムを実行して最適化する場合も同様であり、ジョブを連続で実行し続ける場合に最適化処理が行えない。
【０００８】
本発明は、上記問題に鑑みて成されたものであり、記憶装置を備える情報処理装置でジョブが実行中であっても情報処理装置の生産性を落とすことなく記憶装置の最適化処理を実行することができる技術を提供することにある。
【課題を解決するための手段】
【０００９】
上記目的を達成するために、本発明の情報処理装置は、記憶装置を備える情報処理装置において、前記情報処理装置のジョブ状況を取得する取得手段と、前記取得手段により取得した前記情報処理装置のジョブ状況が所定のジョブ状況にあるか否かを判断する判断手段と、前記判断手段により前記情報処理装置が所定のジョブ状況にあると判断した場合に前記記憶装置の最適化処理を実行する実行手段とを備えることを特徴とする。
【発明の効果】
【００１０】
本発明によれば、記憶装置を備える情報処理装置でジョブが実行中であっても情報処理装置の生産性を落とすことなく記憶装置の最適化処理を実行することができる。
【図面の簡単な説明】
【００１１】
【図１】本発明の実施形態に係る画像形成装置の概略構成を示すブロック図である。
【図２】図１の画像形成装置のソフトウェア構成を示すブロック図である。
【図３】ストレージ管理部の最適化判断／指示タスクにより実行される記憶装置の最適化判断処理の流れを示すフローチャートである。
【図４】（ａ）ジョブ状況テーブルの一例を示す図、（ｂ）最適化実行許可パターンテーブルの一例を示す図、（ｃ）最適化実行状況テーブルの一例を示す図である。
【図５】ストレージ管理部の最適化実行管理タスクにより実行される記憶装置の最適化実行処理の流れを示すフローチャートである。
【発明を実施するための形態】
【００１２】
以下、本発明の実施の形態を図面を参照して詳細に説明する。
【００１３】
図１は、本発明の実施形態に係る画像形成装置の概略構成を示すブロック図である。
【００１４】
図１において、画像形成装置１００は、ＲＯＭ１０２あるいはＳｔｏｒａｇｅ１＿１１０に記憶されたプログラムを実行するＣＰＵ１０１を備える。ＣＰＵ１０１は、以下に説明するシステムバス１１５に接続される各部を総括的に制御する。
【００１５】
Ｓｔｏｒａｇｅ１＿１１０は、ＳＳＤ（Ｓｏｌｉｄ  Ｓｔａｔｅ  Ｄｒｉｖｅ）等の不揮発性半導体記憶装置であり、プログラムを記憶するほか、画像データの一時記憶場所としても使われる。
【００１６】
ディスクコントローラ（ＤＩＳＫＣ）１０９は、Ｓｔｏｒａｇｅ１＿１１０からの画像データやプログラムの読み出しや書き込みを制御する。なお、ＤＩＳＫＣ１０９は、オプションとして複数の記憶装置の接続および制御が可能であり、図示例ではＳｔｏｒａｇｅ１＿１１０とＳｔｏｒａｇｅ２＿１１１が接続されている。この場合、Ｓｔｏｒａｇｅ１＿１１０およびＳｔｏｒａｇｅ２＿１１１は、ディスクコントローラ（ＤＩＳＫＣ）１０９によって読み書きの制御が行われる。
【００１７】
ＲＡＭ１０３は、ＣＰＵ１０１の主メモリ、ワークエリア等として機能する。外部入力コントローラ（ＰＡＮＥＬＣ）１０５は、画像形成装置１００に備えられた各種ボタンあるいはタッチパネル（ＰＡＮＥＬ）１０６等からの指示入力を制御する。ディスプレイコントローラ（ＤＩＳＰＣ）１０７は、例えば、液晶ディスプレイなどで構成される表示モジュール（ＤＩＳＰＬＡＹ）１０８の表示制御を行う。
【００１８】
ネットワークインタフェースカード（ＮＩＣ）１０４は、外部のネットワーク機器あるいはファイルサーバ等との間で双方向にデータをやりとりするネットワークインタフェースである。
【００１９】
印字部（ＰＲＩＮＴＥＲ）１１２は、電子写真方式やインクジェット方式などにより記録紙に印刷するプリントエンジンである。ＰＲＩＮＴＥＲ１１２には、オプションとして給紙カセット（不図示）が複数段装着されており、複数種類（サイズ）の印刷用紙をそれぞれのカセット段に入れておき、印字時にカセットから印刷用紙を給紙することができる。
【００２０】
画像読み取り部（ＳＣＡＮＮＥＲ）１１３は、紙に印字された画像を読み込む機能および構造を有する。多くの場合、ＳＣＡＮＮＥＲ１１３にはオプションとしてオートドキュメントフィーダ（不図示）が装着されており、複数枚の原稿を自動的に読み込むことができる。
【００２１】
図２は、図１の画像形成装置１００のソフトウェア構成を示すブロック図である。
【００２２】
画像形成装置１００上で動作するソフトウェア２００において、オペレーティングシステム（ＯＳ）２０１は、ソフトウェアやハードウェア全体を制御および管理し、多くのアプリケーションから共通して利用される基本ソフトウェアである。このＯＳ２０１上では、例えば、図１に示すＤＩＳＫＣ１０９などのハードウェアを制御するデバイスドライバ２０２が動作している。また、ＯＳ２０１には、Ｓｔｏｒａｇｅ１＿１１０に対してデータを読み書きするためのファイルシステム２０３が存在する。
【００２３】
ファイルシステム２０３は、アプリケーション２０４からファイルの読み出し要求を受け取ると、デバイスドライバ２０２に指示してＤＩＳＫＣ１０９を動作させる。そして、ＤＩＳＫＣ１０９からコマンドが発行され、Ｓｔｏｒａｇｅ１＿１１０からデータが読み出される。同様に、ファイルシステム２０３は、アプリケーション２０４からファイルの書き込み要求を受け取ると、デバイスドライバ２０２に指示してＤＩＳＫＣ１０９を動作させる。そして、ＤＩＳＫＣ１０９がデータを転送し、Ｓｔｏｒａｇｅ１＿１１０へデータを書き込む。
【００２４】
ＯＳ２０１上で動作するアプリケーションとしてはＪＯＢ制御部２０５がある。ＪＯＢ制御部２０５は、画像形成装置１００におけるコピーやプリントなどのジョブの実行を制御するソフトウェアである。また、ＪＯＢ制御部２０５には、ＰＲＩＮＴＥＲ１１２を制御するＰｒｉｎｔ制御２０６や、ＳＣＡＮＮＥＲ１１３を制御するＳｃａｎ制御２０７などの制御アプリケーションが含まれる。
【００２５】
ストレージ管理部２０８は、ＯＳ２０１上で動作し、Ｓｔｏｒａｇｅ１＿１１０等の最適化管理や最適化制御指示を行うアプリケーションである。また、ストレージ管理部２０８は、最適化判断／指示タスク２０９と、最適化実行管理タスク２１０の２つの処理タスクに分かれている。最適化判断／指示タスク２０９は、Ｓｔｏｒａｇｅ１＿１１０等の最適化を行うか否かを判断して最適化の指示を行う処理を行う。最適化実行管理タスク２１０は、実際にＳｔｏｒａｇｅ１＿１１０等の最適化の実行管理を行う。なお、最適化実行管理タスク２１０は、ストレージ管理部２０８の中に組み込まれているが、最適化実行管理の処理をファイルシステムの一機能としてファイルシステム２０３の中に組み込まれていても構わない。
【００２６】
図示のソフトウェアは、前述したとおり、ＲＯＭ１０２あるいはＳｔｏｒａｇｅ１＿１１０（若しくはＳｔｏｒａｇｅ２＿１１１）に記憶されており、ＲＡＭ１０３上に読み出された後、ＣＰＵ１０１で実行される。
【００２７】
次に、ストレージ管理部２０８の最適化判断／指示タスク２０９にて、ジョブ状況を取得して最適化処理を実行するか否かを判断し、最適化の実行／中断指示を行う処理について説明する。
【００２８】
図３は、ストレージ管理部２０８の最適化判断／指示タスク２０９により実行される記憶装置の最適化判断処理の流れを示すフローチャートである。なお、本処理は、上述したようにＣＰＵ１０１がＲＯＭ１０２またはＳｔｏｒａｇｅ１＿１１０から読み出したプログラムを実行することにより実現されるものであるが、便宜上、最適化判断／指示タスク２０９を主体にして説明する。
【００２９】
まず、最適化判断／指示タスク２０９は、ジョブ状況の通知待ちを行う（ステップＳ３０２）。ジョブ状況の通知は、前述したＪＯＢ制御部２０５の中で動作しているＰｒｉｎｔ制御２０６やＳｃａｎ制御２０７から逐次通知される。例えば、ＰＲＩＮＴＥＲ１１２にてキャリブレーション（画像調整処理）が開始された場合、ＰＲＩＮＴＥＲ１１２からシステムバス１１５を通じてＲＡＭ１０３にキャリブレーション開始のコマンドデータが記録される。そして、Ｐｒｉｎｔ制御２０６がそのコマンドデータを受信し、キャリブレーションの実行が開始されたことを認識する。ＪＯＢ制御部２０５から通知されるジョブ状況の詳細内容は、ＲＡＭ１０３にジョブ状況テーブル４００として書き込まれる。ジョブ状況テーブル４００の一例を示す図４（ａ）に示す。
【００３０】
図４（ａ）において、ジョブ状況テーブル４００は、ジョブ番号（ＪｏｂＮｏ）４０１、ジョブタイプ（ＪｏｂＴｙｐｅ）４０２、ジョブステータス（ＪｏｂＳｔａｔｕｓ）４０３、詳細ステータス１（ＤｅｔａｉｌＳｔａｔｕｓ−１）４０４、詳細ステータス２（ＤｅｔａｉｌＳｔａｔｕｓ−２）４０５から構成される。
【００３１】
ジョブ番号４０１はジョブの識別番号であり、ジョブが発生するたびにユニークな値が割り当てられ、ジョブの識別に用いられる。ジョブタイプ４０２は、ジョブの種類を表す情報であり、例えばプリントジョブであれば、“ＰｒｉｎｔＪｏｂ”、ＦＡＸなどの送信するセンドジョブであれば“ＳｅｎｄＪｏｂ”が格納される。
【００３２】
ジョブステータス４０３は、ジョブの実行状況を表す情報であり、例えばプリント中であれば“Ｐｒｉｎｔｉｎｇ”、送信中であれば“Ｆｏｒｗａｒｄｉｎｇ”が格納される。
【００３３】
詳細ステータス１＿４０４は、詳細なジョブ状況を表す情報が格納される。例えば、プリントジョブで厚紙などに印刷するために通常の半分の速度でプリントを実行中の場合には“ＨａｌｆＳｐｅｅｄＰｒｉｎｔｉｎｇ”が格納される。また、センドジョブでＦＡＸを送信中の場合には、“Ｆａｘ”が格納される。詳細なジョブ状況が複数ある場合には、詳細ステータス２＿４０５に追加で情報が格納される。
【００３４】
ＪＯＢ制御部２０５は、Ｐｒｉｎｔ制御２０６やＳｃａｎ制御２０７が実行するジョブの状況が変化するたびに、ＲＡＭ１０３のジョブ状況テーブル４００への書き込みや更新を行う。これにより、ジョブの状況が逐次ジョブ状況テーブル４００に反映されるようになっている。
【００３５】
図３に戻り、最適化判断／指示タスク２０９は、ジョブ状況の通知を受けたか判定し（ステップＳ３０３）、ジョブ状況の通知を受けてない場合には、ステップＳ３０２に戻り、ジョブ状況の通知待ちを行う。一方、ジョブ状況の通知を受けた場合、最適化判断／指示タスク２０９は、ジョブ状況テーブル４００を参照する（ステップＳ３０４）。
【００３６】
次に、最適化判断／指示タスク２０９は、ＲＯＭ１０２に書き込まれている最適化実行許可パターンテーブル５００を参照する（ステップＳ３０５）。最適化実行許可パターンテーブルの一例を図４（ｂ）に示す。
【００３７】
図４（ｂ）において、最適化実行許可パターンテーブル５００は、ジョブタイプ条件（ＪｏｂＴｙｐｅ  ｃｏｎｄｉｔｉｏｎ）５０１、ジョブステータス条件（ＪｏｂＳｔａｔｕｓ  ｃｏｎｄｉｔｉｏｎ）５０２、詳細ステータス条件（ＤｅｔａｉｌＳｔａｔｕｓ  ｃｏｎｄｉｔｉｏｎ）５０３から構成される。
【００３８】
ジョブタイプ条件５０１には、最適化を実行許可するジョブ種類の条件を示す情報が格納される。ジョブステータス条件５０２には、最適化を実行許可するジョブ状況の条件を示す情報が格納される。詳細ステータス条件５０３には、最適化を実行許可するジョブ状況の詳細条件を示す情報が格納される。
【００３９】
パターン５０４は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”、ジョブステータス条件５０２が“Ｐｒｉｎｔｉｎｇ”、詳細ステータス条件５０３が“ＨａｌｆＳｐｅｅｄＰｒｉｎｔｉｎｇ”の場合に、記憶装置の最適化を実行許可するものである。なお、詳細ステータス条件５０３が“−”の場合には、ジョブ状況の詳細条件は無し（詳細状況は見ない）という意味である。
【００４０】
図４（ａ）に示すジョブ状況テーブル４００でジョブ番号４０１が“１”の実行ジョブは、ジョブタイプ４０２が“ＰｒｉｎｔＪｏｂ”であり、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”という条件にまず一致する。更に、ジョブステータス４０３が“Ｐｒｉｎｔｉｎｇ”であり，ジョブステータス条件５０２が“Ｐｒｉｎｔｉｎｇ”という条件に一致する。更に、詳細ステータス１＿４０４が“ＨａｌｆＳｐｅｅｄＰｒｉｎｔｉｎｇ”（減速プリント中）であり、詳細ステータス条件５０３が“ＨａｌｆＳｐｅｅｄＰｒｉｎｔｉｎｇ”という条件に一致する。よって、ジョブ番号４０１が“１”の実行ジョブは、最適化実行を許可するパターンの１つに条件がすべて一致するため、最適化を実行すると判断する（図３のステップＳ３０６でＹＥＳ）。
【００４１】
一方、パターン５０５は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”でジョブステータス４０３が“Ｃａｌｉｂｒａｔｉｎｇ”（キャリブレーション中）である。これは、ＰＲＩＮＴＥＲ１１２がキャリブレーション中の場合に最適化の実行を許可する、というパターンである。キャリブレーションとは、画像の位置ずれや色の濃度を定期的に調整する機能のことであり、この調整処理を実行中の状態をキャリブレーション中という。
【００４２】
また、パターン５０６は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”でジョブステータス４０３が“Ｗａｉｔｉｎｇ  ｆｏｒ＿Ｐａｐｅｒ”（印刷用紙補給待ち）である。これは、ＰＲＩＮＴＥＲ１１２が印刷用紙を補給されるのを待っている状態の場合に最適化の実行を許可する、というパターンである。印刷用紙補給待ちとは、例えば、Ａ４用紙を給紙して印刷中にＡ４用紙が切れた状態で、Ａ４用紙を入れるカセットにＡ４用紙が補給されるまでの状態をいう。
【００４３】
また、パターン５０７は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”でジョブステータス４０３が“Ｗａｉｔｉｎｇ  ｆｏｒ  Ｔｏｎｅｒ”（トナー補給待ち）である。これは、ＰＲＩＮＴＥＲ１１２がトナーを補給されるのを待っている状態の場合に最適化の実行を許可する、というパターンである。
【００４４】
また、パターン５０８は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”でジョブステータス４０３が“Ｗａｉｔｉｎｇ  ｆｏｒ  Ｊａｍ  ｃａｎｃｅｌ”（ジャム解除待ち）である。これは、ＰＲＩＮＴＥＲ１１２がジャムを解消されるのを待っている状態の場合に最適化の実行を許可する、というパターンである。ジャムとは、印刷用紙がＰＲＩＮＴＥＲ１１２の中で詰まってしまった状態であり、詰まった用紙を取り除き、印字可能な状態になるのを待っている状態をジャム解除待ちという。
【００４５】
また、パターン５０９は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”でジョブステータス４０３が“Ｗａｉｔｉｎｇ  ｆｏｒ  Ｃａｓｓｅｔｔｅ  ｃｈａｎｇｅ”（給紙カセット段切り替え中）である。これは、ＰＲＩＮＴＥＲ１１２が給紙カセット段の切り替え中の場合に最適化の実行を許可する、というパターンである。給紙カセット段切り替え中とは、例えば、Ａ４サイズの用紙がセットされているカセットからＡ３サイズの用紙がセットされている給紙カセットに給紙段を切り替えるまでの切り替え処理中のことである。
【００４６】
また、パターン５１０は、ジョブタイプ条件５０１が“ＰｒｉｎｔＪｏｂ”で、ジョブステータス４０３が“Ｆｉｎｉｓｈｉｎｇ”（ジョブ終了中）で、詳細ステータス条件５０３が“Ｎｏ  Ｎｅｘｔ  Ｊｏｂ”である。これは、ＰＲＩＮＴＥＲ１１２がジョブ終了中で、次のジョブが存在しない場合に最適化の実行を許可する、というパターンである。
【００４７】
最後に、パターン５１１は、ジョブタイプ条件５０１が“ＳｅｎｄＪｏｂ”でジョブステータス４０３が“Ｆｏｒｗａｒｄｉｎｇ”（データ送信中）である。これは、ＳＣＡＮＮＥＲ１１３が画像を読み取った後に、読み取った画像データを送信中、というパターンである。画像データの送信中の例としては、ＦＡＸでの画像送信やＥ−ｍａｉｌによる画像送信などが該当する。
【００４８】
このようにして、ジョブ状況テーブル４００に示すジョブ状況が、最適化実行許可パターンテーブル５００に記載された条件のいずれかに一致するかで最適化を実行するか否かを判断することができる。
【００４９】
図３に戻り、最適化判断／指示タスク２０９は、ジョブ状況テーブル４００に記述されたジョブ状況が最適化実行許可パターンテーブル５００のパターンのいずれかに一致するか否かで最適化を実行するか否かを判定する（ステップＳ３０６）。この判定の結果、最適化実行許可パターンテーブル５００のパターンのいずれかに一致した場合、最適化判断／指示タスク２０９は、最適化を実行すると判断してステップＳ３０７へ進む。
【００５０】
ステップＳ３０７では、既に最適化処理が実行中の場合もあるため、最適化判断／指示タスク２０９は、ＲＡＭ１０３に保存されている最適化実行状況テーブル６００を参照し、最適化処理の実行状況を確認する。最適化実行状況テーブルの一例を図４（ｃ）に示す。
【００５１】
図４（ｃ）において、最適化実行状況テーブル６００は、メインステータス（ＭａｉｎＳｔａｔｕｓ）６０１、エントリ番号（ＥｎｔｒｙＮｏ．）６０２、サブステータス（ＳｕｂＳｔａｔｕｓ）６０３、アドレス（Ａｄｄｒｅｓｓ（ＬＢＡ））６０４、サイズ（Ｓｉｓｅ（ｓｅｃｔｏｒｓ））６０５で構成される。
【００５２】
メインステータス６０１は、最適化のメイン状況を示す情報が格納される。メインステータス６０１が“Ｅｃｅｃｕｔｉｎｇ”であれば最適化を実行中であり、“Ｓｕｓｐｅｎｄ”であれば中断中であり、“Ｉｄｌｅ”であれば未実行（アイドル）状態である。
【００５３】
エントリ番号６０２は、トリムを実行する対象領域のエントリ番号であり、ファイルシステム２０３によって未使用領域（トリム対象領域）と記録された領域情報が最適化実行管理タスク２１０の処理により、本テーブルに連番で登録される。
【００５４】
サブステータス６０３は、そのエントリ番号で登録された領域に対するトリム実行状況を示す情報が格納される。“Ｆｉｎｉｓｈｅｄ”であれば既にトリム実行完了済みを示し、“Ｅｘｅｃｕｔｉｎｇ”であれば現在トリムを実行中であることを示す。“Ｗａｉｔｉｎｇ”であれば実行待ち状態であることを示す。
【００５５】
アドレス６０４およびサイズ６０５は、そのエントリ番号で登録されたトリム対象領域の開始アドレスとサイズが格納される。例えば、エントリ番号６０２が“１”の場合、開始アドレス（記憶装置のロジカルブロックアドレス）は“３１２５８１０”であり、サイズ（セクター数）は“１２８”である。つまり、ＬＢＡ：３１２５８１０のアドレスから１２８セクター分の領域がトリム対象の領域であることを示している。
【００５６】
図３に戻り、最適化判断／指示タスク２０９は、最適化実行状況テーブル６００のメインステータス６０１を参照して最適化処理が実行中かを判定する（ステップＳ３０８）。その結果、実行中でなければ、最適化処理の実行を指示して（ステップＳ３０９）、ステップＳ３０２に戻る。一方、ステップＳ３０８で最適化を実行中であると判定した場合は、そのままステップＳ３０２に戻る。
【００５７】
ステップＳ３０６の判定結果から、最適化実行許可パターンテーブル５００のパターンのいずれにも一致しなかった場合、最適化判断／指示タスク２０９は、最適化を実行しないと判断してステップＳ３１１へ進む。
【００５８】
ステップＳ３１１では、既に最適化処理が実行中の場合もあるため、最適化判断／指示タスク２０９は、ＲＡＭ１０３に保存されている最適化実行状況テーブル６００を参照し、最適化処理の実行状況を確認する。
【００５９】
次に、最適化判断／指示タスク２０９は、最適化実行状況テーブル６００のメインステータス６０１を参照して最適化処理が実行中かを判定し（ステップＳ３１２）、実行中であれば、最適化処理の中断を指示する（ステップＳ３１３）。一方、実行中でなければ、そのままステップＳ３０２に戻る。
【００６０】
このようにして、ジョブの実行状況を取得し、不揮発性半導体記憶装置の最適化を実行するか否かを逐次判断し、ジョブ処理中であっても実行可能なタイミングで最適化実行指示を行い、該記憶装置のパフォーマンス低下を抑制する。
【００６１】
次に、図３の最適化判断フローにて最適化の実行指示・中断指示を行った後、最適化実行管理タスク２１０上で動作する最適化の実行・中断を行う処理について図５を用いて説明する。
【００６２】
図５は、ストレージ管理部２０８の最適化実行管理タスク２１０により実行される記憶装置の最適化実行処理の流れを示すフローチャートである。なお、本処理は、上述したようにＣＰＵ１０１がＲＯＭ１０２またはＳｔｏｒａｇｅ１＿１１０から読み出したプログラムを実行することにより実現されるものであるが、便宜上、最適化実行管理タスク２１０を主体にして説明する。
【００６３】
まず、最適化実行管理タスク２１０は、ファイルシステム２０３に記録されている不図示のトリム対象領域の情報（アドレス、サイズ）を取得する（ステップＳ７０１）。
【００６４】
次に、最適化実行管理タスク２１０は、最適化実行状況テーブル６００を参照し、ファイルシステム２０３から取得したトリム対象領域の情報（アドレス、サイズ）と比較して差分がある場合にはエントリ追加や削除の更新を行う（ステップＳ７０２）。エントリ追加の場合には、エントリ番号６０２、アドレス６０４、サイズ６０５にファイルシステム２０３から取得した追加の領域情報が追加される。エントリ新規追加の場合、サブステータス６０３に“Ｗａｉｔｉｎｇ”（実行待ち）が登録される。エントリ削除の場合には、該当するエントリ番号６０２の情報が全て削除される。
【００６５】
ステップＳ７０２で最適化実行状況テーブル６００のテーブル更新が完了すると、最適化実行管理タスク２１０は、最適化未実行のエントリがあるか判定する（ステップＳ７０３）。最適化未実行のエントリの判定方法は、各エントリのサブステータス６０３を確認し、“Ｗａｉｔｉｎｇ”（実行待ち）のエントリがあるか否かで行われる。その結果、未実行のエントリがあった場合、最適化実行管理タスク２１０は、そのエントリが示すトリム対象領域に対してトリムコマンドを実行する（ステップＳ７０４）。具体的には、最適化実行管理タスク２１０は、トリム対象領域の情報（アドレス６０４、サイズ６０５の情報）を付加してトリムの実行をデバイスドライバ２０２に命令する。デバイスドライバ２０２は、ＤＩＳＫＣ１０９にトリムコマンドの発行設定を行い、ＤＩＳＫＣ１０９からトリムコマンドが発行され、Ｓｔｏｒａｇｅ１＿１１０でトリム処理が実行される。
【００６６】
トリムコマンドの実行開始後、最適化実行管理タスク２１０は、最適化実行状況テーブル６００の更新を行う（ステップＳ７０５）。具体的には、最適化実行管理タスク２１０は、メインステータス６０１を“Ｅｃｅｃｕｔｉｎｇ”に書き換え、最適化を実行開始したエントリのサブステータス６０３を“Ｅｘｅｃｕｔｉｎｇ”に書き換える。
【００６７】
次に、最適化実行管理タスク２１０は、図３のステップ３１３で説明したように、最適化判断／指示タスク２０９から中断指示があるか判定する（ステップＳ７０６）。中断指示がなかった場合は、ステップＳ７０３に戻り、未実行エントリに対するトリム実行を継続する。一方、中断指示があった場合、最適化実行管理タスク２１０は、最適化実行状況テーブル６００の更新を行う（ステップＳ７０７）。具体的には、最適化実行管理タスク２１０は、メインステータス６０１を“Ｓｕｓｐｅｎｄ”に書き換え、後続のエントリに対してトリム処理は実施せずに、本処理を終了する。
【００６８】
このように、最適化実行管理タスク２１０は、最適化判断／指示タスク２０９の指示を受けて不揮発性半導体記憶装置に対する最適化の実行や中断を行い、不揮発性半導体記憶装置の読み書き性能の低下を改善する。
【００６９】
以上説明したように、取得したジョブ状況から情報処理装置が所定のジョブ状況にあるか否かを判断し、所定のジョブ状況にある場合には記憶装置の最適化を実行する。これにより、記憶装置を備える情報処理装置でジョブが実行中であっても情報処理装置の生産性を落とすことなく記憶装置の最適化処理を実行することができる。
【００７０】
なお、上述した実施形態では、本発明を画像形成装置に適用した場合について説明したが、画像形成装置以外の装置、例えば情報処理装置等であってもかまわない。
【００７１】
また、本発明は、以下の処理を実行することによっても実現される。即ち、上述した実施形態の機能を実現するソフトウェア（プログラム）を、ネットワーク又は各種記憶媒体を介してシステム或いは装置に供給し、そのシステム或いは装置のコンピュータ（またはＣＰＵやＭＰＵ等）がプログラムを読み出して実行する処理である。
【符号の説明】
【００７２】
１００  画像形成装置
１１０  Ｓｔｏｒａｇｅ１
２０３  ファイルシステム
２０８  ストレージ管理部
２０９  最適化判断／指示タスク
２１０  最適化実行管理タスク
【図１】
2015141681.tif 000003
【図２】
2015141681.tif 000004
【図３】
2015141681.tif 000005
【図４】
2015141681.tif 000006
【図５】
2015141681.tif 000007